@strapi/content-type-builder 5.25.0 → 5.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AIChat/Chat.js +435 -0
- package/dist/admin/components/AIChat/Chat.js.map +1 -0
- package/dist/admin/components/AIChat/Chat.mjs +433 -0
- package/dist/admin/components/AIChat/Chat.mjs.map +1 -0
- package/dist/admin/components/AIChat/FeedbackModal.js +237 -0
- package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -0
- package/dist/admin/components/AIChat/FeedbackModal.mjs +233 -0
- package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -0
- package/dist/admin/components/AIChat/UploadCodeModal.js +427 -0
- package/dist/admin/components/AIChat/UploadCodeModal.js.map +1 -0
- package/dist/admin/components/AIChat/UploadCodeModal.mjs +423 -0
- package/dist/admin/components/AIChat/UploadCodeModal.mjs.map +1 -0
- package/dist/admin/components/AIChat/UploadFigmaModal.js +377 -0
- package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -0
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs +373 -0
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Alert.js +46 -0
- package/dist/admin/components/AIChat/components/Alert.js.map +1 -0
- package/dist/admin/components/AIChat/components/Alert.mjs +44 -0
- package/dist/admin/components/AIChat/components/Alert.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/AnimatedBox.js +34 -0
- package/dist/admin/components/AIChat/components/AnimatedBox.js.map +1 -0
- package/dist/admin/components/AIChat/components/AnimatedBox.mjs +32 -0
- package/dist/admin/components/AIChat/components/AnimatedBox.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js +92 -0
- package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js.map +1 -0
- package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs +90 -0
- package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js +100 -0
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js.map +1 -0
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs +97 -0
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Base64Image.js +127 -0
- package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -0
- package/dist/admin/components/AIChat/components/Base64Image.mjs +125 -0
- package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Collapsible.js +71 -0
- package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -0
- package/dist/admin/components/AIChat/components/Collapsible.mjs +66 -0
- package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Dropzone.js +172 -0
- package/dist/admin/components/AIChat/components/Dropzone.js.map +1 -0
- package/dist/admin/components/AIChat/components/Dropzone.mjs +167 -0
- package/dist/admin/components/AIChat/components/Dropzone.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/FloatingPanel.js +166 -0
- package/dist/admin/components/AIChat/components/FloatingPanel.js.map +1 -0
- package/dist/admin/components/AIChat/components/FloatingPanel.mjs +163 -0
- package/dist/admin/components/AIChat/components/FloatingPanel.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/FullScreenImage.js +190 -0
- package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -0
- package/dist/admin/components/AIChat/components/FullScreenImage.mjs +187 -0
- package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/ImagePreview.js +87 -0
- package/dist/admin/components/AIChat/components/ImagePreview.js.map +1 -0
- package/dist/admin/components/AIChat/components/ImagePreview.mjs +85 -0
- package/dist/admin/components/AIChat/components/ImagePreview.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Input.js +126 -0
- package/dist/admin/components/AIChat/components/Input.js.map +1 -0
- package/dist/admin/components/AIChat/components/Input.mjs +121 -0
- package/dist/admin/components/AIChat/components/Input.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Messages/Marker.js +138 -0
- package/dist/admin/components/AIChat/components/Messages/Marker.js.map +1 -0
- package/dist/admin/components/AIChat/components/Messages/Marker.mjs +136 -0
- package/dist/admin/components/AIChat/components/Messages/Marker.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/Messages/Message.js +214 -0
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -0
- package/dist/admin/components/AIChat/components/Messages/Message.mjs +212 -0
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/ResizableTextArea.js +78 -0
- package/dist/admin/components/AIChat/components/ResizableTextArea.js.map +1 -0
- package/dist/admin/components/AIChat/components/ResizableTextArea.mjs +76 -0
- package/dist/admin/components/AIChat/components/ResizableTextArea.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/SimpleMenu.js +60 -0
- package/dist/admin/components/AIChat/components/SimpleMenu.js.map +1 -0
- package/dist/admin/components/AIChat/components/SimpleMenu.mjs +35 -0
- package/dist/admin/components/AIChat/components/SimpleMenu.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/StepModal.js +175 -0
- package/dist/admin/components/AIChat/components/StepModal.js.map +1 -0
- package/dist/admin/components/AIChat/components/StepModal.mjs +171 -0
- package/dist/admin/components/AIChat/components/StepModal.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/animations.js +67 -0
- package/dist/admin/components/AIChat/components/animations.js.map +1 -0
- package/dist/admin/components/AIChat/components/animations.mjs +65 -0
- package/dist/admin/components/AIChat/components/animations.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/icons/FigmaIcon.js +50 -0
- package/dist/admin/components/AIChat/components/icons/FigmaIcon.js.map +1 -0
- package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs +48 -0
- package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs.map +1 -0
- package/dist/admin/components/AIChat/components/icons/StopIcon.js +25 -0
- package/dist/admin/components/AIChat/components/icons/StopIcon.js.map +1 -0
- package/dist/admin/components/AIChat/components/icons/StopIcon.mjs +23 -0
- package/dist/admin/components/AIChat/components/icons/StopIcon.mjs.map +1 -0
- package/dist/admin/components/AIChat/hooks/useAIFetch.js +107 -0
- package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs +96 -0
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -0
- package/dist/admin/components/AIChat/hooks/useAttachments.js +152 -0
- package/dist/admin/components/AIChat/hooks/useAttachments.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/useAttachments.mjs +150 -0
- package/dist/admin/components/AIChat/hooks/useAttachments.mjs.map +1 -0
- package/dist/admin/components/AIChat/hooks/useChatTitle.js +47 -0
- package/dist/admin/components/AIChat/hooks/useChatTitle.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/useChatTitle.mjs +45 -0
- package/dist/admin/components/AIChat/hooks/useChatTitle.mjs.map +1 -0
- package/dist/admin/components/AIChat/hooks/useCodeUpload.js +212 -0
- package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs +207 -0
- package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs.map +1 -0
- package/dist/admin/components/AIChat/hooks/useFeedback.js +76 -0
- package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/useFeedback.mjs +74 -0
- package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -0
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.js +206 -0
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs +200 -0
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs.map +1 -0
- package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js +115 -0
- package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs +113 -0
- package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs.map +1 -0
- package/dist/admin/components/AIChat/hooks/useTranslations.js +19 -0
- package/dist/admin/components/AIChat/hooks/useTranslations.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/useTranslations.mjs +17 -0
- package/dist/admin/components/AIChat/hooks/useTranslations.mjs.map +1 -0
- package/dist/admin/components/AIChat/lib/aiClient.js +168 -0
- package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -0
- package/dist/admin/components/AIChat/lib/aiClient.mjs +161 -0
- package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -0
- package/dist/admin/components/AIChat/lib/constants.js +16 -0
- package/dist/admin/components/AIChat/lib/constants.js.map +1 -0
- package/dist/admin/components/AIChat/lib/constants.mjs +10 -0
- package/dist/admin/components/AIChat/lib/constants.mjs.map +1 -0
- package/dist/admin/components/AIChat/lib/misc.js +8 -0
- package/dist/admin/components/AIChat/lib/misc.js.map +1 -0
- package/dist/admin/components/AIChat/lib/misc.mjs +6 -0
- package/dist/admin/components/AIChat/lib/misc.mjs.map +1 -0
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +46 -0
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -0
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +44 -0
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -0
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +151 -0
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -0
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +148 -0
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -0
- package/dist/admin/components/AIChat/providers/ChatProvider.js +191 -0
- package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -0
- package/dist/admin/components/AIChat/providers/ChatProvider.mjs +187 -0
- package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -0
- package/dist/admin/components/AIChat/providers/SchemaProvider.js +90 -0
- package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -0
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +88 -0
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -0
- package/dist/admin/components/ComponentList.js +1 -0
- package/dist/admin/components/ComponentList.js.map +1 -1
- package/dist/admin/components/ComponentList.mjs +1 -0
- package/dist/admin/components/ComponentList.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +165 -161
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +165 -161
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +48 -6
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs +48 -6
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
- package/dist/admin/pages/App/index.js +60 -29
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs +62 -31
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.js +75 -9
- package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.mjs +77 -11
- package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
- package/dist/admin/src/components/AIChat/Chat.d.ts +2 -0
- package/dist/admin/src/components/AIChat/FeedbackModal.d.ts +13 -0
- package/dist/admin/src/components/AIChat/UploadCodeModal.d.ts +12 -0
- package/dist/admin/src/components/AIChat/UploadFigmaModal.d.ts +12 -0
- package/dist/admin/src/components/AIChat/components/Alert.d.ts +6 -0
- package/dist/admin/src/components/AIChat/components/AnimatedBox.d.ts +13 -0
- package/dist/admin/src/components/AIChat/components/Attachments/AttachmentPreview.d.ts +9 -0
- package/dist/admin/src/components/AIChat/components/Attachments/components/Attachment.d.ts +27 -0
- package/dist/admin/src/components/AIChat/components/Base64Image.d.ts +9 -0
- package/dist/admin/src/components/AIChat/components/Collapsible.d.ts +18 -0
- package/dist/admin/src/components/AIChat/components/Dropzone.d.ts +35 -0
- package/dist/admin/src/components/AIChat/components/FloatingPanel.d.ts +34 -0
- package/dist/admin/src/components/AIChat/components/FullScreenImage.d.ts +20 -0
- package/dist/admin/src/components/AIChat/components/ImagePreview.d.ts +8 -0
- package/dist/admin/src/components/AIChat/components/ImagePreviewGroup.d.ts +7 -0
- package/dist/admin/src/components/AIChat/components/Input.d.ts +43 -0
- package/dist/admin/src/components/AIChat/components/Messages/Marker.d.ts +2 -0
- package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +5 -0
- package/dist/admin/src/components/AIChat/components/ResizableTextArea.d.ts +9 -0
- package/dist/admin/src/components/AIChat/components/SimpleMenu.d.ts +32 -0
- package/dist/admin/src/components/AIChat/components/StepModal.d.ts +37 -0
- package/dist/admin/src/components/AIChat/components/animations.d.ts +8 -0
- package/dist/admin/src/components/AIChat/components/icons/FigmaIcon.d.ts +5 -0
- package/dist/admin/src/components/AIChat/components/icons/StopIcon.d.ts +5 -0
- package/dist/admin/src/components/AIChat/hooks/useAIFetch.d.ts +147 -0
- package/dist/admin/src/components/AIChat/hooks/useAttachments.d.ts +8 -0
- package/dist/admin/src/components/AIChat/hooks/useChatTitle.d.ts +13 -0
- package/dist/admin/src/components/AIChat/hooks/useCodeUpload.d.ts +31 -0
- package/dist/admin/src/components/AIChat/hooks/useFeedback.d.ts +7 -0
- package/dist/admin/src/components/AIChat/hooks/useFigmaUpload.d.ts +61 -0
- package/dist/admin/src/components/AIChat/hooks/useLastSeenSchemas.d.ts +10 -0
- package/dist/admin/src/components/AIChat/hooks/useTranslations.d.ts +3 -0
- package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +32 -0
- package/dist/admin/src/components/AIChat/lib/constants.d.ts +12 -0
- package/dist/admin/src/components/AIChat/lib/fileToAttachment.d.ts +2 -0
- package/dist/admin/src/components/AIChat/lib/misc.d.ts +1 -0
- package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +3 -0
- package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +16 -0
- package/dist/admin/src/components/AIChat/lib/types/annotations.d.ts +19 -0
- package/dist/admin/src/components/AIChat/lib/types/attachments.d.ts +15 -0
- package/dist/admin/src/components/AIChat/lib/types/feedback.d.ts +1 -0
- package/dist/admin/src/components/AIChat/lib/types/messages.d.ts +26 -0
- package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +20 -0
- package/dist/admin/src/components/AIChat/providers/ChatProvider.d.ts +30 -0
- package/dist/admin/src/components/AIChat/providers/SchemaProvider.d.ts +10 -0
- package/dist/admin/src/components/ComponentList.d.ts +1 -1
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +1 -1
- package/dist/admin/translations/ar.json.js +187 -2
- package/dist/admin/translations/ar.json.js.map +1 -1
- package/dist/admin/translations/ar.json.mjs +187 -3
- package/dist/admin/translations/ar.json.mjs.map +1 -1
- package/dist/admin/translations/de.json.js +42 -7
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +42 -7
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +53 -2
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +53 -2
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +37 -15
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +37 -15
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +165 -3
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +165 -4
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/translations/id.json.js +93 -23
- package/dist/admin/translations/id.json.js.map +1 -1
- package/dist/admin/translations/id.json.mjs +93 -23
- package/dist/admin/translations/id.json.mjs.map +1 -1
- package/dist/admin/translations/it.json.js +75 -6
- package/dist/admin/translations/it.json.js.map +1 -1
- package/dist/admin/translations/it.json.mjs +75 -6
- package/dist/admin/translations/it.json.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +191 -5
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +191 -6
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/admin/translations/ko.json.js +70 -16
- package/dist/admin/translations/ko.json.js.map +1 -1
- package/dist/admin/translations/ko.json.mjs +70 -16
- package/dist/admin/translations/ko.json.mjs.map +1 -1
- package/dist/admin/translations/ms.json.js +104 -31
- package/dist/admin/translations/ms.json.js.map +1 -1
- package/dist/admin/translations/ms.json.mjs +104 -31
- package/dist/admin/translations/ms.json.mjs.map +1 -1
- package/dist/admin/translations/nl.json.js +95 -15
- package/dist/admin/translations/nl.json.js.map +1 -1
- package/dist/admin/translations/nl.json.mjs +95 -15
- package/dist/admin/translations/nl.json.mjs.map +1 -1
- package/dist/admin/translations/pl.json.js +55 -11
- package/dist/admin/translations/pl.json.js.map +1 -1
- package/dist/admin/translations/pl.json.mjs +55 -11
- package/dist/admin/translations/pl.json.mjs.map +1 -1
- package/dist/admin/translations/pt-BR.json.js +54 -10
- package/dist/admin/translations/pt-BR.json.js.map +1 -1
- package/dist/admin/translations/pt-BR.json.mjs +54 -10
- package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
- package/dist/admin/translations/pt.json.js +187 -2
- package/dist/admin/translations/pt.json.js.map +1 -1
- package/dist/admin/translations/pt.json.mjs +187 -3
- package/dist/admin/translations/pt.json.mjs.map +1 -1
- package/dist/admin/translations/ru.json.js +26 -1
- package/dist/admin/translations/ru.json.js.map +1 -1
- package/dist/admin/translations/ru.json.mjs +26 -1
- package/dist/admin/translations/ru.json.mjs.map +1 -1
- package/dist/admin/translations/sk.json.js +21 -1
- package/dist/admin/translations/sk.json.js.map +1 -1
- package/dist/admin/translations/sk.json.mjs +21 -1
- package/dist/admin/translations/sk.json.mjs.map +1 -1
- package/dist/admin/translations/sv.json.js +21 -1
- package/dist/admin/translations/sv.json.js.map +1 -1
- package/dist/admin/translations/sv.json.mjs +21 -1
- package/dist/admin/translations/sv.json.mjs.map +1 -1
- package/dist/admin/translations/th.json.js +21 -1
- package/dist/admin/translations/th.json.js.map +1 -1
- package/dist/admin/translations/th.json.mjs +21 -1
- package/dist/admin/translations/th.json.mjs.map +1 -1
- package/dist/admin/translations/tr.json.js +21 -1
- package/dist/admin/translations/tr.json.js.map +1 -1
- package/dist/admin/translations/tr.json.mjs +21 -1
- package/dist/admin/translations/tr.json.mjs.map +1 -1
- package/dist/admin/translations/uk.json.js +21 -2
- package/dist/admin/translations/uk.json.js.map +1 -1
- package/dist/admin/translations/uk.json.mjs +21 -2
- package/dist/admin/translations/uk.json.mjs.map +1 -1
- package/dist/admin/translations/zh-Hans.json.js +222 -133
- package/dist/admin/translations/zh-Hans.json.js.map +1 -1
- package/dist/admin/translations/zh-Hans.json.mjs +222 -133
- package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
- package/dist/admin/translations/zh.json.js +21 -1
- package/dist/admin/translations/zh.json.js.map +1 -1
- package/dist/admin/translations/zh.json.mjs +21 -1
- package/dist/admin/translations/zh.json.mjs.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +2 -0
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/register.js +98 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/register.mjs +96 -0
- package/dist/server/register.mjs.map +1 -0
- package/dist/server/src/controllers/ai/auth.d.ts +1 -0
- package/dist/server/src/controllers/ai/auth.d.ts.map +1 -0
- package/dist/server/src/controllers/ai/index.d.ts +1 -0
- package/dist/server/src/controllers/ai/index.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts +11 -0
- package/dist/server/src/register.d.ts.map +1 -0
- package/package.json +12 -5
- package/dist/admin/components/DataManager/utils/formatSchemas.js +0 -21
- package/dist/admin/components/DataManager/utils/formatSchemas.js.map +0 -1
- package/dist/admin/components/DataManager/utils/formatSchemas.mjs +0 -18
- package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +0 -1
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useContext, useState, createContext, useRef } from 'react';
|
|
3
|
+
import { Flex, Typography, Box } from '@strapi/design-system';
|
|
4
|
+
import { FileZip, Folder } from '@strapi/icons';
|
|
5
|
+
import { AttachmentPreview } from './components/Attachments/AttachmentPreview.mjs';
|
|
6
|
+
import { StepModal, useStepModal } from './components/StepModal.mjs';
|
|
7
|
+
import { useAttachments } from './hooks/useAttachments.mjs';
|
|
8
|
+
import { useCodeUpload } from './hooks/useCodeUpload.mjs';
|
|
9
|
+
import { useTranslations } from './hooks/useTranslations.mjs';
|
|
10
|
+
import { STRAPI_CODE_MIME_TYPE } from './lib/constants.mjs';
|
|
11
|
+
import { generateId } from './lib/misc.mjs';
|
|
12
|
+
import { useStrapiChat } from './providers/ChatProvider.mjs';
|
|
13
|
+
|
|
14
|
+
const UploadProjectContext = /*#__PURE__*/ createContext({
|
|
15
|
+
isCodeUploadOpen: false,
|
|
16
|
+
submitOnFinish: false,
|
|
17
|
+
openCodeUpload: ()=>{},
|
|
18
|
+
closeCodeUpload: ()=>{}
|
|
19
|
+
});
|
|
20
|
+
const useUploadProjectToChat = ()=>useContext(UploadProjectContext);
|
|
21
|
+
const UploadProjectToChatProvider = ({ children })=>{
|
|
22
|
+
const [isCodeUploadOpen, setIsCodeUploadOpen] = useState(false);
|
|
23
|
+
const [submitOnFinish, setSubmitOnFinish] = useState(false);
|
|
24
|
+
const openCodeUpload = (submitOnFinish)=>{
|
|
25
|
+
setIsCodeUploadOpen(true);
|
|
26
|
+
setSubmitOnFinish(submitOnFinish ?? false);
|
|
27
|
+
};
|
|
28
|
+
const closeCodeUpload = ()=>setIsCodeUploadOpen(false);
|
|
29
|
+
return /*#__PURE__*/ jsxs(UploadProjectContext.Provider, {
|
|
30
|
+
value: {
|
|
31
|
+
isCodeUploadOpen,
|
|
32
|
+
submitOnFinish,
|
|
33
|
+
openCodeUpload,
|
|
34
|
+
closeCodeUpload
|
|
35
|
+
},
|
|
36
|
+
children: [
|
|
37
|
+
isCodeUploadOpen && /*#__PURE__*/ jsx(UploadCodeModal, {}),
|
|
38
|
+
children
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
const DropZone = ({ importType, onAddFiles, error })=>{
|
|
43
|
+
const [dragOver, setDragOver] = useState(false);
|
|
44
|
+
const inputRef = useRef(null);
|
|
45
|
+
const { t } = useTranslations();
|
|
46
|
+
const handleDragOver = (event)=>{
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
};
|
|
49
|
+
const handleDragEnter = (event)=>{
|
|
50
|
+
event.preventDefault();
|
|
51
|
+
setDragOver(true);
|
|
52
|
+
};
|
|
53
|
+
const handleDragLeave = ()=>setDragOver(false);
|
|
54
|
+
const handleClick = (e)=>{
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
inputRef.current?.click();
|
|
57
|
+
};
|
|
58
|
+
const handleChange = ()=>{
|
|
59
|
+
const files = inputRef.current?.files;
|
|
60
|
+
if (files) {
|
|
61
|
+
onAddFiles(Array.from(files));
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Recursively reads a directory and its contents
|
|
66
|
+
*/ const readDirectory = async (entry)=>{
|
|
67
|
+
const reader = entry.createReader();
|
|
68
|
+
const getEntries = ()=>{
|
|
69
|
+
return new Promise((resolve, reject)=>{
|
|
70
|
+
reader.readEntries(resolve, reject);
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
const files = [];
|
|
74
|
+
let entries = [];
|
|
75
|
+
// Read entries in batches until no more entries are left
|
|
76
|
+
do {
|
|
77
|
+
entries = await getEntries();
|
|
78
|
+
for (const entry of entries){
|
|
79
|
+
if (entry.isFile) {
|
|
80
|
+
const fileEntry = entry;
|
|
81
|
+
const file = await new Promise((resolve, reject)=>{
|
|
82
|
+
fileEntry.file(resolve, reject);
|
|
83
|
+
});
|
|
84
|
+
// Store the full path including the directory structure
|
|
85
|
+
Object.defineProperty(file, 'webkitRelativePath', {
|
|
86
|
+
writable: true,
|
|
87
|
+
value: entry.fullPath.substring(1)
|
|
88
|
+
});
|
|
89
|
+
files.push(file);
|
|
90
|
+
} else if (entry.isDirectory) {
|
|
91
|
+
// Recursively process subdirectories
|
|
92
|
+
const dirEntry = entry;
|
|
93
|
+
const subFiles = await readDirectory(dirEntry);
|
|
94
|
+
files.push(...subFiles);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}while (entries.length > 0)
|
|
98
|
+
return files;
|
|
99
|
+
};
|
|
100
|
+
const handleDrop = async (e)=>{
|
|
101
|
+
e.preventDefault();
|
|
102
|
+
setDragOver(false);
|
|
103
|
+
if (!e.dataTransfer?.items) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// For folder upload, process directories recursively
|
|
107
|
+
if (importType === 'folder') {
|
|
108
|
+
const items = e.dataTransfer.items;
|
|
109
|
+
const allFiles = [];
|
|
110
|
+
for(let i = 0; i < items.length; i++){
|
|
111
|
+
const item = items[i];
|
|
112
|
+
// Use webkitGetAsEntry to access the file system entry
|
|
113
|
+
const entry = item.webkitGetAsEntry?.();
|
|
114
|
+
if (entry) {
|
|
115
|
+
if (entry.isDirectory) {
|
|
116
|
+
const files = await readDirectory(entry);
|
|
117
|
+
allFiles.push(...files);
|
|
118
|
+
} else if (entry.isFile) {
|
|
119
|
+
const file = await new Promise((resolve, reject)=>{
|
|
120
|
+
entry.file(resolve, reject);
|
|
121
|
+
});
|
|
122
|
+
allFiles.push(file);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (allFiles.length > 0) {
|
|
127
|
+
onAddFiles(allFiles);
|
|
128
|
+
}
|
|
129
|
+
} else {
|
|
130
|
+
// For zip files, just import them regularly
|
|
131
|
+
if (e.dataTransfer.files) {
|
|
132
|
+
onAddFiles(Array.from(e.dataTransfer.files));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
return /*#__PURE__*/ jsxs(Flex, {
|
|
137
|
+
position: "relative",
|
|
138
|
+
cursor: "pointer",
|
|
139
|
+
width: "100%",
|
|
140
|
+
height: "100%",
|
|
141
|
+
minHeight: "140px",
|
|
142
|
+
borderStyle: "dashed",
|
|
143
|
+
borderColor: dragOver ? 'primary500' : error ? 'danger600' : 'neutral200',
|
|
144
|
+
background: dragOver ? 'primary100' : error ? 'danger100' : 'neutral100',
|
|
145
|
+
hasRadius: true,
|
|
146
|
+
padding: 7,
|
|
147
|
+
justifyContent: "center",
|
|
148
|
+
direction: "column",
|
|
149
|
+
alignItems: "center",
|
|
150
|
+
gap: 2,
|
|
151
|
+
onDragEnter: handleDragEnter,
|
|
152
|
+
onDragLeave: handleDragLeave,
|
|
153
|
+
onDragOver: handleDragOver,
|
|
154
|
+
onDrop: handleDrop,
|
|
155
|
+
children: [
|
|
156
|
+
importType === 'zip' ? /*#__PURE__*/ jsx(FileZip, {
|
|
157
|
+
width: '24px',
|
|
158
|
+
height: '24px'
|
|
159
|
+
}) : /*#__PURE__*/ jsx(Folder, {
|
|
160
|
+
width: '24px',
|
|
161
|
+
height: '24px'
|
|
162
|
+
}),
|
|
163
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
164
|
+
direction: "column",
|
|
165
|
+
alignItems: "center",
|
|
166
|
+
gap: 2,
|
|
167
|
+
children: [
|
|
168
|
+
/*#__PURE__*/ jsxs(Typography, {
|
|
169
|
+
variant: "omega",
|
|
170
|
+
textColor: "neutral600",
|
|
171
|
+
textAlign: "center",
|
|
172
|
+
children: [
|
|
173
|
+
importType === 'zip' ? t('chat.code-upload.drop-zone', 'Drop here a .zip file here or') : t('chat.code-upload.drop-zone-folder', 'Drop here a folder here or'),
|
|
174
|
+
' ',
|
|
175
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
176
|
+
variant: "omega",
|
|
177
|
+
textColor: "primary600",
|
|
178
|
+
onClick: handleClick,
|
|
179
|
+
children: t('chat.code-upload.drop-zone-browse', 'browse files')
|
|
180
|
+
})
|
|
181
|
+
]
|
|
182
|
+
}),
|
|
183
|
+
error && /*#__PURE__*/ jsx(Typography, {
|
|
184
|
+
variant: "pi",
|
|
185
|
+
textColor: "danger600",
|
|
186
|
+
children: error
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
}),
|
|
190
|
+
/*#__PURE__*/ jsx(Box, {
|
|
191
|
+
tag: "input",
|
|
192
|
+
position: "absolute",
|
|
193
|
+
left: 0,
|
|
194
|
+
right: 0,
|
|
195
|
+
bottom: 0,
|
|
196
|
+
top: 0,
|
|
197
|
+
width: "100%",
|
|
198
|
+
name: "code",
|
|
199
|
+
"aria-label": "Upload project",
|
|
200
|
+
tabIndex: -1,
|
|
201
|
+
zIndex: 1,
|
|
202
|
+
ref: inputRef,
|
|
203
|
+
onChange: handleChange,
|
|
204
|
+
style: {
|
|
205
|
+
opacity: 0,
|
|
206
|
+
cursor: 'pointer'
|
|
207
|
+
},
|
|
208
|
+
type: "file",
|
|
209
|
+
...importType === 'zip' ? {
|
|
210
|
+
accept: '.zip',
|
|
211
|
+
multiple: false
|
|
212
|
+
} : {
|
|
213
|
+
multiple: true,
|
|
214
|
+
webkitdirectory: '',
|
|
215
|
+
directory: ''
|
|
216
|
+
}
|
|
217
|
+
})
|
|
218
|
+
]
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
const CodeUploadStep = ({ setFileName, error, processZipFile, processFolder })=>{
|
|
222
|
+
const { t } = useTranslations();
|
|
223
|
+
const { nextStep } = useStepModal();
|
|
224
|
+
return /*#__PURE__*/ jsxs(Flex, {
|
|
225
|
+
direction: "column",
|
|
226
|
+
gap: 6,
|
|
227
|
+
alignItems: "start",
|
|
228
|
+
width: "100%",
|
|
229
|
+
children: [
|
|
230
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
231
|
+
direction: "column",
|
|
232
|
+
gap: 2,
|
|
233
|
+
alignItems: "start",
|
|
234
|
+
children: [
|
|
235
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
236
|
+
variant: "beta",
|
|
237
|
+
children: t('chat.code-upload.title', 'Import code')
|
|
238
|
+
}),
|
|
239
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
240
|
+
variant: "omega",
|
|
241
|
+
textColor: "neutral600",
|
|
242
|
+
children: t('chat.code-upload.description', 'Your app will be analyzed by AI. Make sure to remove all sensitive data before importation.')
|
|
243
|
+
})
|
|
244
|
+
]
|
|
245
|
+
}),
|
|
246
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
247
|
+
gap: 3,
|
|
248
|
+
width: "100%",
|
|
249
|
+
wrap: "wrap",
|
|
250
|
+
children: [
|
|
251
|
+
/*#__PURE__*/ jsx(Box, {
|
|
252
|
+
flex: 1,
|
|
253
|
+
minWidth: "200px",
|
|
254
|
+
children: /*#__PURE__*/ jsx(DropZone, {
|
|
255
|
+
importType: "zip",
|
|
256
|
+
onAddFiles: (files)=>{
|
|
257
|
+
if (files.length > 0) {
|
|
258
|
+
const file = files[0];
|
|
259
|
+
setFileName(file.name.replace('.zip', ''));
|
|
260
|
+
nextStep();
|
|
261
|
+
processZipFile(file);
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
error: error
|
|
265
|
+
})
|
|
266
|
+
}),
|
|
267
|
+
/*#__PURE__*/ jsx(Box, {
|
|
268
|
+
flex: 1,
|
|
269
|
+
minWidth: "200px",
|
|
270
|
+
children: /*#__PURE__*/ jsx(DropZone, {
|
|
271
|
+
importType: "folder",
|
|
272
|
+
onAddFiles: async (files)=>{
|
|
273
|
+
if (files.length > 0) {
|
|
274
|
+
try {
|
|
275
|
+
// Get the folder name from the first file's path
|
|
276
|
+
const firstFile = files[0];
|
|
277
|
+
const folderPath = firstFile.webkitRelativePath || '';
|
|
278
|
+
const folderName = folderPath.split('/')[0] || 'Project';
|
|
279
|
+
setFileName(folderName);
|
|
280
|
+
nextStep();
|
|
281
|
+
// Process the folder files
|
|
282
|
+
await processFolder(files);
|
|
283
|
+
} catch (err) {
|
|
284
|
+
console.error('Error processing folder:', err);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
error: error
|
|
289
|
+
})
|
|
290
|
+
})
|
|
291
|
+
]
|
|
292
|
+
})
|
|
293
|
+
]
|
|
294
|
+
});
|
|
295
|
+
};
|
|
296
|
+
const CodeConfirmationStep = ({ projectName, isLoading, error })=>{
|
|
297
|
+
const { t } = useTranslations();
|
|
298
|
+
return /*#__PURE__*/ jsxs(Flex, {
|
|
299
|
+
direction: "column",
|
|
300
|
+
gap: 6,
|
|
301
|
+
alignItems: "start",
|
|
302
|
+
width: "100%",
|
|
303
|
+
children: [
|
|
304
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
305
|
+
direction: "column",
|
|
306
|
+
gap: 2,
|
|
307
|
+
alignItems: "start",
|
|
308
|
+
children: [
|
|
309
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
310
|
+
variant: "beta",
|
|
311
|
+
children: t('chat.code-upload.confirmation-title', 'Confirm Code Import')
|
|
312
|
+
}),
|
|
313
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
314
|
+
variant: "omega",
|
|
315
|
+
textColor: "neutral600",
|
|
316
|
+
children: t('chat.code-upload.confirmation-description', 'Your code is ready to be imported. Click finish to add it to your chat.')
|
|
317
|
+
})
|
|
318
|
+
]
|
|
319
|
+
}),
|
|
320
|
+
/*#__PURE__*/ jsx(Box, {
|
|
321
|
+
width: "100%",
|
|
322
|
+
children: /*#__PURE__*/ jsx(AttachmentPreview, {
|
|
323
|
+
attachment: {
|
|
324
|
+
id: generateId(),
|
|
325
|
+
status: isLoading ? 'loading' : 'ready',
|
|
326
|
+
filename: projectName || '',
|
|
327
|
+
url: '',
|
|
328
|
+
type: 'file',
|
|
329
|
+
mediaType: STRAPI_CODE_MIME_TYPE
|
|
330
|
+
},
|
|
331
|
+
error: error,
|
|
332
|
+
minWidth: "256px"
|
|
333
|
+
})
|
|
334
|
+
})
|
|
335
|
+
]
|
|
336
|
+
});
|
|
337
|
+
};
|
|
338
|
+
/* -------------------------------------------------------------------------------------------------
|
|
339
|
+
* Modal
|
|
340
|
+
* -----------------------------------------------------------------------------------------------*/ const UploadCodeModal = ()=>{
|
|
341
|
+
const [projectName, setProjectName] = useState(null);
|
|
342
|
+
const [projectAttachment, setProjectAttachment] = useState(null);
|
|
343
|
+
const { t } = useTranslations();
|
|
344
|
+
// Attach files to the chat
|
|
345
|
+
const { addAttachments } = useAttachments();
|
|
346
|
+
const { processZipFile, processFolder, isLoading, error } = useCodeUpload({
|
|
347
|
+
onSuccess: (file)=>setProjectAttachment(file)
|
|
348
|
+
});
|
|
349
|
+
const { isCodeUploadOpen, closeCodeUpload, submitOnFinish } = useUploadProjectToChat();
|
|
350
|
+
const { sendMessage, openChat, input, setInput } = useStrapiChat();
|
|
351
|
+
const handleCancel = ()=>{
|
|
352
|
+
setProjectName(null);
|
|
353
|
+
setProjectAttachment(null);
|
|
354
|
+
closeCodeUpload();
|
|
355
|
+
};
|
|
356
|
+
const handleComplete = async ()=>{
|
|
357
|
+
// Ensure chat is opened
|
|
358
|
+
openChat();
|
|
359
|
+
if (projectAttachment && submitOnFinish) {
|
|
360
|
+
sendMessage({
|
|
361
|
+
role: 'user',
|
|
362
|
+
parts: [
|
|
363
|
+
{
|
|
364
|
+
type: 'text',
|
|
365
|
+
text: 'Create schemas from my uploaded project'
|
|
366
|
+
},
|
|
367
|
+
projectAttachment
|
|
368
|
+
]
|
|
369
|
+
});
|
|
370
|
+
} else if (projectAttachment) {
|
|
371
|
+
// If input is empty, set a predefined message
|
|
372
|
+
if (!input) {
|
|
373
|
+
setInput('Create schemas from my uploaded project');
|
|
374
|
+
}
|
|
375
|
+
// Attach files to the chat input
|
|
376
|
+
addAttachments([
|
|
377
|
+
projectAttachment
|
|
378
|
+
]);
|
|
379
|
+
}
|
|
380
|
+
closeCodeUpload();
|
|
381
|
+
};
|
|
382
|
+
const validateUploadStep = ()=>{
|
|
383
|
+
return !!projectAttachment;
|
|
384
|
+
};
|
|
385
|
+
return /*#__PURE__*/ jsxs(StepModal, {
|
|
386
|
+
open: isCodeUploadOpen,
|
|
387
|
+
onOpenChange: (isOpen)=>{
|
|
388
|
+
if (!isOpen) handleCancel();
|
|
389
|
+
},
|
|
390
|
+
title: t('chat.code-upload.header', 'Import code'),
|
|
391
|
+
onCancel: handleCancel,
|
|
392
|
+
onComplete: handleComplete,
|
|
393
|
+
children: [
|
|
394
|
+
/*#__PURE__*/ jsx(StepModal.Step, {
|
|
395
|
+
title: t('chat.code-upload.step1-title', 'Import code'),
|
|
396
|
+
nextLabel: t('chat.code-upload.continue-button', 'Continue'),
|
|
397
|
+
cancelLabel: t('common.cancel', 'Cancel'),
|
|
398
|
+
disableNext: !projectAttachment || isLoading,
|
|
399
|
+
onNext: validateUploadStep,
|
|
400
|
+
children: /*#__PURE__*/ jsx(CodeUploadStep, {
|
|
401
|
+
setFileName: setProjectName,
|
|
402
|
+
error: error,
|
|
403
|
+
processZipFile: processZipFile,
|
|
404
|
+
processFolder: processFolder
|
|
405
|
+
})
|
|
406
|
+
}),
|
|
407
|
+
/*#__PURE__*/ jsx(StepModal.Step, {
|
|
408
|
+
title: t('chat.code-upload.step2-title', 'Confirm'),
|
|
409
|
+
nextLabel: t('common.finish', 'Finish'),
|
|
410
|
+
backLabel: t('form.button.back', 'Back'),
|
|
411
|
+
disableNext: !projectAttachment || isLoading,
|
|
412
|
+
children: /*#__PURE__*/ jsx(CodeConfirmationStep, {
|
|
413
|
+
projectName: projectName,
|
|
414
|
+
isLoading: isLoading,
|
|
415
|
+
error: error
|
|
416
|
+
})
|
|
417
|
+
})
|
|
418
|
+
]
|
|
419
|
+
});
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
export { UploadCodeModal, UploadProjectToChatProvider, useUploadProjectToChat };
|
|
423
|
+
//# sourceMappingURL=UploadCodeModal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadCodeModal.mjs","sources":["../../../../admin/src/components/AIChat/UploadCodeModal.tsx"],"sourcesContent":["import { createContext, useContext, useRef, useState } from 'react';\n\nimport { Flex, Typography, Box } from '@strapi/design-system';\nimport { Folder, FileZip } from '@strapi/icons';\n\nimport { AttachmentPreview } from './components/Attachments/AttachmentPreview';\nimport { StepModal, useStepModal } from './components/StepModal';\nimport { useAttachments } from './hooks/useAttachments';\nimport { useCodeUpload } from './hooks/useCodeUpload';\nimport { useTranslations } from './hooks/useTranslations';\nimport { STRAPI_CODE_MIME_TYPE } from './lib/constants';\nimport { generateId } from './lib/misc';\nimport { Attachment } from './lib/types/attachments';\nimport { useStrapiChat } from './providers/ChatProvider';\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\ninterface UploadProjectContextType {\n isCodeUploadOpen: boolean;\n submitOnFinish: boolean;\n openCodeUpload: (submitOnFinish?: boolean) => void;\n closeCodeUpload: () => void;\n}\n\nconst UploadProjectContext = createContext<UploadProjectContextType>({\n isCodeUploadOpen: false,\n submitOnFinish: false,\n openCodeUpload: () => {},\n closeCodeUpload: () => {},\n});\n\nexport const useUploadProjectToChat = () => useContext(UploadProjectContext);\n\nexport const UploadProjectToChatProvider = ({ children }: { children: React.ReactNode }) => {\n const [isCodeUploadOpen, setIsCodeUploadOpen] = useState(false);\n const [submitOnFinish, setSubmitOnFinish] = useState(false);\n\n const openCodeUpload = (submitOnFinish?: boolean) => {\n setIsCodeUploadOpen(true);\n setSubmitOnFinish(submitOnFinish ?? false);\n };\n\n const closeCodeUpload = () => setIsCodeUploadOpen(false);\n\n return (\n <UploadProjectContext.Provider\n value={{ isCodeUploadOpen, submitOnFinish, openCodeUpload, closeCodeUpload }}\n >\n {isCodeUploadOpen && <UploadCodeModal />}\n {children}\n </UploadProjectContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Drop Zone\n * -----------------------------------------------------------------------------------------------*/\ninterface DropZoneProps {\n importType: 'folder' | 'zip';\n onAddFiles: (files: File[]) => void;\n error?: string | null;\n}\n\nconst DropZone = ({ importType, onAddFiles, error }: DropZoneProps) => {\n const [dragOver, setDragOver] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const { t } = useTranslations();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n if (files) {\n onAddFiles(Array.from(files));\n }\n };\n\n /**\n * Recursively reads a directory and its contents\n */\n const readDirectory = async (entry: FileSystemDirectoryEntry): Promise<File[]> => {\n const reader = entry.createReader();\n const getEntries = (): Promise<FileSystemEntry[]> => {\n return new Promise((resolve, reject) => {\n reader.readEntries(resolve, reject);\n });\n };\n\n const files: File[] = [];\n let entries: FileSystemEntry[] = [];\n\n // Read entries in batches until no more entries are left\n do {\n entries = await getEntries();\n for (const entry of entries) {\n if (entry.isFile) {\n const fileEntry = entry as FileSystemFileEntry;\n const file = await new Promise<File>((resolve, reject) => {\n fileEntry.file(resolve, reject);\n });\n\n // Store the full path including the directory structure\n Object.defineProperty(file, 'webkitRelativePath', {\n writable: true,\n value: entry.fullPath.substring(1), // Remove leading slash\n });\n\n files.push(file);\n } else if (entry.isDirectory) {\n // Recursively process subdirectories\n const dirEntry = entry as FileSystemDirectoryEntry;\n const subFiles = await readDirectory(dirEntry);\n files.push(...subFiles);\n }\n }\n } while (entries.length > 0);\n\n return files;\n };\n\n const handleDrop = async (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setDragOver(false);\n\n if (!e.dataTransfer?.items) {\n return;\n }\n\n // For folder upload, process directories recursively\n if (importType === 'folder') {\n const items = e.dataTransfer.items;\n const allFiles: File[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n // Use webkitGetAsEntry to access the file system entry\n const entry = item.webkitGetAsEntry?.();\n\n if (entry) {\n if (entry.isDirectory) {\n const files = await readDirectory(entry as FileSystemDirectoryEntry);\n allFiles.push(...files);\n } else if (entry.isFile) {\n const file = await new Promise<File>((resolve, reject) => {\n (entry as FileSystemFileEntry).file(resolve, reject);\n });\n allFiles.push(file);\n }\n }\n }\n\n if (allFiles.length > 0) {\n onAddFiles(allFiles);\n }\n } else {\n // For zip files, just import them regularly\n if (e.dataTransfer.files) {\n onAddFiles(Array.from(e.dataTransfer.files));\n }\n }\n };\n\n return (\n <Flex\n position=\"relative\"\n cursor=\"pointer\"\n width=\"100%\"\n height=\"100%\"\n minHeight=\"140px\"\n borderStyle=\"dashed\"\n borderColor={dragOver ? 'primary500' : error ? 'danger600' : 'neutral200'}\n background={dragOver ? 'primary100' : error ? 'danger100' : 'neutral100'}\n hasRadius\n padding={7}\n justifyContent=\"center\"\n direction=\"column\"\n alignItems=\"center\"\n gap={2}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n {importType === 'zip' ? (\n <FileZip width={'24px'} height={'24px'} />\n ) : (\n <Folder width={'24px'} height={'24px'} />\n )}\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {importType === 'zip'\n ? t('chat.code-upload.drop-zone', 'Drop here a .zip file here or')\n : t('chat.code-upload.drop-zone-folder', 'Drop here a folder here or')}{' '}\n <Typography variant=\"omega\" textColor=\"primary600\" onClick={handleClick}>\n {t('chat.code-upload.drop-zone-browse', 'browse files')}\n </Typography>\n </Typography>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger600\">\n {error}\n </Typography>\n )}\n </Flex>\n <Box\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n name=\"code\"\n aria-label=\"Upload project\"\n tabIndex={-1}\n zIndex={1}\n ref={inputRef}\n onChange={handleChange}\n style={{ opacity: 0, cursor: 'pointer' }}\n type=\"file\"\n {...(importType === 'zip'\n ? { accept: '.zip', multiple: false }\n : { multiple: true, webkitdirectory: '', directory: '' })}\n />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step 1 - Upload Code\n * -----------------------------------------------------------------------------------------------*/\ninterface CodeUploadStepProps {\n setFileName: (name: string | null) => void;\n error: string | null;\n processZipFile: (file: File) => void;\n processFolder: (files: File[]) => Promise<Attachment>;\n}\n\nconst CodeUploadStep = ({\n setFileName,\n error,\n processZipFile,\n processFolder,\n}: CodeUploadStepProps) => {\n const { t } = useTranslations();\n const { nextStep } = useStepModal();\n\n return (\n <Flex direction=\"column\" gap={6} alignItems=\"start\" width=\"100%\">\n <Flex direction=\"column\" gap={2} alignItems=\"start\">\n <Typography variant=\"beta\">{t('chat.code-upload.title', 'Import code')}</Typography>\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {t(\n 'chat.code-upload.description',\n 'Your app will be analyzed by AI. Make sure to remove all sensitive data before importation.'\n )}\n </Typography>\n </Flex>\n\n <Flex gap={3} width=\"100%\" wrap=\"wrap\">\n <Box flex={1} minWidth=\"200px\">\n <DropZone\n importType=\"zip\"\n onAddFiles={(files: FileList | File[]) => {\n if (files.length > 0) {\n const file = files[0];\n setFileName(file.name.replace('.zip', ''));\n nextStep();\n processZipFile(file);\n }\n }}\n error={error}\n />\n </Box>\n <Box flex={1} minWidth=\"200px\">\n <DropZone\n importType=\"folder\"\n onAddFiles={async (files: File[]) => {\n if (files.length > 0) {\n try {\n // Get the folder name from the first file's path\n const firstFile = files[0];\n const folderPath = firstFile.webkitRelativePath || '';\n const folderName = folderPath.split('/')[0] || 'Project';\n\n setFileName(folderName);\n nextStep();\n\n // Process the folder files\n await processFolder(files);\n } catch (err) {\n console.error('Error processing folder:', err);\n }\n }\n }}\n error={error}\n />\n </Box>\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step 2 - Confirmation\n * -----------------------------------------------------------------------------------------------*/\ninterface CodeConfirmationStepProps {\n projectName: string | null;\n isLoading: boolean;\n error: string | null;\n}\n\nconst CodeConfirmationStep = ({ projectName, isLoading, error }: CodeConfirmationStepProps) => {\n const { t } = useTranslations();\n\n return (\n <Flex direction=\"column\" gap={6} alignItems=\"start\" width=\"100%\">\n <Flex direction=\"column\" gap={2} alignItems=\"start\">\n <Typography variant=\"beta\">\n {t('chat.code-upload.confirmation-title', 'Confirm Code Import')}\n </Typography>\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {t(\n 'chat.code-upload.confirmation-description',\n 'Your code is ready to be imported. Click finish to add it to your chat.'\n )}\n </Typography>\n </Flex>\n\n <Box width=\"100%\">\n <AttachmentPreview\n attachment={{\n id: generateId(),\n status: isLoading ? 'loading' : 'ready',\n filename: projectName || '',\n url: '',\n type: 'file',\n mediaType: STRAPI_CODE_MIME_TYPE,\n }}\n error={error}\n minWidth=\"256px\"\n />\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Modal\n * -----------------------------------------------------------------------------------------------*/\nexport const UploadCodeModal = () => {\n const [projectName, setProjectName] = useState<string | null>(null);\n const [projectAttachment, setProjectAttachment] = useState<Attachment | null>(null);\n const { t } = useTranslations();\n\n // Attach files to the chat\n const { addAttachments } = useAttachments();\n\n const { processZipFile, processFolder, isLoading, error } = useCodeUpload({\n onSuccess: (file) => setProjectAttachment(file),\n });\n\n const { isCodeUploadOpen, closeCodeUpload, submitOnFinish } = useUploadProjectToChat();\n const { sendMessage, openChat, input, setInput } = useStrapiChat();\n\n const handleCancel = () => {\n setProjectName(null);\n setProjectAttachment(null);\n closeCodeUpload();\n };\n\n const handleComplete = async () => {\n // Ensure chat is opened\n openChat();\n\n if (projectAttachment && submitOnFinish) {\n sendMessage({\n role: 'user',\n parts: [\n {\n type: 'text',\n text: 'Create schemas from my uploaded project',\n },\n projectAttachment,\n ],\n });\n } else if (projectAttachment) {\n // If input is empty, set a predefined message\n if (!input) {\n setInput('Create schemas from my uploaded project');\n }\n // Attach files to the chat input\n addAttachments([projectAttachment]);\n }\n\n closeCodeUpload();\n };\n\n const validateUploadStep = () => {\n return !!projectAttachment;\n };\n\n return (\n <StepModal\n open={isCodeUploadOpen}\n onOpenChange={(isOpen) => {\n if (!isOpen) handleCancel();\n }}\n title={t('chat.code-upload.header', 'Import code')}\n onCancel={handleCancel}\n onComplete={handleComplete}\n >\n <StepModal.Step\n title={t('chat.code-upload.step1-title', 'Import code')}\n nextLabel={t('chat.code-upload.continue-button', 'Continue')}\n cancelLabel={t('common.cancel', 'Cancel')}\n disableNext={!projectAttachment || isLoading}\n onNext={validateUploadStep}\n >\n <CodeUploadStep\n setFileName={setProjectName}\n error={error}\n processZipFile={processZipFile}\n processFolder={processFolder}\n />\n </StepModal.Step>\n\n <StepModal.Step\n title={t('chat.code-upload.step2-title', 'Confirm')}\n nextLabel={t('common.finish', 'Finish')}\n backLabel={t('form.button.back', 'Back')}\n disableNext={!projectAttachment || isLoading}\n >\n <CodeConfirmationStep projectName={projectName} isLoading={isLoading} error={error} />\n </StepModal.Step>\n </StepModal>\n );\n};\n"],"names":["UploadProjectContext","createContext","isCodeUploadOpen","submitOnFinish","openCodeUpload","closeCodeUpload","useUploadProjectToChat","useContext","UploadProjectToChatProvider","children","setIsCodeUploadOpen","useState","setSubmitOnFinish","_jsxs","Provider","value","_jsx","UploadCodeModal","DropZone","importType","onAddFiles","error","dragOver","setDragOver","inputRef","useRef","t","useTranslations","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","handleClick","e","current","click","handleChange","files","Array","from","readDirectory","entry","reader","createReader","getEntries","Promise","resolve","reject","readEntries","entries","isFile","fileEntry","file","Object","defineProperty","writable","fullPath","substring","push","isDirectory","dirEntry","subFiles","length","handleDrop","dataTransfer","items","allFiles","i","item","webkitGetAsEntry","Flex","position","cursor","width","height","minHeight","borderStyle","borderColor","background","hasRadius","padding","justifyContent","direction","alignItems","gap","onDragEnter","onDragLeave","onDragOver","onDrop","FileZip","Folder","Typography","variant","textColor","textAlign","onClick","Box","tag","left","right","bottom","top","name","aria-label","tabIndex","zIndex","ref","onChange","style","opacity","type","accept","multiple","webkitdirectory","directory","CodeUploadStep","setFileName","processZipFile","processFolder","nextStep","useStepModal","wrap","flex","minWidth","replace","firstFile","folderPath","webkitRelativePath","folderName","split","err","console","CodeConfirmationStep","projectName","isLoading","AttachmentPreview","attachment","id","generateId","status","filename","url","mediaType","STRAPI_CODE_MIME_TYPE","setProjectName","projectAttachment","setProjectAttachment","addAttachments","useAttachments","useCodeUpload","onSuccess","sendMessage","openChat","input","setInput","useStrapiChat","handleCancel","handleComplete","role","parts","text","validateUploadStep","StepModal","open","onOpenChange","isOpen","title","onCancel","onComplete","Step","nextLabel","cancelLabel","disableNext","onNext","backLabel"],"mappings":"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"}
|