@strapi/content-type-builder 5.37.1 → 5.38.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.map +1 -1
- package/dist/admin/components/AIChat/Chat.mjs +2 -2
- package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.mjs +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadCodeModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadCodeModal.mjs +1 -1
- package/dist/admin/components/AIChat/UploadCodeModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Alert.js.map +1 -1
- package/dist/admin/components/AIChat/components/Alert.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/AnimatedBox.js.map +1 -1
- package/dist/admin/components/AIChat/components/AnimatedBox.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs +1 -1
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -1
- package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Dropzone.js +2 -6
- package/dist/admin/components/AIChat/components/Dropzone.js.map +1 -1
- package/dist/admin/components/AIChat/components/Dropzone.mjs +3 -7
- package/dist/admin/components/AIChat/components/Dropzone.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/FloatingPanel.js.map +1 -1
- package/dist/admin/components/AIChat/components/FloatingPanel.mjs +1 -1
- package/dist/admin/components/AIChat/components/FloatingPanel.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -1
- package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/ImagePreview.js.map +1 -1
- package/dist/admin/components/AIChat/components/ImagePreview.mjs +1 -1
- package/dist/admin/components/AIChat/components/ImagePreview.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Input.js +1 -5
- package/dist/admin/components/AIChat/components/Input.js.map +1 -1
- package/dist/admin/components/AIChat/components/Input.mjs +4 -7
- package/dist/admin/components/AIChat/components/Input.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Marker.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Marker.mjs +2 -2
- package/dist/admin/components/AIChat/components/Messages/Marker.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/ResizableTextArea.js.map +1 -1
- package/dist/admin/components/AIChat/components/ResizableTextArea.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/SimpleMenu.js.map +1 -1
- package/dist/admin/components/AIChat/components/SimpleMenu.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/StepModal.js.map +1 -1
- package/dist/admin/components/AIChat/components/StepModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/animations.js.map +1 -1
- package/dist/admin/components/AIChat/components/animations.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/icons/FigmaIcon.js.map +1 -1
- package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/icons/StopIcon.js.map +1 -1
- package/dist/admin/components/AIChat/components/icons/StopIcon.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAttachments.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAttachments.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useChatTitle.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useChatTitle.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useTranslations.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useTranslations.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/constants.js.map +1 -1
- package/dist/admin/components/AIChat/lib/constants.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/misc.js.map +1 -1
- package/dist/admin/components/AIChat/lib/misc.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
- package/dist/admin/components/ApplyConditionButton.js.map +1 -1
- package/dist/admin/components/ApplyConditionButton.mjs.map +1 -1
- package/dist/admin/components/AttributeIcon.js.map +1 -1
- package/dist/admin/components/AttributeIcon.mjs +1 -1
- package/dist/admin/components/AttributeIcon.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeList.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeList.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOptions.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOptions.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldsList.js.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldsList.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/EmptyAttributes.js.map +1 -1
- package/dist/admin/components/AttributeOptions/EmptyAttributes.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/OptionBoxWrapper.js.map +1 -1
- package/dist/admin/components/AttributeOptions/OptionBoxWrapper.mjs.map +1 -1
- package/dist/admin/components/AttributeRow.js.map +1 -1
- package/dist/admin/components/AttributeRow.mjs +1 -1
- package/dist/admin/components/AttributeRow.mjs.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.mjs.map +1 -1
- package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
- package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
- package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
- package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CTBSession/CTBSessionProvider.js.map +1 -1
- package/dist/admin/components/CTBSession/CTBSessionProvider.mjs.map +1 -1
- package/dist/admin/components/CTBSession/sessionContext.js.map +1 -1
- package/dist/admin/components/CTBSession/sessionContext.mjs.map +1 -1
- package/dist/admin/components/CTBSession/useCTBSession.js.map +1 -1
- package/dist/admin/components/CTBSession/useCTBSession.mjs.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
- package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
- package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentIcon/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentIcon/ComponentIcon.mjs.map +1 -1
- package/dist/admin/components/ComponentList.js.map +1 -1
- package/dist/admin/components/ComponentList.mjs.map +1 -1
- package/dist/admin/components/ComponentRow.js.map +1 -1
- package/dist/admin/components/ComponentRow.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +2 -2
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
- package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.mjs +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.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/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/DataManager/undoRedo.js.map +1 -1
- package/dist/admin/components/DataManager/undoRedo.mjs.map +1 -1
- package/dist/admin/components/DataManager/useDataManager.js.map +1 -1
- package/dist/admin/components/DataManager/useDataManager.mjs.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
- package/dist/admin/components/DisplayedType.js.map +1 -1
- package/dist/admin/components/DisplayedType.mjs.map +1 -1
- package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
- package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs +1 -1
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/ExitPrompt.js.map +1 -1
- package/dist/admin/components/ExitPrompt.mjs.map +1 -1
- package/dist/admin/components/Footers.js.map +1 -1
- package/dist/admin/components/Footers.mjs +2 -2
- package/dist/admin/components/Footers.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/attributeOptions.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/attributeOptions.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/baseForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/baseForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/commonBaseForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/commonBaseForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/form.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/form.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/nameField.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/nameField.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/componentField.js.map +1 -1
- package/dist/admin/components/FormModal/component/componentField.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/componentForm.js.map +1 -1
- package/dist/admin/components/FormModal/component/componentForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
- package/dist/admin/components/FormModal/contentType/contentTypeForm.js.map +1 -1
- package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js.map +1 -1
- package/dist/admin/components/FormModal/contentType/createContentTypeSchema.mjs.map +1 -1
- package/dist/admin/components/FormModal/dynamiczoneForm.js.map +1 -1
- package/dist/admin/components/FormModal/dynamiczoneForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/addItemsToFormSection.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/addItemsToFormSection.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/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/components/FormModal/utils/createUid.js.map +1 -1
- package/dist/admin/components/FormModal/utils/createUid.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
- package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
- package/dist/admin/components/FormModalEndActions.js.map +1 -1
- package/dist/admin/components/FormModalEndActions.mjs.map +1 -1
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalHeader.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs.map +1 -1
- package/dist/admin/components/FormModalSubHeader.js.map +1 -1
- package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +1 -5
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +1 -5
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
- package/dist/admin/components/IconPicker/IconPicker.mjs +1 -1
- package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
- package/dist/admin/components/IconPicker/constants.js.map +1 -1
- package/dist/admin/components/IconPicker/constants.mjs.map +1 -1
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs +1 -1
- package/dist/admin/components/List.mjs.map +1 -1
- package/dist/admin/components/PluralName.js.map +1 -1
- package/dist/admin/components/PluralName.mjs.map +1 -1
- package/dist/admin/components/Relation/Relation.js.map +1 -1
- package/dist/admin/components/Relation/Relation.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/Components.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/Components.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
- package/dist/admin/components/SelectCategory.js.map +1 -1
- package/dist/admin/components/SelectCategory.mjs.map +1 -1
- package/dist/admin/components/SelectComponent.js.map +1 -1
- package/dist/admin/components/SelectComponent.mjs.map +1 -1
- package/dist/admin/components/SelectComponents.js.map +1 -1
- package/dist/admin/components/SelectComponents.mjs.map +1 -1
- package/dist/admin/components/SelectDateType.js.map +1 -1
- package/dist/admin/components/SelectDateType.mjs.map +1 -1
- package/dist/admin/components/SelectNumber.js.map +1 -1
- package/dist/admin/components/SelectNumber.mjs.map +1 -1
- package/dist/admin/components/SingularName.js.map +1 -1
- package/dist/admin/components/SingularName.mjs.map +1 -1
- package/dist/admin/components/Status.js.map +1 -1
- package/dist/admin/components/Status.mjs.map +1 -1
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/components/TextareaEnum.js.map +1 -1
- package/dist/admin/components/TextareaEnum.mjs.map +1 -1
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/icons/Curve.js.map +1 -1
- package/dist/admin/icons/Curve.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.mjs +1 -1
- package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
- package/dist/admin/pages/ListView/LinkToCMSettingsView.js.map +1 -1
- package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs +1 -1
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/admin/reducers.js +4 -4
- package/dist/admin/reducers.js.map +1 -1
- package/dist/admin/reducers.mjs +4 -4
- package/dist/admin/reducers.mjs.map +1 -1
- package/dist/admin/utils/conditions.js.map +1 -1
- package/dist/admin/utils/conditions.mjs.map +1 -1
- package/dist/admin/utils/findAttribute.js.map +1 -1
- package/dist/admin/utils/findAttribute.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js.map +1 -1
- package/dist/admin/utils/formAPI.mjs.map +1 -1
- package/dist/admin/utils/getAttributeDisplayedType.js.map +1 -1
- package/dist/admin/utils/getAttributeDisplayedType.mjs.map +1 -1
- package/dist/admin/utils/getMaxDepth.js.map +1 -1
- package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
- package/dist/admin/utils/getRelationType.js.map +1 -1
- package/dist/admin/utils/getRelationType.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.js.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.mjs.map +1 -1
- package/dist/admin/utils/makeUnique.js.map +1 -1
- package/dist/admin/utils/makeUnique.mjs.map +1 -1
- package/dist/admin/utils/nameToSlug.js.map +1 -1
- package/dist/admin/utils/nameToSlug.mjs.map +1 -1
- package/dist/admin/utils/parseDateValue.js.map +1 -1
- package/dist/admin/utils/parseDateValue.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/timeFormat.js.map +1 -1
- package/dist/admin/utils/timeFormat.mjs.map +1 -1
- package/dist/admin/utils/toRegressedEnumValue.js.map +1 -1
- package/dist/admin/utils/toRegressedEnumValue.mjs.map +1 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/builder.js.map +1 -1
- package/dist/server/controllers/builder.mjs.map +1 -1
- package/dist/server/controllers/component-categories.js.map +1 -1
- package/dist/server/controllers/component-categories.mjs.map +1 -1
- package/dist/server/controllers/components.js.map +1 -1
- package/dist/server/controllers/components.mjs +1 -1
- package/dist/server/controllers/components.mjs.map +1 -1
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/content-types.mjs +1 -1
- package/dist/server/controllers/content-types.mjs.map +1 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/schema.js.map +1 -1
- package/dist/server/controllers/schema.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/component-category.js.map +1 -1
- package/dist/server/controllers/validation/component-category.mjs.map +1 -1
- package/dist/server/controllers/validation/component.js.map +1 -1
- package/dist/server/controllers/validation/component.mjs +1 -1
- package/dist/server/controllers/validation/component.mjs.map +1 -1
- package/dist/server/controllers/validation/content-type.js.map +1 -1
- package/dist/server/controllers/validation/content-type.mjs.map +1 -1
- package/dist/server/controllers/validation/data-transform.js.map +1 -1
- package/dist/server/controllers/validation/data-transform.mjs.map +1 -1
- package/dist/server/controllers/validation/model-schema.js.map +1 -1
- package/dist/server/controllers/validation/model-schema.mjs.map +1 -1
- package/dist/server/controllers/validation/relations.js.map +1 -1
- package/dist/server/controllers/validation/relations.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +1 -1
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/controllers/validation/types.js +0 -1
- package/dist/server/controllers/validation/types.js.map +1 -1
- package/dist/server/controllers/validation/types.mjs +1 -2
- package/dist/server/controllers/validation/types.mjs.map +1 -1
- package/dist/server/index.js +8 -8
- package/dist/server/middlewares/is-development-mode.js.map +1 -1
- package/dist/server/middlewares/is-development-mode.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/api-handler.js.map +1 -1
- package/dist/server/services/api-handler.mjs.map +1 -1
- package/dist/server/services/builder.js.map +1 -1
- package/dist/server/services/builder.mjs.map +1 -1
- package/dist/server/services/component-categories.js.map +1 -1
- package/dist/server/services/component-categories.mjs +1 -1
- package/dist/server/services/component-categories.mjs.map +1 -1
- package/dist/server/services/components.js.map +1 -1
- package/dist/server/services/components.mjs +1 -1
- package/dist/server/services/components.mjs.map +1 -1
- package/dist/server/services/constants.js.map +1 -1
- package/dist/server/services/constants.mjs.map +1 -1
- package/dist/server/services/content-types.js.map +1 -1
- package/dist/server/services/content-types.mjs +1 -1
- package/dist/server/services/content-types.mjs.map +1 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/component-builder.js.map +1 -1
- package/dist/server/services/schema-builder/component-builder.mjs +1 -1
- package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.mjs +2 -2
- package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/index.js.map +1 -1
- package/dist/server/services/schema-builder/index.mjs +3 -3
- package/dist/server/services/schema-builder/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
- package/dist/server/services/schema.js.map +1 -1
- package/dist/server/services/schema.mjs +1 -1
- package/dist/server/services/schema.mjs.map +1 -1
- package/dist/server/utils/attributes.js.map +1 -1
- package/dist/server/utils/attributes.mjs.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/server/utils/typeguards.js.map +1 -1
- package/dist/server/utils/typeguards.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.js","sources":["../../../../../admin/src/components/AIChat/components/Alert.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\n\ninterface AlertProps {\n title: string;\n variant?: 'danger' | 'warning';\n}\n\nconst COLORS = {\n danger: {\n background: 'danger100',\n borderColor: 'danger200',\n textColor: 'danger700',\n },\n warning: {\n background: 'warning100',\n borderColor: 'warning200',\n textColor: 'warning600',\n },\n};\n\nexport const Alert = ({ title, variant = 'danger' }: AlertProps) => {\n return (\n <Box\n padding={3}\n background={COLORS[variant].background}\n borderColor={COLORS[variant].borderColor}\n hasRadius\n width=\"100%\"\n >\n <Flex gap={2}>\n <WarningCircle style={{ minWidth: '16px' }} fill={COLORS[variant].textColor} />\n <Typography variant=\"omega\" textColor={COLORS[variant].textColor}>\n {title}\n </Typography>\n </Flex>\n </Box>\n );\n};\n"],"names":["COLORS","danger","background","borderColor","textColor","warning","Alert","title","variant","_jsx","Box","padding","hasRadius","width","_jsxs","Flex","gap","WarningCircle","style","minWidth","fill","Typography"],"mappings":";;;;;;AAQA,MAAMA,
|
|
1
|
+
{"version":3,"file":"Alert.js","sources":["../../../../../admin/src/components/AIChat/components/Alert.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\n\ninterface AlertProps {\n title: string;\n variant?: 'danger' | 'warning';\n}\n\nconst COLORS = {\n danger: {\n background: 'danger100',\n borderColor: 'danger200',\n textColor: 'danger700',\n },\n warning: {\n background: 'warning100',\n borderColor: 'warning200',\n textColor: 'warning600',\n },\n};\n\nexport const Alert = ({ title, variant = 'danger' }: AlertProps) => {\n return (\n <Box\n padding={3}\n background={COLORS[variant].background}\n borderColor={COLORS[variant].borderColor}\n hasRadius\n width=\"100%\"\n >\n <Flex gap={2}>\n <WarningCircle style={{ minWidth: '16px' }} fill={COLORS[variant].textColor} />\n <Typography variant=\"omega\" textColor={COLORS[variant].textColor}>\n {title}\n </Typography>\n </Flex>\n </Box>\n );\n};\n"],"names":["COLORS","danger","background","borderColor","textColor","warning","Alert","title","variant","_jsx","Box","padding","hasRadius","width","_jsxs","Flex","gap","WarningCircle","style","minWidth","fill","Typography"],"mappings":";;;;;;AAQA,MAAMA,MAAAA,GAAS;IACbC,MAAAA,EAAQ;QACNC,UAAAA,EAAY,WAAA;QACZC,WAAAA,EAAa,WAAA;QACbC,SAAAA,EAAW;AACb,KAAA;IACAC,OAAAA,EAAS;QACPH,UAAAA,EAAY,YAAA;QACZC,WAAAA,EAAa,YAAA;QACbC,SAAAA,EAAW;AACb;AACF,CAAA;AAEO,MAAME,QAAQ,CAAC,EAAEC,KAAK,EAAEC,OAAAA,GAAU,QAAQ,EAAc,GAAA;AAC7D,IAAA,qBACEC,cAAA,CAACC,gBAAAA,EAAAA;QACCC,OAAAA,EAAS,CAAA;AACTT,QAAAA,UAAAA,EAAYF,MAAM,CAACQ,OAAAA,CAAQ,CAACN,UAAU;AACtCC,QAAAA,WAAAA,EAAaH,MAAM,CAACQ,OAAAA,CAAQ,CAACL,WAAW;QACxCS,SAAS,EAAA,IAAA;QACTC,KAAAA,EAAM,MAAA;AAEN,QAAA,QAAA,gBAAAC,eAAA,CAACC,iBAAAA,EAAAA;YAAKC,GAAAA,EAAK,CAAA;;8BACTP,cAAA,CAACQ,mBAAAA,EAAAA;oBAAcC,KAAAA,EAAO;wBAAEC,QAAAA,EAAU;AAAO,qBAAA;AAAGC,oBAAAA,IAAAA,EAAMpB,MAAM,CAACQ,OAAAA,CAAQ,CAACJ;;8BAClEK,cAAA,CAACY,uBAAAA,EAAAA;oBAAWb,OAAAA,EAAQ,OAAA;AAAQJ,oBAAAA,SAAAA,EAAWJ,MAAM,CAACQ,OAAAA,CAAQ,CAACJ,SAAS;AAC7DG,oBAAAA,QAAAA,EAAAA;;;;;AAKX;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.mjs","sources":["../../../../../admin/src/components/AIChat/components/Alert.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\n\ninterface AlertProps {\n title: string;\n variant?: 'danger' | 'warning';\n}\n\nconst COLORS = {\n danger: {\n background: 'danger100',\n borderColor: 'danger200',\n textColor: 'danger700',\n },\n warning: {\n background: 'warning100',\n borderColor: 'warning200',\n textColor: 'warning600',\n },\n};\n\nexport const Alert = ({ title, variant = 'danger' }: AlertProps) => {\n return (\n <Box\n padding={3}\n background={COLORS[variant].background}\n borderColor={COLORS[variant].borderColor}\n hasRadius\n width=\"100%\"\n >\n <Flex gap={2}>\n <WarningCircle style={{ minWidth: '16px' }} fill={COLORS[variant].textColor} />\n <Typography variant=\"omega\" textColor={COLORS[variant].textColor}>\n {title}\n </Typography>\n </Flex>\n </Box>\n );\n};\n"],"names":["COLORS","danger","background","borderColor","textColor","warning","Alert","title","variant","_jsx","Box","padding","hasRadius","width","_jsxs","Flex","gap","WarningCircle","style","minWidth","fill","Typography"],"mappings":";;;;AAQA,MAAMA,
|
|
1
|
+
{"version":3,"file":"Alert.mjs","sources":["../../../../../admin/src/components/AIChat/components/Alert.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\n\ninterface AlertProps {\n title: string;\n variant?: 'danger' | 'warning';\n}\n\nconst COLORS = {\n danger: {\n background: 'danger100',\n borderColor: 'danger200',\n textColor: 'danger700',\n },\n warning: {\n background: 'warning100',\n borderColor: 'warning200',\n textColor: 'warning600',\n },\n};\n\nexport const Alert = ({ title, variant = 'danger' }: AlertProps) => {\n return (\n <Box\n padding={3}\n background={COLORS[variant].background}\n borderColor={COLORS[variant].borderColor}\n hasRadius\n width=\"100%\"\n >\n <Flex gap={2}>\n <WarningCircle style={{ minWidth: '16px' }} fill={COLORS[variant].textColor} />\n <Typography variant=\"omega\" textColor={COLORS[variant].textColor}>\n {title}\n </Typography>\n </Flex>\n </Box>\n );\n};\n"],"names":["COLORS","danger","background","borderColor","textColor","warning","Alert","title","variant","_jsx","Box","padding","hasRadius","width","_jsxs","Flex","gap","WarningCircle","style","minWidth","fill","Typography"],"mappings":";;;;AAQA,MAAMA,MAAAA,GAAS;IACbC,MAAAA,EAAQ;QACNC,UAAAA,EAAY,WAAA;QACZC,WAAAA,EAAa,WAAA;QACbC,SAAAA,EAAW;AACb,KAAA;IACAC,OAAAA,EAAS;QACPH,UAAAA,EAAY,YAAA;QACZC,WAAAA,EAAa,YAAA;QACbC,SAAAA,EAAW;AACb;AACF,CAAA;AAEO,MAAME,QAAQ,CAAC,EAAEC,KAAK,EAAEC,OAAAA,GAAU,QAAQ,EAAc,GAAA;AAC7D,IAAA,qBACEC,GAAA,CAACC,GAAAA,EAAAA;QACCC,OAAAA,EAAS,CAAA;AACTT,QAAAA,UAAAA,EAAYF,MAAM,CAACQ,OAAAA,CAAQ,CAACN,UAAU;AACtCC,QAAAA,WAAAA,EAAaH,MAAM,CAACQ,OAAAA,CAAQ,CAACL,WAAW;QACxCS,SAAS,EAAA,IAAA;QACTC,KAAAA,EAAM,MAAA;AAEN,QAAA,QAAA,gBAAAC,IAAA,CAACC,IAAAA,EAAAA;YAAKC,GAAAA,EAAK,CAAA;;8BACTP,GAAA,CAACQ,aAAAA,EAAAA;oBAAcC,KAAAA,EAAO;wBAAEC,QAAAA,EAAU;AAAO,qBAAA;AAAGC,oBAAAA,IAAAA,EAAMpB,MAAM,CAACQ,OAAAA,CAAQ,CAACJ;;8BAClEK,GAAA,CAACY,UAAAA,EAAAA;oBAAWb,OAAAA,EAAQ,OAAA;AAAQJ,oBAAAA,SAAAA,EAAWJ,MAAM,CAACQ,OAAAA,CAAQ,CAACJ,SAAS;AAC7DG,oBAAAA,QAAAA,EAAAA;;;;;AAKX;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimatedBox.js","sources":["../../../../../admin/src/components/AIChat/components/AnimatedBox.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/**\n * Translates and fades in from a specified direction.\n */\nexport const AnimatedBox = styled(Box)<{ $direction?: 'up' | 'left' }>`\n opacity: 0;\n transform: ${({ $direction = 'up' }) =>\n $direction === 'up' ? 'translateY(10px)' : 'translateX(-10px)'};\n\n @media (prefers-reduced-motion: no-preference) {\n animation: ${({ $direction = 'up' }) => ($direction === 'up' ? 'appearUp' : 'appearLeft')}\n ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad} forwards;\n }\n\n @keyframes appearUp {\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes appearLeft {\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n`;\n"],"names":["AnimatedBox","styled","Box","$direction","theme","motion","timings","easings","easeOutQuad"],"mappings":";;;;;AAGA;;AAEC,IACM,MAAMA,
|
|
1
|
+
{"version":3,"file":"AnimatedBox.js","sources":["../../../../../admin/src/components/AIChat/components/AnimatedBox.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/**\n * Translates and fades in from a specified direction.\n */\nexport const AnimatedBox = styled(Box)<{ $direction?: 'up' | 'left' }>`\n opacity: 0;\n transform: ${({ $direction = 'up' }) =>\n $direction === 'up' ? 'translateY(10px)' : 'translateX(-10px)'};\n\n @media (prefers-reduced-motion: no-preference) {\n animation: ${({ $direction = 'up' }) => ($direction === 'up' ? 'appearUp' : 'appearLeft')}\n ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad} forwards;\n }\n\n @keyframes appearUp {\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes appearLeft {\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n`;\n"],"names":["AnimatedBox","styled","Box","$direction","theme","motion","timings","easings","easeOutQuad"],"mappings":";;;;;AAGA;;AAEC,IACM,MAAMA,WAAAA,GAAcC,uBAAAA,CAAOC,iBAAoC;;aAEzD,EAAE,CAAC,EAAEC,UAAAA,GAAa,IAAI,EAAE,GACjCA,UAAAA,KAAe,IAAA,GAAO,kBAAA,GAAqB,mBAAA,CAAoB;;;eAGpD,EAAE,CAAC,EAAEA,UAAAA,GAAa,IAAI,EAAE,GAAMA,UAAAA,KAAe,IAAA,GAAO,UAAA,GAAa,YAAA;MAC1E,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,OAAO,CAAC,KAAA,CAAM;MAC5C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACE,OAAO,CAACC,WAAW,CAAC;;;;;;;;;;;;;;;;AAgBxD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimatedBox.mjs","sources":["../../../../../admin/src/components/AIChat/components/AnimatedBox.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/**\n * Translates and fades in from a specified direction.\n */\nexport const AnimatedBox = styled(Box)<{ $direction?: 'up' | 'left' }>`\n opacity: 0;\n transform: ${({ $direction = 'up' }) =>\n $direction === 'up' ? 'translateY(10px)' : 'translateX(-10px)'};\n\n @media (prefers-reduced-motion: no-preference) {\n animation: ${({ $direction = 'up' }) => ($direction === 'up' ? 'appearUp' : 'appearLeft')}\n ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad} forwards;\n }\n\n @keyframes appearUp {\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes appearLeft {\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n`;\n"],"names":["AnimatedBox","styled","Box","$direction","theme","motion","timings","easings","easeOutQuad"],"mappings":";;;AAGA;;AAEC,IACM,MAAMA,
|
|
1
|
+
{"version":3,"file":"AnimatedBox.mjs","sources":["../../../../../admin/src/components/AIChat/components/AnimatedBox.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/**\n * Translates and fades in from a specified direction.\n */\nexport const AnimatedBox = styled(Box)<{ $direction?: 'up' | 'left' }>`\n opacity: 0;\n transform: ${({ $direction = 'up' }) =>\n $direction === 'up' ? 'translateY(10px)' : 'translateX(-10px)'};\n\n @media (prefers-reduced-motion: no-preference) {\n animation: ${({ $direction = 'up' }) => ($direction === 'up' ? 'appearUp' : 'appearLeft')}\n ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad} forwards;\n }\n\n @keyframes appearUp {\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes appearLeft {\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n`;\n"],"names":["AnimatedBox","styled","Box","$direction","theme","motion","timings","easings","easeOutQuad"],"mappings":";;;AAGA;;AAEC,IACM,MAAMA,WAAAA,GAAcC,MAAAA,CAAOC,IAAoC;;aAEzD,EAAE,CAAC,EAAEC,UAAAA,GAAa,IAAI,EAAE,GACjCA,UAAAA,KAAe,IAAA,GAAO,kBAAA,GAAqB,mBAAA,CAAoB;;;eAGpD,EAAE,CAAC,EAAEA,UAAAA,GAAa,IAAI,EAAE,GAAMA,UAAAA,KAAe,IAAA,GAAO,UAAA,GAAa,YAAA;MAC1E,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,OAAO,CAAC,KAAA,CAAM;MAC5C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACE,OAAO,CAACC,WAAW,CAAC;;;;;;;;;;;;;;;;AAgBxD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentPreview.js","sources":["../../../../../../admin/src/components/AIChat/components/Attachments/AttachmentPreview.tsx"],"sourcesContent":["import { Loader } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { STRAPI_CODE_MIME_TYPE } from '../../lib/constants';\nimport { Attachment as TAttachment } from '../../lib/types/attachments';\nimport { Base64Img } from '../Base64Image';\nimport { FullScreenImage } from '../FullScreenImage';\n\nimport { Attachment, AttachmentRootProps } from './components/Attachment';\n\ninterface AttachmentPreviewProps {\n attachment: TAttachment;\n loading?: boolean;\n onRemove?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Image\n * -----------------------------------------------------------------------------------------------*/\n\nconst ImageThumbnail = styled(Base64Img)`\n width: 24px;\n height: 24px;\n object-fit: cover;\n border-radius: ${({ theme }) => theme.borderRadius};\n`;\n\nconst ImageAttachment = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n return (\n <FullScreenImage.Root src={attachment.url} alt={attachment.filename || 'image'}>\n <FullScreenImage.Trigger asChild>\n <Attachment.Root {...props}>\n <Attachment.Preview>\n {attachment.status === 'loading' ? (\n <Loader small />\n ) : (\n <ImageThumbnail src={attachment.url} alt={attachment.filename} />\n )}\n </Attachment.Preview>\n <Attachment.Title>{attachment.filename || 'unknown'}</Attachment.Title>\n {onRemove && <Attachment.Remove onClick={onRemove} />}\n </Attachment.Root>\n </FullScreenImage.Trigger>\n </FullScreenImage.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Code\n * -----------------------------------------------------------------------------------------------*/\n\nconst CodeAttachment = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n return (\n <Attachment.Root {...props}>\n <Attachment.Preview>\n {attachment.status === 'loading' ? <Loader small /> : <Folder height={24} width={24} />}\n </Attachment.Preview>\n <Attachment.Title>{attachment.filename || 'unknown'}</Attachment.Title>\n {onRemove && <Attachment.Remove onClick={onRemove} />}\n </Attachment.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const AttachmentPreview = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n if (attachment.mediaType?.startsWith('image/')) {\n return <ImageAttachment attachment={attachment} onRemove={onRemove} {...props} />;\n }\n\n if (attachment.mediaType === STRAPI_CODE_MIME_TYPE) {\n return <CodeAttachment attachment={attachment} onRemove={onRemove} {...props} />;\n }\n\n return null;\n};\n"],"names":["ImageThumbnail","styled","Base64Img","theme","borderRadius","ImageAttachment","attachment","onRemove","props","_jsx","FullScreenImage","Root","src","url","alt","filename","Trigger","asChild","_jsxs","Attachment","Preview","status","Loader","small","Title","Remove","onClick","CodeAttachment","Folder","height","width","AttachmentPreview","mediaType","startsWith","STRAPI_CODE_MIME_TYPE"],"mappings":";;;;;;;;;;;AAiBA;;AAEkG,qGAElG,MAAMA,cAAAA,GAAiBC,
|
|
1
|
+
{"version":3,"file":"AttachmentPreview.js","sources":["../../../../../../admin/src/components/AIChat/components/Attachments/AttachmentPreview.tsx"],"sourcesContent":["import { Loader } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { STRAPI_CODE_MIME_TYPE } from '../../lib/constants';\nimport { Attachment as TAttachment } from '../../lib/types/attachments';\nimport { Base64Img } from '../Base64Image';\nimport { FullScreenImage } from '../FullScreenImage';\n\nimport { Attachment, AttachmentRootProps } from './components/Attachment';\n\ninterface AttachmentPreviewProps {\n attachment: TAttachment;\n loading?: boolean;\n onRemove?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Image\n * -----------------------------------------------------------------------------------------------*/\n\nconst ImageThumbnail = styled(Base64Img)`\n width: 24px;\n height: 24px;\n object-fit: cover;\n border-radius: ${({ theme }) => theme.borderRadius};\n`;\n\nconst ImageAttachment = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n return (\n <FullScreenImage.Root src={attachment.url} alt={attachment.filename || 'image'}>\n <FullScreenImage.Trigger asChild>\n <Attachment.Root {...props}>\n <Attachment.Preview>\n {attachment.status === 'loading' ? (\n <Loader small />\n ) : (\n <ImageThumbnail src={attachment.url} alt={attachment.filename} />\n )}\n </Attachment.Preview>\n <Attachment.Title>{attachment.filename || 'unknown'}</Attachment.Title>\n {onRemove && <Attachment.Remove onClick={onRemove} />}\n </Attachment.Root>\n </FullScreenImage.Trigger>\n </FullScreenImage.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Code\n * -----------------------------------------------------------------------------------------------*/\n\nconst CodeAttachment = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n return (\n <Attachment.Root {...props}>\n <Attachment.Preview>\n {attachment.status === 'loading' ? <Loader small /> : <Folder height={24} width={24} />}\n </Attachment.Preview>\n <Attachment.Title>{attachment.filename || 'unknown'}</Attachment.Title>\n {onRemove && <Attachment.Remove onClick={onRemove} />}\n </Attachment.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const AttachmentPreview = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n if (attachment.mediaType?.startsWith('image/')) {\n return <ImageAttachment attachment={attachment} onRemove={onRemove} {...props} />;\n }\n\n if (attachment.mediaType === STRAPI_CODE_MIME_TYPE) {\n return <CodeAttachment attachment={attachment} onRemove={onRemove} {...props} />;\n }\n\n return null;\n};\n"],"names":["ImageThumbnail","styled","Base64Img","theme","borderRadius","ImageAttachment","attachment","onRemove","props","_jsx","FullScreenImage","Root","src","url","alt","filename","Trigger","asChild","_jsxs","Attachment","Preview","status","Loader","small","Title","Remove","onClick","CodeAttachment","Folder","height","width","AttachmentPreview","mediaType","startsWith","STRAPI_CODE_MIME_TYPE"],"mappings":";;;;;;;;;;;AAiBA;;AAEkG,qGAElG,MAAMA,cAAAA,GAAiBC,uBAAAA,CAAOC,qBAAAA,CAAU;;;;AAIvB,iBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;AACrD,CAAC;AAED,MAAMC,eAAAA,GAAkB,CAAC,EACvBC,UAAU,EACVC,QAAQ,EACR,GAAGC,KAAAA,EAC4D,GAAA;IAC/D,qBACEC,cAAA,CAACC,gCAAgBC,IAAI,EAAA;AAACC,QAAAA,GAAAA,EAAKN,WAAWO,GAAG;QAAEC,GAAAA,EAAKR,UAAAA,CAAWS,QAAQ,IAAI,OAAA;gCACrEN,cAAA,CAACC,gCAAgBM,OAAO,EAAA;YAACC,OAAO,EAAA,IAAA;oCAC9BC,eAAA,CAACC,sBAAWR,IAAI,EAAA;AAAE,gBAAA,GAAGH,KAAK;;AACxB,kCAAAC,cAAA,CAACU,sBAAWC,OAAO,EAAA;kCAChBd,UAAAA,CAAWe,MAAM,KAAK,SAAA,iBACrBZ,cAAA,CAACa,mBAAAA,EAAAA;4BAAOC,KAAK,EAAA;2CAEbd,cAAA,CAACT,cAAAA,EAAAA;AAAeY,4BAAAA,GAAAA,EAAKN,WAAWO,GAAG;AAAEC,4BAAAA,GAAAA,EAAKR,WAAWS;;;AAGzD,kCAAAN,cAAA,CAACU,sBAAWK,KAAK,EAAA;AAAElB,wBAAAA,QAAAA,EAAAA,UAAAA,CAAWS,QAAQ,IAAI;;oBACzCR,QAAAA,kBAAYE,cAAA,CAACU,sBAAWM,MAAM,EAAA;wBAACC,OAAAA,EAASnB;;;;;;AAKnD,CAAA;AAEA;;qGAIA,MAAMoB,iBAAiB,CAAC,EACtBrB,UAAU,EACVC,QAAQ,EACR,GAAGC,KAAAA,EAC4D,GAAA;IAC/D,qBACEU,eAAA,CAACC,sBAAWR,IAAI,EAAA;AAAE,QAAA,GAAGH,KAAK;;AACxB,0BAAAC,cAAA,CAACU,sBAAWC,OAAO,EAAA;0BAChBd,UAAAA,CAAWe,MAAM,KAAK,SAAA,iBAAYZ,cAAA,CAACa,mBAAAA,EAAAA;oBAAOC,KAAK,EAAA;mCAAMd,cAAA,CAACmB,YAAAA,EAAAA;oBAAOC,MAAAA,EAAQ,EAAA;oBAAIC,KAAAA,EAAO;;;AAEnF,0BAAArB,cAAA,CAACU,sBAAWK,KAAK,EAAA;AAAElB,gBAAAA,QAAAA,EAAAA,UAAAA,CAAWS,QAAQ,IAAI;;YACzCR,QAAAA,kBAAYE,cAAA,CAACU,sBAAWM,MAAM,EAAA;gBAACC,OAAAA,EAASnB;;;;AAG/C,CAAA;AAEA;;qGAIO,MAAMwB,iBAAAA,GAAoB,CAAC,EAChCzB,UAAU,EACVC,QAAQ,EACR,GAAGC,KAAAA,EAC4D,GAAA;AAC/D,IAAA,IAAIF,UAAAA,CAAW0B,SAAS,EAAEC,UAAAA,CAAW,QAAA,CAAA,EAAW;AAC9C,QAAA,qBAAOxB,cAAA,CAACJ,eAAAA,EAAAA;YAAgBC,UAAAA,EAAYA,UAAAA;YAAYC,QAAAA,EAAUA,QAAAA;AAAW,YAAA,GAAGC;;AAC1E,IAAA;IAEA,IAAIF,UAAAA,CAAW0B,SAAS,KAAKE,+BAAAA,EAAuB;AAClD,QAAA,qBAAOzB,cAAA,CAACkB,cAAAA,EAAAA;YAAerB,UAAAA,EAAYA,UAAAA;YAAYC,QAAAA,EAAUA,QAAAA;AAAW,YAAA,GAAGC;;AACzE,IAAA;IAEA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentPreview.mjs","sources":["../../../../../../admin/src/components/AIChat/components/Attachments/AttachmentPreview.tsx"],"sourcesContent":["import { Loader } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { STRAPI_CODE_MIME_TYPE } from '../../lib/constants';\nimport { Attachment as TAttachment } from '../../lib/types/attachments';\nimport { Base64Img } from '../Base64Image';\nimport { FullScreenImage } from '../FullScreenImage';\n\nimport { Attachment, AttachmentRootProps } from './components/Attachment';\n\ninterface AttachmentPreviewProps {\n attachment: TAttachment;\n loading?: boolean;\n onRemove?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Image\n * -----------------------------------------------------------------------------------------------*/\n\nconst ImageThumbnail = styled(Base64Img)`\n width: 24px;\n height: 24px;\n object-fit: cover;\n border-radius: ${({ theme }) => theme.borderRadius};\n`;\n\nconst ImageAttachment = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n return (\n <FullScreenImage.Root src={attachment.url} alt={attachment.filename || 'image'}>\n <FullScreenImage.Trigger asChild>\n <Attachment.Root {...props}>\n <Attachment.Preview>\n {attachment.status === 'loading' ? (\n <Loader small />\n ) : (\n <ImageThumbnail src={attachment.url} alt={attachment.filename} />\n )}\n </Attachment.Preview>\n <Attachment.Title>{attachment.filename || 'unknown'}</Attachment.Title>\n {onRemove && <Attachment.Remove onClick={onRemove} />}\n </Attachment.Root>\n </FullScreenImage.Trigger>\n </FullScreenImage.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Code\n * -----------------------------------------------------------------------------------------------*/\n\nconst CodeAttachment = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n return (\n <Attachment.Root {...props}>\n <Attachment.Preview>\n {attachment.status === 'loading' ? <Loader small /> : <Folder height={24} width={24} />}\n </Attachment.Preview>\n <Attachment.Title>{attachment.filename || 'unknown'}</Attachment.Title>\n {onRemove && <Attachment.Remove onClick={onRemove} />}\n </Attachment.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const AttachmentPreview = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n if (attachment.mediaType?.startsWith('image/')) {\n return <ImageAttachment attachment={attachment} onRemove={onRemove} {...props} />;\n }\n\n if (attachment.mediaType === STRAPI_CODE_MIME_TYPE) {\n return <CodeAttachment attachment={attachment} onRemove={onRemove} {...props} />;\n }\n\n return null;\n};\n"],"names":["ImageThumbnail","styled","Base64Img","theme","borderRadius","ImageAttachment","attachment","onRemove","props","_jsx","FullScreenImage","Root","src","url","alt","filename","Trigger","asChild","_jsxs","Attachment","Preview","status","Loader","small","Title","Remove","onClick","CodeAttachment","Folder","height","width","AttachmentPreview","mediaType","startsWith","STRAPI_CODE_MIME_TYPE"],"mappings":";;;;;;;;;AAiBA;;AAEkG,qGAElG,MAAMA,cAAAA,GAAiBC,
|
|
1
|
+
{"version":3,"file":"AttachmentPreview.mjs","sources":["../../../../../../admin/src/components/AIChat/components/Attachments/AttachmentPreview.tsx"],"sourcesContent":["import { Loader } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { STRAPI_CODE_MIME_TYPE } from '../../lib/constants';\nimport { Attachment as TAttachment } from '../../lib/types/attachments';\nimport { Base64Img } from '../Base64Image';\nimport { FullScreenImage } from '../FullScreenImage';\n\nimport { Attachment, AttachmentRootProps } from './components/Attachment';\n\ninterface AttachmentPreviewProps {\n attachment: TAttachment;\n loading?: boolean;\n onRemove?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Image\n * -----------------------------------------------------------------------------------------------*/\n\nconst ImageThumbnail = styled(Base64Img)`\n width: 24px;\n height: 24px;\n object-fit: cover;\n border-radius: ${({ theme }) => theme.borderRadius};\n`;\n\nconst ImageAttachment = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n return (\n <FullScreenImage.Root src={attachment.url} alt={attachment.filename || 'image'}>\n <FullScreenImage.Trigger asChild>\n <Attachment.Root {...props}>\n <Attachment.Preview>\n {attachment.status === 'loading' ? (\n <Loader small />\n ) : (\n <ImageThumbnail src={attachment.url} alt={attachment.filename} />\n )}\n </Attachment.Preview>\n <Attachment.Title>{attachment.filename || 'unknown'}</Attachment.Title>\n {onRemove && <Attachment.Remove onClick={onRemove} />}\n </Attachment.Root>\n </FullScreenImage.Trigger>\n </FullScreenImage.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Code\n * -----------------------------------------------------------------------------------------------*/\n\nconst CodeAttachment = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n return (\n <Attachment.Root {...props}>\n <Attachment.Preview>\n {attachment.status === 'loading' ? <Loader small /> : <Folder height={24} width={24} />}\n </Attachment.Preview>\n <Attachment.Title>{attachment.filename || 'unknown'}</Attachment.Title>\n {onRemove && <Attachment.Remove onClick={onRemove} />}\n </Attachment.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const AttachmentPreview = ({\n attachment,\n onRemove,\n ...props\n}: AttachmentPreviewProps & Omit<AttachmentRootProps, 'children'>) => {\n if (attachment.mediaType?.startsWith('image/')) {\n return <ImageAttachment attachment={attachment} onRemove={onRemove} {...props} />;\n }\n\n if (attachment.mediaType === STRAPI_CODE_MIME_TYPE) {\n return <CodeAttachment attachment={attachment} onRemove={onRemove} {...props} />;\n }\n\n return null;\n};\n"],"names":["ImageThumbnail","styled","Base64Img","theme","borderRadius","ImageAttachment","attachment","onRemove","props","_jsx","FullScreenImage","Root","src","url","alt","filename","Trigger","asChild","_jsxs","Attachment","Preview","status","Loader","small","Title","Remove","onClick","CodeAttachment","Folder","height","width","AttachmentPreview","mediaType","startsWith","STRAPI_CODE_MIME_TYPE"],"mappings":";;;;;;;;;AAiBA;;AAEkG,qGAElG,MAAMA,cAAAA,GAAiBC,MAAAA,CAAOC,SAAAA,CAAU;;;;AAIvB,iBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;AACrD,CAAC;AAED,MAAMC,eAAAA,GAAkB,CAAC,EACvBC,UAAU,EACVC,QAAQ,EACR,GAAGC,KAAAA,EAC4D,GAAA;IAC/D,qBACEC,GAAA,CAACC,gBAAgBC,IAAI,EAAA;AAACC,QAAAA,GAAAA,EAAKN,WAAWO,GAAG;QAAEC,GAAAA,EAAKR,UAAAA,CAAWS,QAAQ,IAAI,OAAA;gCACrEN,GAAA,CAACC,gBAAgBM,OAAO,EAAA;YAACC,OAAO,EAAA,IAAA;oCAC9BC,IAAA,CAACC,WAAWR,IAAI,EAAA;AAAE,gBAAA,GAAGH,KAAK;;AACxB,kCAAAC,GAAA,CAACU,WAAWC,OAAO,EAAA;kCAChBd,UAAAA,CAAWe,MAAM,KAAK,SAAA,iBACrBZ,GAAA,CAACa,MAAAA,EAAAA;4BAAOC,KAAK,EAAA;2CAEbd,GAAA,CAACT,cAAAA,EAAAA;AAAeY,4BAAAA,GAAAA,EAAKN,WAAWO,GAAG;AAAEC,4BAAAA,GAAAA,EAAKR,WAAWS;;;AAGzD,kCAAAN,GAAA,CAACU,WAAWK,KAAK,EAAA;AAAElB,wBAAAA,QAAAA,EAAAA,UAAAA,CAAWS,QAAQ,IAAI;;oBACzCR,QAAAA,kBAAYE,GAAA,CAACU,WAAWM,MAAM,EAAA;wBAACC,OAAAA,EAASnB;;;;;;AAKnD,CAAA;AAEA;;qGAIA,MAAMoB,iBAAiB,CAAC,EACtBrB,UAAU,EACVC,QAAQ,EACR,GAAGC,KAAAA,EAC4D,GAAA;IAC/D,qBACEU,IAAA,CAACC,WAAWR,IAAI,EAAA;AAAE,QAAA,GAAGH,KAAK;;AACxB,0BAAAC,GAAA,CAACU,WAAWC,OAAO,EAAA;0BAChBd,UAAAA,CAAWe,MAAM,KAAK,SAAA,iBAAYZ,GAAA,CAACa,MAAAA,EAAAA;oBAAOC,KAAK,EAAA;mCAAMd,GAAA,CAACmB,MAAAA,EAAAA;oBAAOC,MAAAA,EAAQ,EAAA;oBAAIC,KAAAA,EAAO;;;AAEnF,0BAAArB,GAAA,CAACU,WAAWK,KAAK,EAAA;AAAElB,gBAAAA,QAAAA,EAAAA,UAAAA,CAAWS,QAAQ,IAAI;;YACzCR,QAAAA,kBAAYE,GAAA,CAACU,WAAWM,MAAM,EAAA;gBAACC,OAAAA,EAASnB;;;;AAG/C,CAAA;AAEA;;qGAIO,MAAMwB,iBAAAA,GAAoB,CAAC,EAChCzB,UAAU,EACVC,QAAQ,EACR,GAAGC,KAAAA,EAC4D,GAAA;AAC/D,IAAA,IAAIF,UAAAA,CAAW0B,SAAS,EAAEC,UAAAA,CAAW,QAAA,CAAA,EAAW;AAC9C,QAAA,qBAAOxB,GAAA,CAACJ,eAAAA,EAAAA;YAAgBC,UAAAA,EAAYA,UAAAA;YAAYC,QAAAA,EAAUA,QAAAA;AAAW,YAAA,GAAGC;;AAC1E,IAAA;IAEA,IAAIF,UAAAA,CAAW0B,SAAS,KAAKE,qBAAAA,EAAuB;AAClD,QAAA,qBAAOzB,GAAA,CAACkB,cAAAA,EAAAA;YAAerB,UAAAA,EAAYA,UAAAA;YAAYC,QAAAA,EAAUA,QAAAA;AAAW,YAAA,GAAGC;;AACzE,IAAA;IAEA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Attachment.js","sources":["../../../../../../../admin/src/components/AIChat/components/Attachments/components/Attachment.tsx"],"sourcesContent":["import { ReactNode, createContext, useContext } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Trash, WarningCircle } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentContextValue {\n error?: string | null;\n}\n\nconst AttachmentContext = createContext<AttachmentContextValue>({ error: null });\n\nconst useAttachmentContext = () => useContext(AttachmentContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AttachmentRootProps {\n children: ReactNode;\n error?: string | null;\n minWidth?: string;\n maxWidth?: string;\n}\n\nconst StyledRoot = styled(Box)`\n &:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\n// TODO: How to make this a button instead?\nconst Root = ({ children, error = null, minWidth, maxWidth }: AttachmentRootProps) => {\n return (\n <AttachmentContext.Provider value={{ error }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={2}\n minWidth={minWidth}\n maxWidth={maxWidth}\n >\n <StyledRoot\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n padding={2}\n width=\"100%\"\n >\n <Flex gap={2}>{children}</Flex>\n </StyledRoot>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger500\">\n {error}\n </Typography>\n )}\n </Flex>\n </AttachmentContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Preview\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentPreviewProps {\n children: ReactNode;\n}\n\nconst Preview = ({ children }: AttachmentPreviewProps) => {\n const { error } = useAttachmentContext();\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n {error ? <WarningCircle fill=\"danger500\" /> : children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Title\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentTitleProps {\n children: ReactNode;\n}\n\nconst Title = ({ children }: AttachmentTitleProps) => {\n return (\n <Box grow={1}>\n <Typography variant=\"omega\" ellipsis style={{ userSelect: 'none', maxWidth: '100px' }}>\n {children}\n </Typography>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Remove\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentRemoveProps {\n onClick: () => void;\n}\n\nconst Remove = ({ onClick }: AttachmentRemoveProps) => {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\" shrink={0} onClick={onClick}>\n <Trash fill=\"neutral500\" />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Attachment = {\n Root,\n Preview,\n Title,\n Remove,\n};\n\nexport { useAttachmentContext };\n"],"names":["AttachmentContext","createContext","error","useAttachmentContext","useContext","StyledRoot","styled","Box","theme","colors","neutral100","Root","children","minWidth","maxWidth","_jsx","Provider","value","_jsxs","Flex","direction","alignItems","gap","background","hasRadius","borderColor","borderStyle","borderWidth","padding","width","Typography","variant","textColor","Preview","justifyContent","WarningCircle","fill","Title","grow","ellipsis","style","userSelect","Remove","onClick","shrink","Trash","Attachment"],"mappings":";;;;;;;;AAcA,MAAMA,kCAAoBC,
|
|
1
|
+
{"version":3,"file":"Attachment.js","sources":["../../../../../../../admin/src/components/AIChat/components/Attachments/components/Attachment.tsx"],"sourcesContent":["import { ReactNode, createContext, useContext } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Trash, WarningCircle } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentContextValue {\n error?: string | null;\n}\n\nconst AttachmentContext = createContext<AttachmentContextValue>({ error: null });\n\nconst useAttachmentContext = () => useContext(AttachmentContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AttachmentRootProps {\n children: ReactNode;\n error?: string | null;\n minWidth?: string;\n maxWidth?: string;\n}\n\nconst StyledRoot = styled(Box)`\n &:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\n// TODO: How to make this a button instead?\nconst Root = ({ children, error = null, minWidth, maxWidth }: AttachmentRootProps) => {\n return (\n <AttachmentContext.Provider value={{ error }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={2}\n minWidth={minWidth}\n maxWidth={maxWidth}\n >\n <StyledRoot\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n padding={2}\n width=\"100%\"\n >\n <Flex gap={2}>{children}</Flex>\n </StyledRoot>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger500\">\n {error}\n </Typography>\n )}\n </Flex>\n </AttachmentContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Preview\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentPreviewProps {\n children: ReactNode;\n}\n\nconst Preview = ({ children }: AttachmentPreviewProps) => {\n const { error } = useAttachmentContext();\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n {error ? <WarningCircle fill=\"danger500\" /> : children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Title\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentTitleProps {\n children: ReactNode;\n}\n\nconst Title = ({ children }: AttachmentTitleProps) => {\n return (\n <Box grow={1}>\n <Typography variant=\"omega\" ellipsis style={{ userSelect: 'none', maxWidth: '100px' }}>\n {children}\n </Typography>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Remove\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentRemoveProps {\n onClick: () => void;\n}\n\nconst Remove = ({ onClick }: AttachmentRemoveProps) => {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\" shrink={0} onClick={onClick}>\n <Trash fill=\"neutral500\" />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Attachment = {\n Root,\n Preview,\n Title,\n Remove,\n};\n\nexport { useAttachmentContext };\n"],"names":["AttachmentContext","createContext","error","useAttachmentContext","useContext","StyledRoot","styled","Box","theme","colors","neutral100","Root","children","minWidth","maxWidth","_jsx","Provider","value","_jsxs","Flex","direction","alignItems","gap","background","hasRadius","borderColor","borderStyle","borderWidth","padding","width","Typography","variant","textColor","Preview","justifyContent","WarningCircle","fill","Title","grow","ellipsis","style","userSelect","Remove","onClick","shrink","Trash","Attachment"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { createContext, useContext } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { Flex, Typography, Box } from '@strapi/design-system';
|
|
4
4
|
import { WarningCircle, Trash } from '@strapi/icons';
|
|
5
5
|
import { styled } from 'styled-components';
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Attachment.mjs","sources":["../../../../../../../admin/src/components/AIChat/components/Attachments/components/Attachment.tsx"],"sourcesContent":["import { ReactNode, createContext, useContext } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Trash, WarningCircle } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentContextValue {\n error?: string | null;\n}\n\nconst AttachmentContext = createContext<AttachmentContextValue>({ error: null });\n\nconst useAttachmentContext = () => useContext(AttachmentContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AttachmentRootProps {\n children: ReactNode;\n error?: string | null;\n minWidth?: string;\n maxWidth?: string;\n}\n\nconst StyledRoot = styled(Box)`\n &:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\n// TODO: How to make this a button instead?\nconst Root = ({ children, error = null, minWidth, maxWidth }: AttachmentRootProps) => {\n return (\n <AttachmentContext.Provider value={{ error }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={2}\n minWidth={minWidth}\n maxWidth={maxWidth}\n >\n <StyledRoot\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n padding={2}\n width=\"100%\"\n >\n <Flex gap={2}>{children}</Flex>\n </StyledRoot>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger500\">\n {error}\n </Typography>\n )}\n </Flex>\n </AttachmentContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Preview\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentPreviewProps {\n children: ReactNode;\n}\n\nconst Preview = ({ children }: AttachmentPreviewProps) => {\n const { error } = useAttachmentContext();\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n {error ? <WarningCircle fill=\"danger500\" /> : children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Title\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentTitleProps {\n children: ReactNode;\n}\n\nconst Title = ({ children }: AttachmentTitleProps) => {\n return (\n <Box grow={1}>\n <Typography variant=\"omega\" ellipsis style={{ userSelect: 'none', maxWidth: '100px' }}>\n {children}\n </Typography>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Remove\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentRemoveProps {\n onClick: () => void;\n}\n\nconst Remove = ({ onClick }: AttachmentRemoveProps) => {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\" shrink={0} onClick={onClick}>\n <Trash fill=\"neutral500\" />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Attachment = {\n Root,\n Preview,\n Title,\n Remove,\n};\n\nexport { useAttachmentContext };\n"],"names":["AttachmentContext","createContext","error","useAttachmentContext","useContext","StyledRoot","styled","Box","theme","colors","neutral100","Root","children","minWidth","maxWidth","_jsx","Provider","value","_jsxs","Flex","direction","alignItems","gap","background","hasRadius","borderColor","borderStyle","borderWidth","padding","width","Typography","variant","textColor","Preview","justifyContent","WarningCircle","fill","Title","grow","ellipsis","style","userSelect","Remove","onClick","shrink","Trash","Attachment"],"mappings":";;;;;;AAcA,MAAMA,kCAAoBC,
|
|
1
|
+
{"version":3,"file":"Attachment.mjs","sources":["../../../../../../../admin/src/components/AIChat/components/Attachments/components/Attachment.tsx"],"sourcesContent":["import { ReactNode, createContext, useContext } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Trash, WarningCircle } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentContextValue {\n error?: string | null;\n}\n\nconst AttachmentContext = createContext<AttachmentContextValue>({ error: null });\n\nconst useAttachmentContext = () => useContext(AttachmentContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AttachmentRootProps {\n children: ReactNode;\n error?: string | null;\n minWidth?: string;\n maxWidth?: string;\n}\n\nconst StyledRoot = styled(Box)`\n &:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\n// TODO: How to make this a button instead?\nconst Root = ({ children, error = null, minWidth, maxWidth }: AttachmentRootProps) => {\n return (\n <AttachmentContext.Provider value={{ error }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={2}\n minWidth={minWidth}\n maxWidth={maxWidth}\n >\n <StyledRoot\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n padding={2}\n width=\"100%\"\n >\n <Flex gap={2}>{children}</Flex>\n </StyledRoot>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger500\">\n {error}\n </Typography>\n )}\n </Flex>\n </AttachmentContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Preview\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentPreviewProps {\n children: ReactNode;\n}\n\nconst Preview = ({ children }: AttachmentPreviewProps) => {\n const { error } = useAttachmentContext();\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n {error ? <WarningCircle fill=\"danger500\" /> : children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Title\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentTitleProps {\n children: ReactNode;\n}\n\nconst Title = ({ children }: AttachmentTitleProps) => {\n return (\n <Box grow={1}>\n <Typography variant=\"omega\" ellipsis style={{ userSelect: 'none', maxWidth: '100px' }}>\n {children}\n </Typography>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Remove\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AttachmentRemoveProps {\n onClick: () => void;\n}\n\nconst Remove = ({ onClick }: AttachmentRemoveProps) => {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\" shrink={0} onClick={onClick}>\n <Trash fill=\"neutral500\" />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Attachment Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Attachment = {\n Root,\n Preview,\n Title,\n Remove,\n};\n\nexport { useAttachmentContext };\n"],"names":["AttachmentContext","createContext","error","useAttachmentContext","useContext","StyledRoot","styled","Box","theme","colors","neutral100","Root","children","minWidth","maxWidth","_jsx","Provider","value","_jsxs","Flex","direction","alignItems","gap","background","hasRadius","borderColor","borderStyle","borderWidth","padding","width","Typography","variant","textColor","Preview","justifyContent","WarningCircle","fill","Title","grow","ellipsis","style","userSelect","Remove","onClick","shrink","Trash","Attachment"],"mappings":";;;;;;AAcA,MAAMA,kCAAoBC,aAAAA,CAAsC;IAAEC,KAAAA,EAAO;AAAK,CAAA,CAAA;AAE9E,MAAMC,oBAAAA,GAAuB,IAAMC,UAAAA,CAAWJ,iBAAAA;AAa9C,MAAMK,UAAAA,GAAaC,MAAAA,CAAOC,GAAAA,CAAI;;;gBAGd,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;;AAEzD,CAAC;AAED;AACA,MAAMC,IAAAA,GAAO,CAAC,EAAEC,QAAQ,EAAEV,KAAAA,GAAQ,IAAI,EAAEW,QAAQ,EAAEC,QAAQ,EAAuB,GAAA;IAC/E,qBACEC,GAAA,CAACf,kBAAkBgB,QAAQ,EAAA;QAACC,KAAAA,EAAO;AAAEf,YAAAA;AAAM,SAAA;AACzC,QAAA,QAAA,gBAAAgB,IAAA,CAACC,IAAAA,EAAAA;YACCC,SAAAA,EAAU,QAAA;YACVC,UAAAA,EAAW,YAAA;YACXC,GAAAA,EAAK,CAAA;YACLT,QAAAA,EAAUA,QAAAA;YACVC,QAAAA,EAAUA,QAAAA;;8BAEVC,GAAA,CAACV,UAAAA,EAAAA;oBACCkB,UAAAA,EAAW,UAAA;oBACXC,SAAS,EAAA,IAAA;oBACTC,WAAAA,EAAY,YAAA;oBACZC,WAAAA,EAAY,OAAA;oBACZC,WAAAA,EAAY,KAAA;oBACZC,OAAAA,EAAS,CAAA;oBACTC,KAAAA,EAAM,MAAA;AAEN,oBAAA,QAAA,gBAAAd,GAAA,CAACI,IAAAA,EAAAA;wBAAKG,GAAAA,EAAK,CAAA;AAAIV,wBAAAA,QAAAA,EAAAA;;;AAEhBV,gBAAAA,KAAAA,kBACCa,GAAA,CAACe,UAAAA,EAAAA;oBAAWC,OAAAA,EAAQ,IAAA;oBAAKC,SAAAA,EAAU,WAAA;AAChC9B,oBAAAA,QAAAA,EAAAA;;;;;AAMb,CAAA;AAUA,MAAM+B,OAAAA,GAAU,CAAC,EAAErB,QAAQ,EAA0B,GAAA;IACnD,MAAM,EAAEV,KAAK,EAAE,GAAGC,oBAAAA,EAAAA;AAElB,IAAA,qBACEY,GAAA,CAACI,IAAAA,EAAAA;QAAKE,UAAAA,EAAW,QAAA;QAASa,cAAAA,EAAe,QAAA;AACtChC,QAAAA,QAAAA,EAAAA,KAAAA,iBAAQa,GAAA,CAACoB,aAAAA,EAAAA;YAAcC,IAAAA,EAAK;AAAiBxB,SAAAA,CAAAA,GAAAA;;AAGpD,CAAA;AAUA,MAAMyB,KAAAA,GAAQ,CAAC,EAAEzB,QAAQ,EAAwB,GAAA;AAC/C,IAAA,qBACEG,GAAA,CAACR,GAAAA,EAAAA;QAAI+B,IAAAA,EAAM,CAAA;AACT,QAAA,QAAA,gBAAAvB,GAAA,CAACe,UAAAA,EAAAA;YAAWC,OAAAA,EAAQ,OAAA;YAAQQ,QAAQ,EAAA,IAAA;YAACC,KAAAA,EAAO;gBAAEC,UAAAA,EAAY,MAAA;gBAAQ3B,QAAAA,EAAU;AAAQ,aAAA;AACjFF,YAAAA,QAAAA,EAAAA;;;AAIT,CAAA;AAUA,MAAM8B,MAAAA,GAAS,CAAC,EAAEC,OAAO,EAAyB,GAAA;AAChD,IAAA,qBACE5B,GAAA,CAACI,IAAAA,EAAAA;QAAKE,UAAAA,EAAW,QAAA;QAASa,cAAAA,EAAe,QAAA;QAASU,MAAAA,EAAQ,CAAA;QAAGD,OAAAA,EAASA,OAAAA;AACpE,QAAA,QAAA,gBAAA5B,GAAA,CAAC8B,KAAAA,EAAAA;YAAMT,IAAAA,EAAK;;;AAGlB,CAAA;AAEA;;2GAIaU,UAAAA,GAAa;AACxBnC,IAAAA,IAAAA;AACAsB,IAAAA,OAAAA;AACAI,IAAAA,KAAAA;AACAK,IAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base64Image.js","sources":["../../../../../admin/src/components/AIChat/components/Base64Image.tsx"],"sourcesContent":["import { useState, useEffect, ImgHTMLAttributes } from 'react';\n\nimport { Flex, Loader } from '@strapi/design-system';\nimport { CrossCircle } from '@strapi/icons';\n\nconst blobToBase64 = (blob: Blob): Promise<string | ArrayBuffer | null> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n};\n\n// Check if a string is already a data URL (base64 image)\nconst isBase64Image = (src: string): boolean => {\n return src.startsWith('data:image/');\n};\n\ninterface Base64ImgProps extends ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n inferSize?: boolean;\n onLoad?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n onError?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n}\n\nexport const Base64Img: React.FC<Base64ImgProps> = ({\n src,\n alt,\n inferSize = false,\n onLoad: externalOnLoad,\n onError: externalOnError,\n ...rest\n}) => {\n const [base64Src, setBase64Src] = useState<string | null>(null);\n const [dimensions, setDimensions] = useState<{ width?: number; height?: number }>({});\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n\n useEffect(() => {\n const fetchAndConvert = async () => {\n setIsLoading(true);\n setHasError(false);\n\n // If src is already a base64 string, use it directly\n if (isBase64Image(src)) {\n setBase64Src(src);\n setIsLoading(false);\n return;\n }\n\n try {\n // TODO: Find a better way of doing this\n // If url is from strapi-ai-staging.s3.us-east-1.amazonaws.com or strapi-ai-production.s3.us-east-1.amazonaws.com, use it directly\n const url = new URL(src);\n const allowedDomains = [\n 'strapi-ai-staging.s3.us-east-1.amazonaws.com',\n 'strapi-ai-production.s3.us-east-1.amazonaws.com',\n ];\n\n if (allowedDomains.includes(url.hostname)) {\n setBase64Src(src);\n setIsLoading(false);\n return;\n }\n } catch (e) {\n // If URL parsing fails, continue with the fetch attempt\n }\n\n try {\n // Only fetch if it's a URL and not already a base64 string\n const response = await fetch(src);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const blob = await response.blob();\n const dataUrl = await blobToBase64(blob);\n setBase64Src(dataUrl as string);\n setIsLoading(false);\n } catch (error) {\n console.error('Error converting image to base64:', error);\n setHasError(true);\n setIsLoading(false);\n }\n };\n\n fetchAndConvert();\n }, [src, externalOnError]);\n\n const handleImageLoad = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (inferSize) {\n const { naturalWidth, naturalHeight } = e.currentTarget;\n setDimensions({ width: naturalWidth, height: naturalHeight });\n }\n\n if (externalOnLoad) {\n externalOnLoad(e);\n }\n };\n\n if (isLoading) {\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"center\" width=\"100%\">\n <Loader small />\n </Flex>\n );\n }\n\n if (hasError) {\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"center\" width=\"100%\">\n <CrossCircle width={24} height={24} fill=\"danger600\" />\n </Flex>\n );\n }\n\n // Build props for the img element\n const imgProps: ImgHTMLAttributes<HTMLImageElement> = {\n src: base64Src || '',\n alt,\n onLoad: handleImageLoad,\n ...rest,\n };\n\n // If inferSize is enabled and width/height weren't explicitly provided,\n // merge the inferred dimensions into the props once available.\n if (inferSize && !rest.width && !rest.height && dimensions.width && dimensions.height) {\n imgProps.width = dimensions.width;\n imgProps.height = dimensions.height;\n }\n\n return base64Src ? <img {...imgProps} /> : null;\n};\n"],"names":["blobToBase64","blob","Promise","resolve","reject","reader","FileReader","onloadend","result","onerror","readAsDataURL","isBase64Image","src","startsWith","Base64Img","alt","inferSize","onLoad","externalOnLoad","onError","externalOnError","rest","base64Src","setBase64Src","useState","dimensions","setDimensions","isLoading","setIsLoading","hasError","setHasError","useEffect","fetchAndConvert","url","URL","allowedDomains","includes","hostname","e","response","fetch","ok","Error","status","dataUrl","error","console","handleImageLoad","naturalWidth","naturalHeight","currentTarget","width","height","_jsx","Flex","direction","gap","alignItems","Loader","small","CrossCircle","fill","imgProps","img"],"mappings":";;;;;;;AAKA,MAAMA,eAAe,CAACC,IAAAA,GAAAA;IACpB,OAAO,IAAIC,
|
|
1
|
+
{"version":3,"file":"Base64Image.js","sources":["../../../../../admin/src/components/AIChat/components/Base64Image.tsx"],"sourcesContent":["import { useState, useEffect, ImgHTMLAttributes } from 'react';\n\nimport { Flex, Loader } from '@strapi/design-system';\nimport { CrossCircle } from '@strapi/icons';\n\nconst blobToBase64 = (blob: Blob): Promise<string | ArrayBuffer | null> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n};\n\n// Check if a string is already a data URL (base64 image)\nconst isBase64Image = (src: string): boolean => {\n return src.startsWith('data:image/');\n};\n\ninterface Base64ImgProps extends ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n inferSize?: boolean;\n onLoad?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n onError?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n}\n\nexport const Base64Img: React.FC<Base64ImgProps> = ({\n src,\n alt,\n inferSize = false,\n onLoad: externalOnLoad,\n onError: externalOnError,\n ...rest\n}) => {\n const [base64Src, setBase64Src] = useState<string | null>(null);\n const [dimensions, setDimensions] = useState<{ width?: number; height?: number }>({});\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n\n useEffect(() => {\n const fetchAndConvert = async () => {\n setIsLoading(true);\n setHasError(false);\n\n // If src is already a base64 string, use it directly\n if (isBase64Image(src)) {\n setBase64Src(src);\n setIsLoading(false);\n return;\n }\n\n try {\n // TODO: Find a better way of doing this\n // If url is from strapi-ai-staging.s3.us-east-1.amazonaws.com or strapi-ai-production.s3.us-east-1.amazonaws.com, use it directly\n const url = new URL(src);\n const allowedDomains = [\n 'strapi-ai-staging.s3.us-east-1.amazonaws.com',\n 'strapi-ai-production.s3.us-east-1.amazonaws.com',\n ];\n\n if (allowedDomains.includes(url.hostname)) {\n setBase64Src(src);\n setIsLoading(false);\n return;\n }\n } catch (e) {\n // If URL parsing fails, continue with the fetch attempt\n }\n\n try {\n // Only fetch if it's a URL and not already a base64 string\n const response = await fetch(src);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const blob = await response.blob();\n const dataUrl = await blobToBase64(blob);\n setBase64Src(dataUrl as string);\n setIsLoading(false);\n } catch (error) {\n console.error('Error converting image to base64:', error);\n setHasError(true);\n setIsLoading(false);\n }\n };\n\n fetchAndConvert();\n }, [src, externalOnError]);\n\n const handleImageLoad = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (inferSize) {\n const { naturalWidth, naturalHeight } = e.currentTarget;\n setDimensions({ width: naturalWidth, height: naturalHeight });\n }\n\n if (externalOnLoad) {\n externalOnLoad(e);\n }\n };\n\n if (isLoading) {\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"center\" width=\"100%\">\n <Loader small />\n </Flex>\n );\n }\n\n if (hasError) {\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"center\" width=\"100%\">\n <CrossCircle width={24} height={24} fill=\"danger600\" />\n </Flex>\n );\n }\n\n // Build props for the img element\n const imgProps: ImgHTMLAttributes<HTMLImageElement> = {\n src: base64Src || '',\n alt,\n onLoad: handleImageLoad,\n ...rest,\n };\n\n // If inferSize is enabled and width/height weren't explicitly provided,\n // merge the inferred dimensions into the props once available.\n if (inferSize && !rest.width && !rest.height && dimensions.width && dimensions.height) {\n imgProps.width = dimensions.width;\n imgProps.height = dimensions.height;\n }\n\n return base64Src ? <img {...imgProps} /> : null;\n};\n"],"names":["blobToBase64","blob","Promise","resolve","reject","reader","FileReader","onloadend","result","onerror","readAsDataURL","isBase64Image","src","startsWith","Base64Img","alt","inferSize","onLoad","externalOnLoad","onError","externalOnError","rest","base64Src","setBase64Src","useState","dimensions","setDimensions","isLoading","setIsLoading","hasError","setHasError","useEffect","fetchAndConvert","url","URL","allowedDomains","includes","hostname","e","response","fetch","ok","Error","status","dataUrl","error","console","handleImageLoad","naturalWidth","naturalHeight","currentTarget","width","height","_jsx","Flex","direction","gap","alignItems","Loader","small","CrossCircle","fill","imgProps","img"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base64Image.mjs","sources":["../../../../../admin/src/components/AIChat/components/Base64Image.tsx"],"sourcesContent":["import { useState, useEffect, ImgHTMLAttributes } from 'react';\n\nimport { Flex, Loader } from '@strapi/design-system';\nimport { CrossCircle } from '@strapi/icons';\n\nconst blobToBase64 = (blob: Blob): Promise<string | ArrayBuffer | null> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n};\n\n// Check if a string is already a data URL (base64 image)\nconst isBase64Image = (src: string): boolean => {\n return src.startsWith('data:image/');\n};\n\ninterface Base64ImgProps extends ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n inferSize?: boolean;\n onLoad?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n onError?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n}\n\nexport const Base64Img: React.FC<Base64ImgProps> = ({\n src,\n alt,\n inferSize = false,\n onLoad: externalOnLoad,\n onError: externalOnError,\n ...rest\n}) => {\n const [base64Src, setBase64Src] = useState<string | null>(null);\n const [dimensions, setDimensions] = useState<{ width?: number; height?: number }>({});\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n\n useEffect(() => {\n const fetchAndConvert = async () => {\n setIsLoading(true);\n setHasError(false);\n\n // If src is already a base64 string, use it directly\n if (isBase64Image(src)) {\n setBase64Src(src);\n setIsLoading(false);\n return;\n }\n\n try {\n // TODO: Find a better way of doing this\n // If url is from strapi-ai-staging.s3.us-east-1.amazonaws.com or strapi-ai-production.s3.us-east-1.amazonaws.com, use it directly\n const url = new URL(src);\n const allowedDomains = [\n 'strapi-ai-staging.s3.us-east-1.amazonaws.com',\n 'strapi-ai-production.s3.us-east-1.amazonaws.com',\n ];\n\n if (allowedDomains.includes(url.hostname)) {\n setBase64Src(src);\n setIsLoading(false);\n return;\n }\n } catch (e) {\n // If URL parsing fails, continue with the fetch attempt\n }\n\n try {\n // Only fetch if it's a URL and not already a base64 string\n const response = await fetch(src);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const blob = await response.blob();\n const dataUrl = await blobToBase64(blob);\n setBase64Src(dataUrl as string);\n setIsLoading(false);\n } catch (error) {\n console.error('Error converting image to base64:', error);\n setHasError(true);\n setIsLoading(false);\n }\n };\n\n fetchAndConvert();\n }, [src, externalOnError]);\n\n const handleImageLoad = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (inferSize) {\n const { naturalWidth, naturalHeight } = e.currentTarget;\n setDimensions({ width: naturalWidth, height: naturalHeight });\n }\n\n if (externalOnLoad) {\n externalOnLoad(e);\n }\n };\n\n if (isLoading) {\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"center\" width=\"100%\">\n <Loader small />\n </Flex>\n );\n }\n\n if (hasError) {\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"center\" width=\"100%\">\n <CrossCircle width={24} height={24} fill=\"danger600\" />\n </Flex>\n );\n }\n\n // Build props for the img element\n const imgProps: ImgHTMLAttributes<HTMLImageElement> = {\n src: base64Src || '',\n alt,\n onLoad: handleImageLoad,\n ...rest,\n };\n\n // If inferSize is enabled and width/height weren't explicitly provided,\n // merge the inferred dimensions into the props once available.\n if (inferSize && !rest.width && !rest.height && dimensions.width && dimensions.height) {\n imgProps.width = dimensions.width;\n imgProps.height = dimensions.height;\n }\n\n return base64Src ? <img {...imgProps} /> : null;\n};\n"],"names":["blobToBase64","blob","Promise","resolve","reject","reader","FileReader","onloadend","result","onerror","readAsDataURL","isBase64Image","src","startsWith","Base64Img","alt","inferSize","onLoad","externalOnLoad","onError","externalOnError","rest","base64Src","setBase64Src","useState","dimensions","setDimensions","isLoading","setIsLoading","hasError","setHasError","useEffect","fetchAndConvert","url","URL","allowedDomains","includes","hostname","e","response","fetch","ok","Error","status","dataUrl","error","console","handleImageLoad","naturalWidth","naturalHeight","currentTarget","width","height","_jsx","Flex","direction","gap","alignItems","Loader","small","CrossCircle","fill","imgProps","img"],"mappings":";;;;;AAKA,MAAMA,eAAe,CAACC,IAAAA,GAAAA;IACpB,OAAO,IAAIC,
|
|
1
|
+
{"version":3,"file":"Base64Image.mjs","sources":["../../../../../admin/src/components/AIChat/components/Base64Image.tsx"],"sourcesContent":["import { useState, useEffect, ImgHTMLAttributes } from 'react';\n\nimport { Flex, Loader } from '@strapi/design-system';\nimport { CrossCircle } from '@strapi/icons';\n\nconst blobToBase64 = (blob: Blob): Promise<string | ArrayBuffer | null> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n};\n\n// Check if a string is already a data URL (base64 image)\nconst isBase64Image = (src: string): boolean => {\n return src.startsWith('data:image/');\n};\n\ninterface Base64ImgProps extends ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n inferSize?: boolean;\n onLoad?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n onError?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n}\n\nexport const Base64Img: React.FC<Base64ImgProps> = ({\n src,\n alt,\n inferSize = false,\n onLoad: externalOnLoad,\n onError: externalOnError,\n ...rest\n}) => {\n const [base64Src, setBase64Src] = useState<string | null>(null);\n const [dimensions, setDimensions] = useState<{ width?: number; height?: number }>({});\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n\n useEffect(() => {\n const fetchAndConvert = async () => {\n setIsLoading(true);\n setHasError(false);\n\n // If src is already a base64 string, use it directly\n if (isBase64Image(src)) {\n setBase64Src(src);\n setIsLoading(false);\n return;\n }\n\n try {\n // TODO: Find a better way of doing this\n // If url is from strapi-ai-staging.s3.us-east-1.amazonaws.com or strapi-ai-production.s3.us-east-1.amazonaws.com, use it directly\n const url = new URL(src);\n const allowedDomains = [\n 'strapi-ai-staging.s3.us-east-1.amazonaws.com',\n 'strapi-ai-production.s3.us-east-1.amazonaws.com',\n ];\n\n if (allowedDomains.includes(url.hostname)) {\n setBase64Src(src);\n setIsLoading(false);\n return;\n }\n } catch (e) {\n // If URL parsing fails, continue with the fetch attempt\n }\n\n try {\n // Only fetch if it's a URL and not already a base64 string\n const response = await fetch(src);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const blob = await response.blob();\n const dataUrl = await blobToBase64(blob);\n setBase64Src(dataUrl as string);\n setIsLoading(false);\n } catch (error) {\n console.error('Error converting image to base64:', error);\n setHasError(true);\n setIsLoading(false);\n }\n };\n\n fetchAndConvert();\n }, [src, externalOnError]);\n\n const handleImageLoad = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (inferSize) {\n const { naturalWidth, naturalHeight } = e.currentTarget;\n setDimensions({ width: naturalWidth, height: naturalHeight });\n }\n\n if (externalOnLoad) {\n externalOnLoad(e);\n }\n };\n\n if (isLoading) {\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"center\" width=\"100%\">\n <Loader small />\n </Flex>\n );\n }\n\n if (hasError) {\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"center\" width=\"100%\">\n <CrossCircle width={24} height={24} fill=\"danger600\" />\n </Flex>\n );\n }\n\n // Build props for the img element\n const imgProps: ImgHTMLAttributes<HTMLImageElement> = {\n src: base64Src || '',\n alt,\n onLoad: handleImageLoad,\n ...rest,\n };\n\n // If inferSize is enabled and width/height weren't explicitly provided,\n // merge the inferred dimensions into the props once available.\n if (inferSize && !rest.width && !rest.height && dimensions.width && dimensions.height) {\n imgProps.width = dimensions.width;\n imgProps.height = dimensions.height;\n }\n\n return base64Src ? <img {...imgProps} /> : null;\n};\n"],"names":["blobToBase64","blob","Promise","resolve","reject","reader","FileReader","onloadend","result","onerror","readAsDataURL","isBase64Image","src","startsWith","Base64Img","alt","inferSize","onLoad","externalOnLoad","onError","externalOnError","rest","base64Src","setBase64Src","useState","dimensions","setDimensions","isLoading","setIsLoading","hasError","setHasError","useEffect","fetchAndConvert","url","URL","allowedDomains","includes","hostname","e","response","fetch","ok","Error","status","dataUrl","error","console","handleImageLoad","naturalWidth","naturalHeight","currentTarget","width","height","_jsx","Flex","direction","gap","alignItems","Loader","small","CrossCircle","fill","imgProps","img"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapsible.js","sources":["../../../../../admin/src/components/AIChat/components/Collapsible.tsx"],"sourcesContent":["import { useState, createContext, useContext, useRef, useLayoutEffect } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface CollapsibleContextValue {\n open: boolean;\n toggle: () => void;\n}\n\nconst CollapsibleContext = createContext<CollapsibleContextValue | undefined>(undefined);\n\nexport const useCollapsible = () => {\n const context = useContext(CollapsibleContext);\n if (!context) {\n throw new Error('Collapsible components must be wrapped in <Collapsible />');\n }\n return context;\n};\n\nconst AnimatedContent = styled(Box)`\n overflow: hidden;\n transition: height ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad};\n`;\n\nexport const Collapsible = ({\n children,\n defaultOpen = false,\n}: {\n children: React.ReactNode;\n defaultOpen?: boolean;\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n return (\n <CollapsibleContext.Provider value={{ open, toggle: () => setOpen((prev) => !prev) }}>\n {children}\n </CollapsibleContext.Provider>\n );\n};\n\nexport const CollapsibleTrigger = ({\n children,\n}: {\n children: React.ReactNode | ((props: { open: boolean }) => React.ReactNode);\n}) => {\n const { toggle, open } = useCollapsible();\n return (\n <Box onClick={toggle} style={{ cursor: 'pointer' }}>\n {typeof children === 'function' ? children({ open }) : children}\n </Box>\n );\n};\n\nexport const CollapsibleContent = ({ children }: { children: React.ReactNode }) => {\n const { open } = useCollapsible();\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number>(0);\n\n useLayoutEffect(() => {\n if (contentRef.current) {\n const contentHeight = contentRef.current.scrollHeight;\n setHeight(contentHeight);\n }\n }, [children]);\n\n return (\n <AnimatedContent\n ref={contentRef}\n role=\"region\"\n aria-hidden={!open}\n style={{\n height: open ? `${height}px` : 0,\n visibility: height === 0 ? 'hidden' : 'visible',\n }}\n >\n {children}\n </AnimatedContent>\n );\n};\n"],"names":["CollapsibleContext","createContext","undefined","useCollapsible","context","useContext","Error","AnimatedContent","styled","Box","theme","motion","timings","easings","easeOutQuad","Collapsible","children","defaultOpen","open","setOpen","useState","_jsx","Provider","value","toggle","prev","CollapsibleTrigger","onClick","style","cursor","CollapsibleContent","contentRef","useRef","height","setHeight","useLayoutEffect","current","contentHeight","scrollHeight","ref","role","aria-hidden","visibility"],"mappings":";;;;;;;AAUA,MAAMA,mCAAqBC,
|
|
1
|
+
{"version":3,"file":"Collapsible.js","sources":["../../../../../admin/src/components/AIChat/components/Collapsible.tsx"],"sourcesContent":["import { useState, createContext, useContext, useRef, useLayoutEffect } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface CollapsibleContextValue {\n open: boolean;\n toggle: () => void;\n}\n\nconst CollapsibleContext = createContext<CollapsibleContextValue | undefined>(undefined);\n\nexport const useCollapsible = () => {\n const context = useContext(CollapsibleContext);\n if (!context) {\n throw new Error('Collapsible components must be wrapped in <Collapsible />');\n }\n return context;\n};\n\nconst AnimatedContent = styled(Box)`\n overflow: hidden;\n transition: height ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad};\n`;\n\nexport const Collapsible = ({\n children,\n defaultOpen = false,\n}: {\n children: React.ReactNode;\n defaultOpen?: boolean;\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n return (\n <CollapsibleContext.Provider value={{ open, toggle: () => setOpen((prev) => !prev) }}>\n {children}\n </CollapsibleContext.Provider>\n );\n};\n\nexport const CollapsibleTrigger = ({\n children,\n}: {\n children: React.ReactNode | ((props: { open: boolean }) => React.ReactNode);\n}) => {\n const { toggle, open } = useCollapsible();\n return (\n <Box onClick={toggle} style={{ cursor: 'pointer' }}>\n {typeof children === 'function' ? children({ open }) : children}\n </Box>\n );\n};\n\nexport const CollapsibleContent = ({ children }: { children: React.ReactNode }) => {\n const { open } = useCollapsible();\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number>(0);\n\n useLayoutEffect(() => {\n if (contentRef.current) {\n const contentHeight = contentRef.current.scrollHeight;\n setHeight(contentHeight);\n }\n }, [children]);\n\n return (\n <AnimatedContent\n ref={contentRef}\n role=\"region\"\n aria-hidden={!open}\n style={{\n height: open ? `${height}px` : 0,\n visibility: height === 0 ? 'hidden' : 'visible',\n }}\n >\n {children}\n </AnimatedContent>\n );\n};\n"],"names":["CollapsibleContext","createContext","undefined","useCollapsible","context","useContext","Error","AnimatedContent","styled","Box","theme","motion","timings","easings","easeOutQuad","Collapsible","children","defaultOpen","open","setOpen","useState","_jsx","Provider","value","toggle","prev","CollapsibleTrigger","onClick","style","cursor","CollapsibleContent","contentRef","useRef","height","setHeight","useLayoutEffect","current","contentHeight","scrollHeight","ref","role","aria-hidden","visibility"],"mappings":";;;;;;;AAUA,MAAMA,mCAAqBC,mBAAAA,CAAmDC,SAAAA,CAAAA;MAEjEC,cAAAA,GAAiB,IAAA;AAC5B,IAAA,MAAMC,UAAUC,gBAAAA,CAAWL,kBAAAA,CAAAA;AAC3B,IAAA,IAAI,CAACI,OAAAA,EAAS;AACZ,QAAA,MAAM,IAAIE,KAAAA,CAAM,2DAAA,CAAA;AAClB,IAAA;IACA,OAAOF,OAAAA;AACT;AAEA,MAAMG,eAAAA,GAAkBC,uBAAAA,CAAOC,gBAAAA,CAAI;;qBAEd,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,OAAO,CAAC,KAAA,CAAM;IAC7D,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACE,OAAO,CAACC,WAAW,CAAC;AACtD,CAAC;AAEM,MAAMC,cAAc,CAAC,EAC1BC,QAAQ,EACRC,WAAAA,GAAc,KAAK,EAIpB,GAAA;AACC,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,cAAAA,CAASH,WAAAA,CAAAA;IACjC,qBACEI,cAAA,CAACrB,mBAAmBsB,QAAQ,EAAA;QAACC,KAAAA,EAAO;AAAEL,YAAAA,IAAAA;AAAMM,YAAAA,MAAAA,EAAQ,IAAML,OAAAA,CAAQ,CAACM,IAAAA,GAAS,CAACA,IAAAA;AAAM,SAAA;AAChFT,QAAAA,QAAAA,EAAAA;;AAGP;AAEO,MAAMU,kBAAAA,GAAqB,CAAC,EACjCV,QAAQ,EAGT,GAAA;AACC,IAAA,MAAM,EAAEQ,MAAM,EAAEN,IAAI,EAAE,GAAGf,cAAAA,EAAAA;AACzB,IAAA,qBACEkB,cAAA,CAACZ,gBAAAA,EAAAA;QAAIkB,OAAAA,EAASH,MAAAA;QAAQI,KAAAA,EAAO;YAAEC,MAAAA,EAAQ;AAAU,SAAA;kBAC9C,OAAOb,QAAAA,KAAa,aAAaA,QAAAA,CAAS;AAAEE,YAAAA;SAAK,CAAA,GAAKF;;AAG7D;AAEO,MAAMc,kBAAAA,GAAqB,CAAC,EAAEd,QAAQ,EAAiC,GAAA;IAC5E,MAAM,EAAEE,IAAI,EAAE,GAAGf,cAAAA,EAAAA;AACjB,IAAA,MAAM4B,aAAaC,YAAAA,CAAuB,IAAA,CAAA;AAC1C,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGd,cAAAA,CAAiB,CAAA,CAAA;IAE7Ce,qBAAAA,CAAgB,IAAA;QACd,IAAIJ,UAAAA,CAAWK,OAAO,EAAE;AACtB,YAAA,MAAMC,aAAAA,GAAgBN,UAAAA,CAAWK,OAAO,CAACE,YAAY;YACrDJ,SAAAA,CAAUG,aAAAA,CAAAA;AACZ,QAAA;IACF,CAAA,EAAG;AAACrB,QAAAA;AAAS,KAAA,CAAA;AAEb,IAAA,qBACEK,cAAA,CAACd,eAAAA,EAAAA;QACCgC,GAAAA,EAAKR,UAAAA;QACLS,IAAAA,EAAK,QAAA;AACLC,QAAAA,aAAAA,EAAa,CAACvB,IAAAA;QACdU,KAAAA,EAAO;AACLK,YAAAA,MAAAA,EAAQf,IAAAA,GAAO,CAAA,EAAGe,MAAAA,CAAO,EAAE,CAAC,GAAG,CAAA;YAC/BS,UAAAA,EAAYT,MAAAA,KAAW,IAAI,QAAA,GAAW;AACxC,SAAA;AAECjB,QAAAA,QAAAA,EAAAA;;AAGP;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapsible.mjs","sources":["../../../../../admin/src/components/AIChat/components/Collapsible.tsx"],"sourcesContent":["import { useState, createContext, useContext, useRef, useLayoutEffect } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface CollapsibleContextValue {\n open: boolean;\n toggle: () => void;\n}\n\nconst CollapsibleContext = createContext<CollapsibleContextValue | undefined>(undefined);\n\nexport const useCollapsible = () => {\n const context = useContext(CollapsibleContext);\n if (!context) {\n throw new Error('Collapsible components must be wrapped in <Collapsible />');\n }\n return context;\n};\n\nconst AnimatedContent = styled(Box)`\n overflow: hidden;\n transition: height ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad};\n`;\n\nexport const Collapsible = ({\n children,\n defaultOpen = false,\n}: {\n children: React.ReactNode;\n defaultOpen?: boolean;\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n return (\n <CollapsibleContext.Provider value={{ open, toggle: () => setOpen((prev) => !prev) }}>\n {children}\n </CollapsibleContext.Provider>\n );\n};\n\nexport const CollapsibleTrigger = ({\n children,\n}: {\n children: React.ReactNode | ((props: { open: boolean }) => React.ReactNode);\n}) => {\n const { toggle, open } = useCollapsible();\n return (\n <Box onClick={toggle} style={{ cursor: 'pointer' }}>\n {typeof children === 'function' ? children({ open }) : children}\n </Box>\n );\n};\n\nexport const CollapsibleContent = ({ children }: { children: React.ReactNode }) => {\n const { open } = useCollapsible();\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number>(0);\n\n useLayoutEffect(() => {\n if (contentRef.current) {\n const contentHeight = contentRef.current.scrollHeight;\n setHeight(contentHeight);\n }\n }, [children]);\n\n return (\n <AnimatedContent\n ref={contentRef}\n role=\"region\"\n aria-hidden={!open}\n style={{\n height: open ? `${height}px` : 0,\n visibility: height === 0 ? 'hidden' : 'visible',\n }}\n >\n {children}\n </AnimatedContent>\n );\n};\n"],"names":["CollapsibleContext","createContext","undefined","useCollapsible","context","useContext","Error","AnimatedContent","styled","Box","theme","motion","timings","easings","easeOutQuad","Collapsible","children","defaultOpen","open","setOpen","useState","_jsx","Provider","value","toggle","prev","CollapsibleTrigger","onClick","style","cursor","CollapsibleContent","contentRef","useRef","height","setHeight","useLayoutEffect","current","contentHeight","scrollHeight","ref","role","aria-hidden","visibility"],"mappings":";;;;;AAUA,MAAMA,mCAAqBC,
|
|
1
|
+
{"version":3,"file":"Collapsible.mjs","sources":["../../../../../admin/src/components/AIChat/components/Collapsible.tsx"],"sourcesContent":["import { useState, createContext, useContext, useRef, useLayoutEffect } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface CollapsibleContextValue {\n open: boolean;\n toggle: () => void;\n}\n\nconst CollapsibleContext = createContext<CollapsibleContextValue | undefined>(undefined);\n\nexport const useCollapsible = () => {\n const context = useContext(CollapsibleContext);\n if (!context) {\n throw new Error('Collapsible components must be wrapped in <Collapsible />');\n }\n return context;\n};\n\nconst AnimatedContent = styled(Box)`\n overflow: hidden;\n transition: height ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad};\n`;\n\nexport const Collapsible = ({\n children,\n defaultOpen = false,\n}: {\n children: React.ReactNode;\n defaultOpen?: boolean;\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n return (\n <CollapsibleContext.Provider value={{ open, toggle: () => setOpen((prev) => !prev) }}>\n {children}\n </CollapsibleContext.Provider>\n );\n};\n\nexport const CollapsibleTrigger = ({\n children,\n}: {\n children: React.ReactNode | ((props: { open: boolean }) => React.ReactNode);\n}) => {\n const { toggle, open } = useCollapsible();\n return (\n <Box onClick={toggle} style={{ cursor: 'pointer' }}>\n {typeof children === 'function' ? children({ open }) : children}\n </Box>\n );\n};\n\nexport const CollapsibleContent = ({ children }: { children: React.ReactNode }) => {\n const { open } = useCollapsible();\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number>(0);\n\n useLayoutEffect(() => {\n if (contentRef.current) {\n const contentHeight = contentRef.current.scrollHeight;\n setHeight(contentHeight);\n }\n }, [children]);\n\n return (\n <AnimatedContent\n ref={contentRef}\n role=\"region\"\n aria-hidden={!open}\n style={{\n height: open ? `${height}px` : 0,\n visibility: height === 0 ? 'hidden' : 'visible',\n }}\n >\n {children}\n </AnimatedContent>\n );\n};\n"],"names":["CollapsibleContext","createContext","undefined","useCollapsible","context","useContext","Error","AnimatedContent","styled","Box","theme","motion","timings","easings","easeOutQuad","Collapsible","children","defaultOpen","open","setOpen","useState","_jsx","Provider","value","toggle","prev","CollapsibleTrigger","onClick","style","cursor","CollapsibleContent","contentRef","useRef","height","setHeight","useLayoutEffect","current","contentHeight","scrollHeight","ref","role","aria-hidden","visibility"],"mappings":";;;;;AAUA,MAAMA,mCAAqBC,aAAAA,CAAmDC,SAAAA,CAAAA;MAEjEC,cAAAA,GAAiB,IAAA;AAC5B,IAAA,MAAMC,UAAUC,UAAAA,CAAWL,kBAAAA,CAAAA;AAC3B,IAAA,IAAI,CAACI,OAAAA,EAAS;AACZ,QAAA,MAAM,IAAIE,KAAAA,CAAM,2DAAA,CAAA;AAClB,IAAA;IACA,OAAOF,OAAAA;AACT;AAEA,MAAMG,eAAAA,GAAkBC,MAAAA,CAAOC,GAAAA,CAAI;;qBAEd,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,OAAO,CAAC,KAAA,CAAM;IAC7D,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACE,OAAO,CAACC,WAAW,CAAC;AACtD,CAAC;AAEM,MAAMC,cAAc,CAAC,EAC1BC,QAAQ,EACRC,WAAAA,GAAc,KAAK,EAIpB,GAAA;AACC,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,QAAAA,CAASH,WAAAA,CAAAA;IACjC,qBACEI,GAAA,CAACrB,mBAAmBsB,QAAQ,EAAA;QAACC,KAAAA,EAAO;AAAEL,YAAAA,IAAAA;AAAMM,YAAAA,MAAAA,EAAQ,IAAML,OAAAA,CAAQ,CAACM,IAAAA,GAAS,CAACA,IAAAA;AAAM,SAAA;AAChFT,QAAAA,QAAAA,EAAAA;;AAGP;AAEO,MAAMU,kBAAAA,GAAqB,CAAC,EACjCV,QAAQ,EAGT,GAAA;AACC,IAAA,MAAM,EAAEQ,MAAM,EAAEN,IAAI,EAAE,GAAGf,cAAAA,EAAAA;AACzB,IAAA,qBACEkB,GAAA,CAACZ,GAAAA,EAAAA;QAAIkB,OAAAA,EAASH,MAAAA;QAAQI,KAAAA,EAAO;YAAEC,MAAAA,EAAQ;AAAU,SAAA;kBAC9C,OAAOb,QAAAA,KAAa,aAAaA,QAAAA,CAAS;AAAEE,YAAAA;SAAK,CAAA,GAAKF;;AAG7D;AAEO,MAAMc,kBAAAA,GAAqB,CAAC,EAAEd,QAAQ,EAAiC,GAAA;IAC5E,MAAM,EAAEE,IAAI,EAAE,GAAGf,cAAAA,EAAAA;AACjB,IAAA,MAAM4B,aAAaC,MAAAA,CAAuB,IAAA,CAAA;AAC1C,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGd,QAAAA,CAAiB,CAAA,CAAA;IAE7Ce,eAAAA,CAAgB,IAAA;QACd,IAAIJ,UAAAA,CAAWK,OAAO,EAAE;AACtB,YAAA,MAAMC,aAAAA,GAAgBN,UAAAA,CAAWK,OAAO,CAACE,YAAY;YACrDJ,SAAAA,CAAUG,aAAAA,CAAAA;AACZ,QAAA;IACF,CAAA,EAAG;AAACrB,QAAAA;AAAS,KAAA,CAAA;AAEb,IAAA,qBACEK,GAAA,CAACd,eAAAA,EAAAA;QACCgC,GAAAA,EAAKR,UAAAA;QACLS,IAAAA,EAAK,QAAA;AACLC,QAAAA,aAAAA,EAAa,CAACvB,IAAAA;QACdU,KAAAA,EAAO;AACLK,YAAAA,MAAAA,EAAQf,IAAAA,GAAO,CAAA,EAAGe,MAAAA,CAAO,EAAE,CAAC,GAAG,CAAA;YAC/BS,UAAAA,EAAYT,MAAAA,KAAW,IAAI,QAAA,GAAW;AACxC,SAAA;AAECjB,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
|
|
@@ -47,9 +47,7 @@ const Root = ({ children, isEnabled = true, onAddFiles = ()=>{}, accept = {
|
|
|
47
47
|
// Use clipboard paste hook for handling clipboard events
|
|
48
48
|
useClipboardPasteImages({
|
|
49
49
|
onAddFiles,
|
|
50
|
-
isEnabled
|
|
51
|
-
accept
|
|
52
|
-
});
|
|
50
|
+
isEnabled});
|
|
53
51
|
// Use dropzone for drag and drop functionality
|
|
54
52
|
const { getRootProps, isDragActive } = reactDropzone.useDropzone({
|
|
55
53
|
onDrop: onAddFiles,
|
|
@@ -161,9 +159,7 @@ const Area = ({ error, title, ...props })=>{
|
|
|
161
159
|
* Dropzone Compound
|
|
162
160
|
* -----------------------------------------------------------------------------------------------*/ const Dropzone = {
|
|
163
161
|
Root,
|
|
164
|
-
Area
|
|
165
|
-
useDropzoneContext
|
|
166
|
-
};
|
|
162
|
+
Area};
|
|
167
163
|
|
|
168
164
|
exports.Dropzone = Dropzone;
|
|
169
165
|
exports.Root = Root;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropzone.js","sources":["../../../../../admin/src/components/AIChat/components/Dropzone.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect } from 'react';\n\nimport { Flex, Box, Typography } from '@strapi/design-system';\nimport { useDropzone } from 'react-dropzone';\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\ninterface UseClipboardPasteProps {\n onAddFiles: (files: File[]) => void;\n isEnabled?: boolean;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const useClipboardPasteImages = ({\n onAddFiles,\n isEnabled = false,\n}: UseClipboardPasteProps) => {\n const handlePaste = useCallback(\n async (e: ClipboardEvent) => {\n if (!isEnabled) return;\n // Try to get items from clipboard\n const items = e.clipboardData?.items;\n\n if (!items || items.length === 0) return;\n\n const files: File[] = [];\n\n // Process clipboard items\n for (const item of items) {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file && file.type.startsWith('image/')) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n onAddFiles(files);\n e.preventDefault(); // Prevent the default paste behavior\n }\n },\n [isEnabled, onAddFiles]\n );\n\n // Set up the paste event listener\n useEffect(() => {\n document.addEventListener('paste', handlePaste);\n return () => {\n document.removeEventListener('paste', handlePaste);\n };\n }, [handlePaste]);\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneContextValue {\n isEnabled?: boolean;\n isDragActive?: boolean;\n onAddFiles?: (files: File[]) => void;\n}\n\nconst DropzoneContext = createContext<DropzoneContextValue>({});\n\nexport const useDropzoneContext = () => useContext(DropzoneContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isEnabled?: boolean;\n onAddFiles?: (files: File[]) => void;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const Root = ({\n children,\n isEnabled = true,\n onAddFiles = () => {},\n accept = { 'image/*': [] },\n ...props\n}: DropzoneRootProps) => {\n // Use clipboard paste hook for handling clipboard events\n useClipboardPasteImages({ onAddFiles, isEnabled, accept });\n\n // Use dropzone for drag and drop functionality\n const { getRootProps, isDragActive } = useDropzone({\n onDrop: onAddFiles,\n noClick: true,\n noKeyboard: true,\n accept,\n });\n\n return (\n <DropzoneContext.Provider\n value={{\n isEnabled,\n isDragActive,\n onAddFiles,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n position=\"relative\"\n {...getRootProps()}\n {...props}\n >\n {children}\n </Flex>\n </DropzoneContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Area\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DropzoneAreaProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n error?: string | null;\n title?: string;\n}\n\nconst Area = ({ error, title, ...props }: DropzoneAreaProps) => {\n const { isEnabled, isDragActive } = useDropzoneContext();\n\n // If not dragging, don't render the dropzone area\n if (!isDragActive) {\n return null;\n }\n\n const displayTitle = title || 'Drop images here';\n\n return (\n <Flex\n position=\"absolute\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={2}\n cursor={isEnabled ? 'pointer' : 'not-allowed'}\n width=\"100%\"\n height=\"100%\"\n borderStyle=\"dashed\"\n borderColor={error ? 'danger600' : 'primary500'}\n background={error ? 'danger100' : 'primary100'}\n hasRadius\n padding={7}\n justifyContent=\"center\"\n direction=\"column\"\n alignItems=\"center\"\n gap={2}\n {...props}\n >\n <Box width=\"24px\" height=\"24px\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.5 13.572L12 6.072L4.5 13.572\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 6.072V20.072\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.9998 20.072H20.0001\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Box>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {displayTitle}\n </Typography>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger600\">\n {error}\n </Typography>\n )}\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Dropzone = {\n Root,\n Area,\n useDropzoneContext,\n};\n"],"names":["useClipboardPasteImages","onAddFiles","isEnabled","handlePaste","useCallback","e","items","clipboardData","length","files","item","kind","file","getAsFile","type","startsWith","push","preventDefault","useEffect","document","addEventListener","removeEventListener","DropzoneContext","createContext","useDropzoneContext","useContext","Root","children","accept","props","getRootProps","isDragActive","useDropzone","onDrop","noClick","noKeyboard","_jsx","Provider","value","Flex","direction","alignItems","width","position","Area","error","title","displayTitle","_jsxs","top","left","right","bottom","zIndex","cursor","height","borderStyle","borderColor","background","hasRadius","padding","justifyContent","gap","Box","svg","viewBox","fill","xmlns","path","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Typography","variant","textColor","textAlign","Dropzone"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dropzone.js","sources":["../../../../../admin/src/components/AIChat/components/Dropzone.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect } from 'react';\n\nimport { Flex, Box, Typography } from '@strapi/design-system';\nimport { useDropzone } from 'react-dropzone';\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\ninterface UseClipboardPasteProps {\n onAddFiles: (files: File[]) => void;\n isEnabled?: boolean;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const useClipboardPasteImages = ({\n onAddFiles,\n isEnabled = false,\n}: UseClipboardPasteProps) => {\n const handlePaste = useCallback(\n async (e: ClipboardEvent) => {\n if (!isEnabled) return;\n // Try to get items from clipboard\n const items = e.clipboardData?.items;\n\n if (!items || items.length === 0) return;\n\n const files: File[] = [];\n\n // Process clipboard items\n for (const item of items) {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file && file.type.startsWith('image/')) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n onAddFiles(files);\n e.preventDefault(); // Prevent the default paste behavior\n }\n },\n [isEnabled, onAddFiles]\n );\n\n // Set up the paste event listener\n useEffect(() => {\n document.addEventListener('paste', handlePaste);\n return () => {\n document.removeEventListener('paste', handlePaste);\n };\n }, [handlePaste]);\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneContextValue {\n isEnabled?: boolean;\n isDragActive?: boolean;\n onAddFiles?: (files: File[]) => void;\n}\n\nconst DropzoneContext = createContext<DropzoneContextValue>({});\n\nexport const useDropzoneContext = () => useContext(DropzoneContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isEnabled?: boolean;\n onAddFiles?: (files: File[]) => void;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const Root = ({\n children,\n isEnabled = true,\n onAddFiles = () => {},\n accept = { 'image/*': [] },\n ...props\n}: DropzoneRootProps) => {\n // Use clipboard paste hook for handling clipboard events\n useClipboardPasteImages({ onAddFiles, isEnabled, accept });\n\n // Use dropzone for drag and drop functionality\n const { getRootProps, isDragActive } = useDropzone({\n onDrop: onAddFiles,\n noClick: true,\n noKeyboard: true,\n accept,\n });\n\n return (\n <DropzoneContext.Provider\n value={{\n isEnabled,\n isDragActive,\n onAddFiles,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n position=\"relative\"\n {...getRootProps()}\n {...props}\n >\n {children}\n </Flex>\n </DropzoneContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Area\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DropzoneAreaProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n error?: string | null;\n title?: string;\n}\n\nconst Area = ({ error, title, ...props }: DropzoneAreaProps) => {\n const { isEnabled, isDragActive } = useDropzoneContext();\n\n // If not dragging, don't render the dropzone area\n if (!isDragActive) {\n return null;\n }\n\n const displayTitle = title || 'Drop images here';\n\n return (\n <Flex\n position=\"absolute\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={2}\n cursor={isEnabled ? 'pointer' : 'not-allowed'}\n width=\"100%\"\n height=\"100%\"\n borderStyle=\"dashed\"\n borderColor={error ? 'danger600' : 'primary500'}\n background={error ? 'danger100' : 'primary100'}\n hasRadius\n padding={7}\n justifyContent=\"center\"\n direction=\"column\"\n alignItems=\"center\"\n gap={2}\n {...props}\n >\n <Box width=\"24px\" height=\"24px\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.5 13.572L12 6.072L4.5 13.572\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 6.072V20.072\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.9998 20.072H20.0001\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Box>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {displayTitle}\n </Typography>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger600\">\n {error}\n </Typography>\n )}\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Dropzone = {\n Root,\n Area,\n useDropzoneContext,\n};\n"],"names":["useClipboardPasteImages","onAddFiles","isEnabled","handlePaste","useCallback","e","items","clipboardData","length","files","item","kind","file","getAsFile","type","startsWith","push","preventDefault","useEffect","document","addEventListener","removeEventListener","DropzoneContext","createContext","useDropzoneContext","useContext","Root","children","accept","props","getRootProps","isDragActive","useDropzone","onDrop","noClick","noKeyboard","_jsx","Provider","value","Flex","direction","alignItems","width","position","Area","error","title","displayTitle","_jsxs","top","left","right","bottom","zIndex","cursor","height","borderStyle","borderColor","background","hasRadius","padding","justifyContent","gap","Box","svg","viewBox","fill","xmlns","path","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Typography","variant","textColor","textAlign","Dropzone"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { useCallback, useEffect, createContext, useContext } from 'react';
|
|
3
3
|
import { Flex, Box, Typography } from '@strapi/design-system';
|
|
4
4
|
import { useDropzone } from 'react-dropzone';
|
|
5
5
|
|
|
@@ -45,9 +45,7 @@ const Root = ({ children, isEnabled = true, onAddFiles = ()=>{}, accept = {
|
|
|
45
45
|
// Use clipboard paste hook for handling clipboard events
|
|
46
46
|
useClipboardPasteImages({
|
|
47
47
|
onAddFiles,
|
|
48
|
-
isEnabled
|
|
49
|
-
accept
|
|
50
|
-
});
|
|
48
|
+
isEnabled});
|
|
51
49
|
// Use dropzone for drag and drop functionality
|
|
52
50
|
const { getRootProps, isDragActive } = useDropzone({
|
|
53
51
|
onDrop: onAddFiles,
|
|
@@ -159,9 +157,7 @@ const Area = ({ error, title, ...props })=>{
|
|
|
159
157
|
* Dropzone Compound
|
|
160
158
|
* -----------------------------------------------------------------------------------------------*/ const Dropzone = {
|
|
161
159
|
Root,
|
|
162
|
-
Area
|
|
163
|
-
useDropzoneContext
|
|
164
|
-
};
|
|
160
|
+
Area};
|
|
165
161
|
|
|
166
162
|
export { Dropzone, Root, useClipboardPasteImages, useDropzoneContext };
|
|
167
163
|
//# sourceMappingURL=Dropzone.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropzone.mjs","sources":["../../../../../admin/src/components/AIChat/components/Dropzone.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect } from 'react';\n\nimport { Flex, Box, Typography } from '@strapi/design-system';\nimport { useDropzone } from 'react-dropzone';\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\ninterface UseClipboardPasteProps {\n onAddFiles: (files: File[]) => void;\n isEnabled?: boolean;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const useClipboardPasteImages = ({\n onAddFiles,\n isEnabled = false,\n}: UseClipboardPasteProps) => {\n const handlePaste = useCallback(\n async (e: ClipboardEvent) => {\n if (!isEnabled) return;\n // Try to get items from clipboard\n const items = e.clipboardData?.items;\n\n if (!items || items.length === 0) return;\n\n const files: File[] = [];\n\n // Process clipboard items\n for (const item of items) {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file && file.type.startsWith('image/')) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n onAddFiles(files);\n e.preventDefault(); // Prevent the default paste behavior\n }\n },\n [isEnabled, onAddFiles]\n );\n\n // Set up the paste event listener\n useEffect(() => {\n document.addEventListener('paste', handlePaste);\n return () => {\n document.removeEventListener('paste', handlePaste);\n };\n }, [handlePaste]);\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneContextValue {\n isEnabled?: boolean;\n isDragActive?: boolean;\n onAddFiles?: (files: File[]) => void;\n}\n\nconst DropzoneContext = createContext<DropzoneContextValue>({});\n\nexport const useDropzoneContext = () => useContext(DropzoneContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isEnabled?: boolean;\n onAddFiles?: (files: File[]) => void;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const Root = ({\n children,\n isEnabled = true,\n onAddFiles = () => {},\n accept = { 'image/*': [] },\n ...props\n}: DropzoneRootProps) => {\n // Use clipboard paste hook for handling clipboard events\n useClipboardPasteImages({ onAddFiles, isEnabled, accept });\n\n // Use dropzone for drag and drop functionality\n const { getRootProps, isDragActive } = useDropzone({\n onDrop: onAddFiles,\n noClick: true,\n noKeyboard: true,\n accept,\n });\n\n return (\n <DropzoneContext.Provider\n value={{\n isEnabled,\n isDragActive,\n onAddFiles,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n position=\"relative\"\n {...getRootProps()}\n {...props}\n >\n {children}\n </Flex>\n </DropzoneContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Area\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DropzoneAreaProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n error?: string | null;\n title?: string;\n}\n\nconst Area = ({ error, title, ...props }: DropzoneAreaProps) => {\n const { isEnabled, isDragActive } = useDropzoneContext();\n\n // If not dragging, don't render the dropzone area\n if (!isDragActive) {\n return null;\n }\n\n const displayTitle = title || 'Drop images here';\n\n return (\n <Flex\n position=\"absolute\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={2}\n cursor={isEnabled ? 'pointer' : 'not-allowed'}\n width=\"100%\"\n height=\"100%\"\n borderStyle=\"dashed\"\n borderColor={error ? 'danger600' : 'primary500'}\n background={error ? 'danger100' : 'primary100'}\n hasRadius\n padding={7}\n justifyContent=\"center\"\n direction=\"column\"\n alignItems=\"center\"\n gap={2}\n {...props}\n >\n <Box width=\"24px\" height=\"24px\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.5 13.572L12 6.072L4.5 13.572\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 6.072V20.072\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.9998 20.072H20.0001\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Box>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {displayTitle}\n </Typography>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger600\">\n {error}\n </Typography>\n )}\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Dropzone = {\n Root,\n Area,\n useDropzoneContext,\n};\n"],"names":["useClipboardPasteImages","onAddFiles","isEnabled","handlePaste","useCallback","e","items","clipboardData","length","files","item","kind","file","getAsFile","type","startsWith","push","preventDefault","useEffect","document","addEventListener","removeEventListener","DropzoneContext","createContext","useDropzoneContext","useContext","Root","children","accept","props","getRootProps","isDragActive","useDropzone","onDrop","noClick","noKeyboard","_jsx","Provider","value","Flex","direction","alignItems","width","position","Area","error","title","displayTitle","_jsxs","top","left","right","bottom","zIndex","cursor","height","borderStyle","borderColor","background","hasRadius","padding","justifyContent","gap","Box","svg","viewBox","fill","xmlns","path","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Typography","variant","textColor","textAlign","Dropzone"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dropzone.mjs","sources":["../../../../../admin/src/components/AIChat/components/Dropzone.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect } from 'react';\n\nimport { Flex, Box, Typography } from '@strapi/design-system';\nimport { useDropzone } from 'react-dropzone';\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\ninterface UseClipboardPasteProps {\n onAddFiles: (files: File[]) => void;\n isEnabled?: boolean;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const useClipboardPasteImages = ({\n onAddFiles,\n isEnabled = false,\n}: UseClipboardPasteProps) => {\n const handlePaste = useCallback(\n async (e: ClipboardEvent) => {\n if (!isEnabled) return;\n // Try to get items from clipboard\n const items = e.clipboardData?.items;\n\n if (!items || items.length === 0) return;\n\n const files: File[] = [];\n\n // Process clipboard items\n for (const item of items) {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file && file.type.startsWith('image/')) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n onAddFiles(files);\n e.preventDefault(); // Prevent the default paste behavior\n }\n },\n [isEnabled, onAddFiles]\n );\n\n // Set up the paste event listener\n useEffect(() => {\n document.addEventListener('paste', handlePaste);\n return () => {\n document.removeEventListener('paste', handlePaste);\n };\n }, [handlePaste]);\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneContextValue {\n isEnabled?: boolean;\n isDragActive?: boolean;\n onAddFiles?: (files: File[]) => void;\n}\n\nconst DropzoneContext = createContext<DropzoneContextValue>({});\n\nexport const useDropzoneContext = () => useContext(DropzoneContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isEnabled?: boolean;\n onAddFiles?: (files: File[]) => void;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const Root = ({\n children,\n isEnabled = true,\n onAddFiles = () => {},\n accept = { 'image/*': [] },\n ...props\n}: DropzoneRootProps) => {\n // Use clipboard paste hook for handling clipboard events\n useClipboardPasteImages({ onAddFiles, isEnabled, accept });\n\n // Use dropzone for drag and drop functionality\n const { getRootProps, isDragActive } = useDropzone({\n onDrop: onAddFiles,\n noClick: true,\n noKeyboard: true,\n accept,\n });\n\n return (\n <DropzoneContext.Provider\n value={{\n isEnabled,\n isDragActive,\n onAddFiles,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n position=\"relative\"\n {...getRootProps()}\n {...props}\n >\n {children}\n </Flex>\n </DropzoneContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Area\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DropzoneAreaProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n error?: string | null;\n title?: string;\n}\n\nconst Area = ({ error, title, ...props }: DropzoneAreaProps) => {\n const { isEnabled, isDragActive } = useDropzoneContext();\n\n // If not dragging, don't render the dropzone area\n if (!isDragActive) {\n return null;\n }\n\n const displayTitle = title || 'Drop images here';\n\n return (\n <Flex\n position=\"absolute\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={2}\n cursor={isEnabled ? 'pointer' : 'not-allowed'}\n width=\"100%\"\n height=\"100%\"\n borderStyle=\"dashed\"\n borderColor={error ? 'danger600' : 'primary500'}\n background={error ? 'danger100' : 'primary100'}\n hasRadius\n padding={7}\n justifyContent=\"center\"\n direction=\"column\"\n alignItems=\"center\"\n gap={2}\n {...props}\n >\n <Box width=\"24px\" height=\"24px\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.5 13.572L12 6.072L4.5 13.572\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 6.072V20.072\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.9998 20.072H20.0001\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Box>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {displayTitle}\n </Typography>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger600\">\n {error}\n </Typography>\n )}\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Dropzone = {\n Root,\n Area,\n useDropzoneContext,\n};\n"],"names":["useClipboardPasteImages","onAddFiles","isEnabled","handlePaste","useCallback","e","items","clipboardData","length","files","item","kind","file","getAsFile","type","startsWith","push","preventDefault","useEffect","document","addEventListener","removeEventListener","DropzoneContext","createContext","useDropzoneContext","useContext","Root","children","accept","props","getRootProps","isDragActive","useDropzone","onDrop","noClick","noKeyboard","_jsx","Provider","value","Flex","direction","alignItems","width","position","Area","error","title","displayTitle","_jsxs","top","left","right","bottom","zIndex","cursor","height","borderStyle","borderColor","background","hasRadius","padding","justifyContent","gap","Box","svg","viewBox","fill","xmlns","path","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Typography","variant","textColor","textAlign","Dropzone"],"mappings":"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"}
|