@strapi/content-type-builder 5.25.0 → 5.26.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.
Files changed (328) hide show
  1. package/dist/admin/components/AIChat/Chat.js +431 -0
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -0
  3. package/dist/admin/components/AIChat/Chat.mjs +429 -0
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -0
  5. package/dist/admin/components/AIChat/FeedbackModal.js +237 -0
  6. package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -0
  7. package/dist/admin/components/AIChat/FeedbackModal.mjs +233 -0
  8. package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -0
  9. package/dist/admin/components/AIChat/UploadCodeModal.js +427 -0
  10. package/dist/admin/components/AIChat/UploadCodeModal.js.map +1 -0
  11. package/dist/admin/components/AIChat/UploadCodeModal.mjs +423 -0
  12. package/dist/admin/components/AIChat/UploadCodeModal.mjs.map +1 -0
  13. package/dist/admin/components/AIChat/UploadFigmaModal.js +377 -0
  14. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -0
  15. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +373 -0
  16. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -0
  17. package/dist/admin/components/AIChat/components/Alert.js +46 -0
  18. package/dist/admin/components/AIChat/components/Alert.js.map +1 -0
  19. package/dist/admin/components/AIChat/components/Alert.mjs +44 -0
  20. package/dist/admin/components/AIChat/components/Alert.mjs.map +1 -0
  21. package/dist/admin/components/AIChat/components/AnimatedBox.js +34 -0
  22. package/dist/admin/components/AIChat/components/AnimatedBox.js.map +1 -0
  23. package/dist/admin/components/AIChat/components/AnimatedBox.mjs +32 -0
  24. package/dist/admin/components/AIChat/components/AnimatedBox.mjs.map +1 -0
  25. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js +92 -0
  26. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js.map +1 -0
  27. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs +90 -0
  28. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs.map +1 -0
  29. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js +100 -0
  30. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js.map +1 -0
  31. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs +97 -0
  32. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs.map +1 -0
  33. package/dist/admin/components/AIChat/components/Base64Image.js +127 -0
  34. package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -0
  35. package/dist/admin/components/AIChat/components/Base64Image.mjs +125 -0
  36. package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -0
  37. package/dist/admin/components/AIChat/components/Collapsible.js +71 -0
  38. package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -0
  39. package/dist/admin/components/AIChat/components/Collapsible.mjs +66 -0
  40. package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -0
  41. package/dist/admin/components/AIChat/components/Dropzone.js +172 -0
  42. package/dist/admin/components/AIChat/components/Dropzone.js.map +1 -0
  43. package/dist/admin/components/AIChat/components/Dropzone.mjs +167 -0
  44. package/dist/admin/components/AIChat/components/Dropzone.mjs.map +1 -0
  45. package/dist/admin/components/AIChat/components/FloatingPanel.js +166 -0
  46. package/dist/admin/components/AIChat/components/FloatingPanel.js.map +1 -0
  47. package/dist/admin/components/AIChat/components/FloatingPanel.mjs +163 -0
  48. package/dist/admin/components/AIChat/components/FloatingPanel.mjs.map +1 -0
  49. package/dist/admin/components/AIChat/components/FullScreenImage.js +190 -0
  50. package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -0
  51. package/dist/admin/components/AIChat/components/FullScreenImage.mjs +187 -0
  52. package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -0
  53. package/dist/admin/components/AIChat/components/ImagePreview.js +87 -0
  54. package/dist/admin/components/AIChat/components/ImagePreview.js.map +1 -0
  55. package/dist/admin/components/AIChat/components/ImagePreview.mjs +85 -0
  56. package/dist/admin/components/AIChat/components/ImagePreview.mjs.map +1 -0
  57. package/dist/admin/components/AIChat/components/Input.js +126 -0
  58. package/dist/admin/components/AIChat/components/Input.js.map +1 -0
  59. package/dist/admin/components/AIChat/components/Input.mjs +121 -0
  60. package/dist/admin/components/AIChat/components/Input.mjs.map +1 -0
  61. package/dist/admin/components/AIChat/components/Messages/Marker.js +138 -0
  62. package/dist/admin/components/AIChat/components/Messages/Marker.js.map +1 -0
  63. package/dist/admin/components/AIChat/components/Messages/Marker.mjs +136 -0
  64. package/dist/admin/components/AIChat/components/Messages/Marker.mjs.map +1 -0
  65. package/dist/admin/components/AIChat/components/Messages/Message.js +214 -0
  66. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -0
  67. package/dist/admin/components/AIChat/components/Messages/Message.mjs +212 -0
  68. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -0
  69. package/dist/admin/components/AIChat/components/ResizableTextArea.js +78 -0
  70. package/dist/admin/components/AIChat/components/ResizableTextArea.js.map +1 -0
  71. package/dist/admin/components/AIChat/components/ResizableTextArea.mjs +76 -0
  72. package/dist/admin/components/AIChat/components/ResizableTextArea.mjs.map +1 -0
  73. package/dist/admin/components/AIChat/components/SimpleMenu.js +60 -0
  74. package/dist/admin/components/AIChat/components/SimpleMenu.js.map +1 -0
  75. package/dist/admin/components/AIChat/components/SimpleMenu.mjs +35 -0
  76. package/dist/admin/components/AIChat/components/SimpleMenu.mjs.map +1 -0
  77. package/dist/admin/components/AIChat/components/StepModal.js +175 -0
  78. package/dist/admin/components/AIChat/components/StepModal.js.map +1 -0
  79. package/dist/admin/components/AIChat/components/StepModal.mjs +171 -0
  80. package/dist/admin/components/AIChat/components/StepModal.mjs.map +1 -0
  81. package/dist/admin/components/AIChat/components/animations.js +67 -0
  82. package/dist/admin/components/AIChat/components/animations.js.map +1 -0
  83. package/dist/admin/components/AIChat/components/animations.mjs +65 -0
  84. package/dist/admin/components/AIChat/components/animations.mjs.map +1 -0
  85. package/dist/admin/components/AIChat/components/icons/FigmaIcon.js +50 -0
  86. package/dist/admin/components/AIChat/components/icons/FigmaIcon.js.map +1 -0
  87. package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs +48 -0
  88. package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs.map +1 -0
  89. package/dist/admin/components/AIChat/components/icons/StopIcon.js +25 -0
  90. package/dist/admin/components/AIChat/components/icons/StopIcon.js.map +1 -0
  91. package/dist/admin/components/AIChat/components/icons/StopIcon.mjs +23 -0
  92. package/dist/admin/components/AIChat/components/icons/StopIcon.mjs.map +1 -0
  93. package/dist/admin/components/AIChat/hooks/useAIFetch.js +107 -0
  94. package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -0
  95. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs +96 -0
  96. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -0
  97. package/dist/admin/components/AIChat/hooks/useAttachments.js +152 -0
  98. package/dist/admin/components/AIChat/hooks/useAttachments.js.map +1 -0
  99. package/dist/admin/components/AIChat/hooks/useAttachments.mjs +150 -0
  100. package/dist/admin/components/AIChat/hooks/useAttachments.mjs.map +1 -0
  101. package/dist/admin/components/AIChat/hooks/useChatTitle.js +47 -0
  102. package/dist/admin/components/AIChat/hooks/useChatTitle.js.map +1 -0
  103. package/dist/admin/components/AIChat/hooks/useChatTitle.mjs +45 -0
  104. package/dist/admin/components/AIChat/hooks/useChatTitle.mjs.map +1 -0
  105. package/dist/admin/components/AIChat/hooks/useCodeUpload.js +212 -0
  106. package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -0
  107. package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs +207 -0
  108. package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs.map +1 -0
  109. package/dist/admin/components/AIChat/hooks/useFeedback.js +76 -0
  110. package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -0
  111. package/dist/admin/components/AIChat/hooks/useFeedback.mjs +74 -0
  112. package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -0
  113. package/dist/admin/components/AIChat/hooks/useFigmaUpload.js +206 -0
  114. package/dist/admin/components/AIChat/hooks/useFigmaUpload.js.map +1 -0
  115. package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs +200 -0
  116. package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs.map +1 -0
  117. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js +115 -0
  118. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js.map +1 -0
  119. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs +113 -0
  120. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs.map +1 -0
  121. package/dist/admin/components/AIChat/hooks/useTranslations.js +19 -0
  122. package/dist/admin/components/AIChat/hooks/useTranslations.js.map +1 -0
  123. package/dist/admin/components/AIChat/hooks/useTranslations.mjs +17 -0
  124. package/dist/admin/components/AIChat/hooks/useTranslations.mjs.map +1 -0
  125. package/dist/admin/components/AIChat/lib/aiClient.js +168 -0
  126. package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -0
  127. package/dist/admin/components/AIChat/lib/aiClient.mjs +161 -0
  128. package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -0
  129. package/dist/admin/components/AIChat/lib/constants.js +16 -0
  130. package/dist/admin/components/AIChat/lib/constants.js.map +1 -0
  131. package/dist/admin/components/AIChat/lib/constants.mjs +10 -0
  132. package/dist/admin/components/AIChat/lib/constants.mjs.map +1 -0
  133. package/dist/admin/components/AIChat/lib/misc.js +8 -0
  134. package/dist/admin/components/AIChat/lib/misc.js.map +1 -0
  135. package/dist/admin/components/AIChat/lib/misc.mjs +6 -0
  136. package/dist/admin/components/AIChat/lib/misc.mjs.map +1 -0
  137. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +46 -0
  138. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -0
  139. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +44 -0
  140. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -0
  141. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +151 -0
  142. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -0
  143. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +148 -0
  144. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -0
  145. package/dist/admin/components/AIChat/providers/ChatProvider.js +191 -0
  146. package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -0
  147. package/dist/admin/components/AIChat/providers/ChatProvider.mjs +187 -0
  148. package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -0
  149. package/dist/admin/components/AIChat/providers/SchemaProvider.js +90 -0
  150. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -0
  151. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +88 -0
  152. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -0
  153. package/dist/admin/components/ComponentList.js +1 -0
  154. package/dist/admin/components/ComponentList.js.map +1 -1
  155. package/dist/admin/components/ComponentList.mjs +1 -0
  156. package/dist/admin/components/ComponentList.mjs.map +1 -1
  157. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  158. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  159. package/dist/admin/components/DataManager/reducer.js +48 -6
  160. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  161. package/dist/admin/components/DataManager/reducer.mjs +48 -6
  162. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  163. package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
  164. package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
  165. package/dist/admin/pages/App/index.js +60 -29
  166. package/dist/admin/pages/App/index.js.map +1 -1
  167. package/dist/admin/pages/App/index.mjs +62 -31
  168. package/dist/admin/pages/App/index.mjs.map +1 -1
  169. package/dist/admin/pages/ListView/EmptyState.js +75 -9
  170. package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
  171. package/dist/admin/pages/ListView/EmptyState.mjs +77 -11
  172. package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
  173. package/dist/admin/src/components/AIChat/Chat.d.ts +2 -0
  174. package/dist/admin/src/components/AIChat/FeedbackModal.d.ts +13 -0
  175. package/dist/admin/src/components/AIChat/UploadCodeModal.d.ts +12 -0
  176. package/dist/admin/src/components/AIChat/UploadFigmaModal.d.ts +12 -0
  177. package/dist/admin/src/components/AIChat/components/Alert.d.ts +6 -0
  178. package/dist/admin/src/components/AIChat/components/AnimatedBox.d.ts +13 -0
  179. package/dist/admin/src/components/AIChat/components/Attachments/AttachmentPreview.d.ts +9 -0
  180. package/dist/admin/src/components/AIChat/components/Attachments/components/Attachment.d.ts +27 -0
  181. package/dist/admin/src/components/AIChat/components/Base64Image.d.ts +9 -0
  182. package/dist/admin/src/components/AIChat/components/Collapsible.d.ts +18 -0
  183. package/dist/admin/src/components/AIChat/components/Dropzone.d.ts +35 -0
  184. package/dist/admin/src/components/AIChat/components/FloatingPanel.d.ts +34 -0
  185. package/dist/admin/src/components/AIChat/components/FullScreenImage.d.ts +20 -0
  186. package/dist/admin/src/components/AIChat/components/ImagePreview.d.ts +8 -0
  187. package/dist/admin/src/components/AIChat/components/ImagePreviewGroup.d.ts +7 -0
  188. package/dist/admin/src/components/AIChat/components/Input.d.ts +43 -0
  189. package/dist/admin/src/components/AIChat/components/Messages/Marker.d.ts +2 -0
  190. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +5 -0
  191. package/dist/admin/src/components/AIChat/components/ResizableTextArea.d.ts +9 -0
  192. package/dist/admin/src/components/AIChat/components/SimpleMenu.d.ts +32 -0
  193. package/dist/admin/src/components/AIChat/components/StepModal.d.ts +37 -0
  194. package/dist/admin/src/components/AIChat/components/animations.d.ts +8 -0
  195. package/dist/admin/src/components/AIChat/components/icons/FigmaIcon.d.ts +5 -0
  196. package/dist/admin/src/components/AIChat/components/icons/StopIcon.d.ts +5 -0
  197. package/dist/admin/src/components/AIChat/hooks/useAIFetch.d.ts +147 -0
  198. package/dist/admin/src/components/AIChat/hooks/useAttachments.d.ts +8 -0
  199. package/dist/admin/src/components/AIChat/hooks/useChatTitle.d.ts +13 -0
  200. package/dist/admin/src/components/AIChat/hooks/useCodeUpload.d.ts +31 -0
  201. package/dist/admin/src/components/AIChat/hooks/useFeedback.d.ts +7 -0
  202. package/dist/admin/src/components/AIChat/hooks/useFigmaUpload.d.ts +61 -0
  203. package/dist/admin/src/components/AIChat/hooks/useLastSeenSchemas.d.ts +10 -0
  204. package/dist/admin/src/components/AIChat/hooks/useTranslations.d.ts +3 -0
  205. package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +32 -0
  206. package/dist/admin/src/components/AIChat/lib/constants.d.ts +12 -0
  207. package/dist/admin/src/components/AIChat/lib/fileToAttachment.d.ts +2 -0
  208. package/dist/admin/src/components/AIChat/lib/misc.d.ts +1 -0
  209. package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +3 -0
  210. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +16 -0
  211. package/dist/admin/src/components/AIChat/lib/types/annotations.d.ts +19 -0
  212. package/dist/admin/src/components/AIChat/lib/types/attachments.d.ts +15 -0
  213. package/dist/admin/src/components/AIChat/lib/types/feedback.d.ts +1 -0
  214. package/dist/admin/src/components/AIChat/lib/types/messages.d.ts +26 -0
  215. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +20 -0
  216. package/dist/admin/src/components/AIChat/providers/ChatProvider.d.ts +30 -0
  217. package/dist/admin/src/components/AIChat/providers/SchemaProvider.d.ts +10 -0
  218. package/dist/admin/src/components/ComponentList.d.ts +1 -1
  219. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +1 -1
  220. package/dist/admin/translations/ar.json.js +187 -2
  221. package/dist/admin/translations/ar.json.js.map +1 -1
  222. package/dist/admin/translations/ar.json.mjs +187 -3
  223. package/dist/admin/translations/ar.json.mjs.map +1 -1
  224. package/dist/admin/translations/de.json.js +42 -7
  225. package/dist/admin/translations/de.json.js.map +1 -1
  226. package/dist/admin/translations/de.json.mjs +42 -7
  227. package/dist/admin/translations/de.json.mjs.map +1 -1
  228. package/dist/admin/translations/en.json.js +53 -2
  229. package/dist/admin/translations/en.json.js.map +1 -1
  230. package/dist/admin/translations/en.json.mjs +53 -2
  231. package/dist/admin/translations/en.json.mjs.map +1 -1
  232. package/dist/admin/translations/es.json.js +37 -15
  233. package/dist/admin/translations/es.json.js.map +1 -1
  234. package/dist/admin/translations/es.json.mjs +37 -15
  235. package/dist/admin/translations/es.json.mjs.map +1 -1
  236. package/dist/admin/translations/fr.json.js +165 -3
  237. package/dist/admin/translations/fr.json.js.map +1 -1
  238. package/dist/admin/translations/fr.json.mjs +165 -4
  239. package/dist/admin/translations/fr.json.mjs.map +1 -1
  240. package/dist/admin/translations/id.json.js +93 -23
  241. package/dist/admin/translations/id.json.js.map +1 -1
  242. package/dist/admin/translations/id.json.mjs +93 -23
  243. package/dist/admin/translations/id.json.mjs.map +1 -1
  244. package/dist/admin/translations/it.json.js +75 -6
  245. package/dist/admin/translations/it.json.js.map +1 -1
  246. package/dist/admin/translations/it.json.mjs +75 -6
  247. package/dist/admin/translations/it.json.mjs.map +1 -1
  248. package/dist/admin/translations/ja.json.js +191 -5
  249. package/dist/admin/translations/ja.json.js.map +1 -1
  250. package/dist/admin/translations/ja.json.mjs +191 -6
  251. package/dist/admin/translations/ja.json.mjs.map +1 -1
  252. package/dist/admin/translations/ko.json.js +70 -16
  253. package/dist/admin/translations/ko.json.js.map +1 -1
  254. package/dist/admin/translations/ko.json.mjs +70 -16
  255. package/dist/admin/translations/ko.json.mjs.map +1 -1
  256. package/dist/admin/translations/ms.json.js +104 -31
  257. package/dist/admin/translations/ms.json.js.map +1 -1
  258. package/dist/admin/translations/ms.json.mjs +104 -31
  259. package/dist/admin/translations/ms.json.mjs.map +1 -1
  260. package/dist/admin/translations/nl.json.js +95 -15
  261. package/dist/admin/translations/nl.json.js.map +1 -1
  262. package/dist/admin/translations/nl.json.mjs +95 -15
  263. package/dist/admin/translations/nl.json.mjs.map +1 -1
  264. package/dist/admin/translations/pl.json.js +55 -11
  265. package/dist/admin/translations/pl.json.js.map +1 -1
  266. package/dist/admin/translations/pl.json.mjs +55 -11
  267. package/dist/admin/translations/pl.json.mjs.map +1 -1
  268. package/dist/admin/translations/pt-BR.json.js +54 -10
  269. package/dist/admin/translations/pt-BR.json.js.map +1 -1
  270. package/dist/admin/translations/pt-BR.json.mjs +54 -10
  271. package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
  272. package/dist/admin/translations/pt.json.js +187 -2
  273. package/dist/admin/translations/pt.json.js.map +1 -1
  274. package/dist/admin/translations/pt.json.mjs +187 -3
  275. package/dist/admin/translations/pt.json.mjs.map +1 -1
  276. package/dist/admin/translations/ru.json.js +26 -1
  277. package/dist/admin/translations/ru.json.js.map +1 -1
  278. package/dist/admin/translations/ru.json.mjs +26 -1
  279. package/dist/admin/translations/ru.json.mjs.map +1 -1
  280. package/dist/admin/translations/sk.json.js +21 -1
  281. package/dist/admin/translations/sk.json.js.map +1 -1
  282. package/dist/admin/translations/sk.json.mjs +21 -1
  283. package/dist/admin/translations/sk.json.mjs.map +1 -1
  284. package/dist/admin/translations/sv.json.js +21 -1
  285. package/dist/admin/translations/sv.json.js.map +1 -1
  286. package/dist/admin/translations/sv.json.mjs +21 -1
  287. package/dist/admin/translations/sv.json.mjs.map +1 -1
  288. package/dist/admin/translations/th.json.js +21 -1
  289. package/dist/admin/translations/th.json.js.map +1 -1
  290. package/dist/admin/translations/th.json.mjs +21 -1
  291. package/dist/admin/translations/th.json.mjs.map +1 -1
  292. package/dist/admin/translations/tr.json.js +21 -1
  293. package/dist/admin/translations/tr.json.js.map +1 -1
  294. package/dist/admin/translations/tr.json.mjs +21 -1
  295. package/dist/admin/translations/tr.json.mjs.map +1 -1
  296. package/dist/admin/translations/uk.json.js +21 -2
  297. package/dist/admin/translations/uk.json.js.map +1 -1
  298. package/dist/admin/translations/uk.json.mjs +21 -2
  299. package/dist/admin/translations/uk.json.mjs.map +1 -1
  300. package/dist/admin/translations/zh-Hans.json.js +222 -133
  301. package/dist/admin/translations/zh-Hans.json.js.map +1 -1
  302. package/dist/admin/translations/zh-Hans.json.mjs +222 -133
  303. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
  304. package/dist/admin/translations/zh.json.js +21 -1
  305. package/dist/admin/translations/zh.json.js.map +1 -1
  306. package/dist/admin/translations/zh.json.mjs +21 -1
  307. package/dist/admin/translations/zh.json.mjs.map +1 -1
  308. package/dist/server/index.js +2 -0
  309. package/dist/server/index.js.map +1 -1
  310. package/dist/server/index.mjs +2 -0
  311. package/dist/server/index.mjs.map +1 -1
  312. package/dist/server/register.js +98 -0
  313. package/dist/server/register.js.map +1 -0
  314. package/dist/server/register.mjs +96 -0
  315. package/dist/server/register.mjs.map +1 -0
  316. package/dist/server/src/controllers/ai/auth.d.ts +1 -0
  317. package/dist/server/src/controllers/ai/auth.d.ts.map +1 -0
  318. package/dist/server/src/controllers/ai/index.d.ts +1 -0
  319. package/dist/server/src/controllers/ai/index.d.ts.map +1 -0
  320. package/dist/server/src/index.d.ts +1 -0
  321. package/dist/server/src/index.d.ts.map +1 -1
  322. package/dist/server/src/register.d.ts +11 -0
  323. package/dist/server/src/register.d.ts.map +1 -0
  324. package/package.json +12 -5
  325. package/dist/admin/components/DataManager/utils/formatSchemas.js +0 -21
  326. package/dist/admin/components/DataManager/utils/formatSchemas.js.map +0 -1
  327. package/dist/admin/components/DataManager/utils/formatSchemas.mjs +0 -18
  328. package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +0 -1
@@ -0,0 +1,190 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var reactDom = require('react-dom');
6
+ var styledComponents = require('styled-components');
7
+ var animations = require('./animations.js');
8
+ var Base64Image = require('./Base64Image.js');
9
+
10
+ const FullScreenImageContext = /*#__PURE__*/ React.createContext(undefined);
11
+ /* -------------------------------------------------------------------------------------------------
12
+ * Styles
13
+ * -----------------------------------------------------------------------------------------------*/ const setOpacity = (hex, alpha)=>`${hex}${Math.floor(alpha * 255).toString(16).padStart(2, '0')}`;
14
+ const Overlay = styledComponents.styled.div`
15
+ position: fixed;
16
+ top: 0;
17
+ left: 0;
18
+ right: 0;
19
+ bottom: 0;
20
+ width: 100vw;
21
+ height: 100vh;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ z-index: 500;
26
+ pointer-events: auto; /* Explicitly enable pointer events */
27
+ background: ${(props)=>setOpacity(props.theme.colors.neutral800, 0.2)};
28
+ `;
29
+ const ImageWrapper = styledComponents.styled.div`
30
+ max-width: 80vw;
31
+ max-height: 90vh;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ pointer-events: auto; /* Explicitly enable pointer events */
36
+ position: relative;
37
+ animation: ${animations.ANIMATIONS.scaleIn} 0.3s ease;
38
+ `;
39
+ const StyledImg = styledComponents.styled(Base64Image.Base64Img)`
40
+ max-width: 100%;
41
+ max-height: 90vh;
42
+ object-fit: contain;
43
+ pointer-events: auto; /* Explicitly enable pointer events */
44
+ `;
45
+ /* -------------------------------------------------------------------------------------------------
46
+ * Modal
47
+ * -----------------------------------------------------------------------------------------------*/ // Use the existing FullScreenImage as our modal component
48
+ const ImageModal = ({ src, alt, onClose })=>{
49
+ const overlayRef = React.useRef(null);
50
+ const wrapperRef = React.useRef(null);
51
+ // Close on ESC key press
52
+ React.useEffect(()=>{
53
+ const handleKeyDown = (e)=>{
54
+ if (e.key === 'Escape') {
55
+ // Stop propagation to prevent closing parent modals
56
+ e.preventDefault();
57
+ e.stopPropagation();
58
+ onClose?.();
59
+ // The next 3 lines are critical: they completely stop the event
60
+ e.stopImmediatePropagation();
61
+ e.cancelBubble = true; // For older browsers
62
+ return false;
63
+ }
64
+ };
65
+ // Use capture phase to intercept event before it reaches other components
66
+ window.addEventListener('keydown', handleKeyDown, true);
67
+ return ()=>window.removeEventListener('keydown', handleKeyDown, true);
68
+ }, [
69
+ onClose
70
+ ]);
71
+ // Setup click handlers
72
+ React.useEffect(()=>{
73
+ const handleOverlayClick = (e)=>{
74
+ // Only close if clicking directly on the overlay (not its children)
75
+ if (e.target === overlayRef.current) {
76
+ e.preventDefault();
77
+ e.stopPropagation();
78
+ onClose?.();
79
+ }
80
+ };
81
+ const handleWrapperClick = (e)=>{
82
+ // Stop propagation for clicks on the image wrapper
83
+ e.stopPropagation();
84
+ };
85
+ const overlay = overlayRef.current;
86
+ const wrapper = wrapperRef.current;
87
+ if (overlay) {
88
+ overlay.addEventListener('click', handleOverlayClick);
89
+ }
90
+ if (wrapper) {
91
+ wrapper.addEventListener('click', handleWrapperClick);
92
+ }
93
+ return ()=>{
94
+ if (overlay) {
95
+ overlay.removeEventListener('click', handleOverlayClick);
96
+ }
97
+ if (wrapper) {
98
+ wrapper.removeEventListener('click', handleWrapperClick);
99
+ }
100
+ };
101
+ }, [
102
+ onClose
103
+ ]);
104
+ // Using createPortal to render directly at document body level
105
+ return /*#__PURE__*/ reactDom.createPortal(/*#__PURE__*/ jsxRuntime.jsx(Overlay, {
106
+ ref: overlayRef,
107
+ children: /*#__PURE__*/ jsxRuntime.jsx(ImageWrapper, {
108
+ ref: wrapperRef,
109
+ children: /*#__PURE__*/ jsxRuntime.jsx(StyledImg, {
110
+ src: src,
111
+ alt: alt
112
+ })
113
+ })
114
+ }), document.body);
115
+ };
116
+ /* -------------------------------------------------------------------------------------------------
117
+ * Root
118
+ * -----------------------------------------------------------------------------------------------*/ // Root component that provides context
119
+ const Root = ({ children, src, alt, onClose, defaultOpen = false })=>{
120
+ const [isOpen, setIsOpen] = React.useState(defaultOpen);
121
+ const open = ()=>setIsOpen(true);
122
+ const close = ()=>{
123
+ setIsOpen(false);
124
+ onClose?.();
125
+ };
126
+ return /*#__PURE__*/ jsxRuntime.jsxs(FullScreenImageContext.Provider, {
127
+ value: {
128
+ isOpen,
129
+ open,
130
+ close,
131
+ src,
132
+ alt
133
+ },
134
+ children: [
135
+ children,
136
+ isOpen && /*#__PURE__*/ jsxRuntime.jsx(ImageModal, {
137
+ src: src,
138
+ alt: alt,
139
+ onClose: close
140
+ })
141
+ ]
142
+ });
143
+ };
144
+ /* -------------------------------------------------------------------------------------------------
145
+ * Hooks
146
+ * -----------------------------------------------------------------------------------------------*/ // Hook to use the context
147
+ const useFullScreenImage = ()=>{
148
+ const context = React.useContext(FullScreenImageContext);
149
+ if (!context) {
150
+ throw new Error('useFullScreenImage must be used within a FullScreenImage.Root');
151
+ }
152
+ return context;
153
+ };
154
+ /* -------------------------------------------------------------------------------------------------
155
+ * Trigger
156
+ * -----------------------------------------------------------------------------------------------*/ // Trigger component that opens the full screen image
157
+ const Trigger = ({ children, asChild = false })=>{
158
+ const { open } = useFullScreenImage();
159
+ const handleClick = (e)=>{
160
+ e.stopPropagation();
161
+ open();
162
+ };
163
+ if (asChild) {
164
+ return /*#__PURE__*/ jsxRuntime.jsx("div", {
165
+ onClick: handleClick,
166
+ style: {
167
+ cursor: 'pointer',
168
+ display: 'contents'
169
+ },
170
+ children: children
171
+ });
172
+ }
173
+ return /*#__PURE__*/ jsxRuntime.jsx("div", {
174
+ onClick: handleClick,
175
+ style: {
176
+ cursor: 'pointer'
177
+ },
178
+ children: children
179
+ });
180
+ };
181
+ /* -------------------------------------------------------------------------------------------------
182
+ * Export
183
+ * -----------------------------------------------------------------------------------------------*/ const FullScreenImage = {
184
+ Root,
185
+ Trigger
186
+ };
187
+
188
+ exports.FullScreenImage = FullScreenImage;
189
+ exports.setOpacity = setOpacity;
190
+ //# sourceMappingURL=FullScreenImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FullScreenImage.js","sources":["../../../../../admin/src/components/AIChat/components/FullScreenImage.tsx"],"sourcesContent":["import { useEffect, useRef, createContext, useContext, useState, ReactNode } from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageContextType {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n src: string;\n alt: string;\n}\n\nconst FullScreenImageContext = createContext<FullScreenImageContextType | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageProps {\n src: string;\n alt: string;\n onClose?: () => void;\n}\n\ninterface FullScreenImageRootProps extends FullScreenImageProps {\n children: ReactNode;\n defaultOpen?: boolean;\n}\n\ninterface FullScreenImageTriggerProps {\n children: ReactNode;\n asChild?: boolean;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Styles\n * -----------------------------------------------------------------------------------------------*/\nexport const setOpacity = (hex: string, alpha: number) =>\n `${hex}${Math.floor(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 500;\n pointer-events: auto; /* Explicitly enable pointer events */\n background: ${(props) => setOpacity(props.theme.colors.neutral800, 0.2)};\n`;\n\nconst ImageWrapper = styled.div`\n max-width: 80vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto; /* Explicitly enable pointer events */\n position: relative;\n animation: ${ANIMATIONS.scaleIn} 0.3s ease;\n`;\n\nconst StyledImg = styled(Base64Img)`\n max-width: 100%;\n max-height: 90vh;\n object-fit: contain;\n pointer-events: auto; /* Explicitly enable pointer events */\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Modal\n * -----------------------------------------------------------------------------------------------*/\n\n// Use the existing FullScreenImage as our modal component\nconst ImageModal = ({ src, alt, onClose }: FullScreenImageProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Close on ESC key press\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n // Stop propagation to prevent closing parent modals\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n\n // The next 3 lines are critical: they completely stop the event\n e.stopImmediatePropagation();\n e.cancelBubble = true; // For older browsers\n return false;\n }\n };\n\n // Use capture phase to intercept event before it reaches other components\n window.addEventListener('keydown', handleKeyDown, true);\n return () => window.removeEventListener('keydown', handleKeyDown, true);\n }, [onClose]);\n\n // Setup click handlers\n useEffect(() => {\n const handleOverlayClick = (e: MouseEvent) => {\n // Only close if clicking directly on the overlay (not its children)\n if (e.target === overlayRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n }\n };\n\n const handleWrapperClick = (e: MouseEvent) => {\n // Stop propagation for clicks on the image wrapper\n e.stopPropagation();\n };\n\n const overlay = overlayRef.current;\n const wrapper = wrapperRef.current;\n\n if (overlay) {\n overlay.addEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.addEventListener('click', handleWrapperClick);\n }\n\n return () => {\n if (overlay) {\n overlay.removeEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.removeEventListener('click', handleWrapperClick);\n }\n };\n }, [onClose]);\n\n // Using createPortal to render directly at document body level\n return createPortal(\n <Overlay ref={overlayRef}>\n <ImageWrapper ref={wrapperRef}>\n <StyledImg src={src} alt={alt} />\n </ImageWrapper>\n </Overlay>,\n document.body\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\n// Root component that provides context\nconst Root = ({ children, src, alt, onClose, defaultOpen = false }: FullScreenImageRootProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n const open = () => setIsOpen(true);\n const close = () => {\n setIsOpen(false);\n onClose?.();\n };\n\n return (\n <FullScreenImageContext.Provider value={{ isOpen, open, close, src, alt }}>\n {children}\n {isOpen && <ImageModal src={src} alt={alt} onClose={close} />}\n </FullScreenImageContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\n// Hook to use the context\nconst useFullScreenImage = () => {\n const context = useContext(FullScreenImageContext);\n if (!context) {\n throw new Error('useFullScreenImage must be used within a FullScreenImage.Root');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\n// Trigger component that opens the full screen image\nconst Trigger = ({ children, asChild = false }: FullScreenImageTriggerProps) => {\n const { open } = useFullScreenImage();\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n open();\n };\n\n if (asChild) {\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer', display: 'contents' }}>\n {children}\n </div>\n );\n }\n\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer' }}>\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const FullScreenImage = {\n Root,\n Trigger,\n};\n"],"names":["FullScreenImageContext","createContext","undefined","setOpacity","hex","alpha","Math","floor","toString","padStart","Overlay","styled","div","props","theme","colors","neutral800","ImageWrapper","ANIMATIONS","scaleIn","StyledImg","Base64Img","ImageModal","src","alt","onClose","overlayRef","useRef","wrapperRef","useEffect","handleKeyDown","e","key","preventDefault","stopPropagation","stopImmediatePropagation","cancelBubble","window","addEventListener","removeEventListener","handleOverlayClick","target","current","handleWrapperClick","overlay","wrapper","createPortal","_jsx","ref","document","body","Root","children","defaultOpen","isOpen","setIsOpen","useState","open","close","_jsxs","Provider","value","useFullScreenImage","context","useContext","Error","Trigger","asChild","handleClick","onClick","style","cursor","display","FullScreenImage"],"mappings":";;;;;;;;;AAoBA,MAAMA,uCAAyBC,mBAAsDC,CAAAA,SAAAA,CAAAA;AAsBrF;;2GAGaC,UAAa,GAAA,CAACC,KAAaC,KACtC,GAAA,CAAC,EAAED,GAAAA,CAAI,EAAEE,IAAAA,CAAKC,KAAK,CAACF,KAAAA,GAAQ,GACzBG,CAAAA,CAAAA,QAAQ,CAAC,EAAA,CAAA,CACTC,QAAQ,CAAC,CAAA,EAAG,GAAK,CAAA,CAAA;AAEtB,MAAMC,OAAAA,GAAUC,uBAAOC,CAAAA,GAAG;;;;;;;;;;;;;cAaZ,EAAE,CAACC,KAAUV,GAAAA,UAAAA,CAAWU,KAAMC,CAAAA,KAAK,CAACC,MAAM,CAACC,UAAU,EAAE,GAAK,CAAA,CAAA;AAC1E,CAAC;AAED,MAAMC,YAAAA,GAAeN,uBAAOC,CAAAA,GAAG;;;;;;;;aAQlB,EAAEM,qBAAAA,CAAWC,OAAO,CAAC;AAClC,CAAC;AAED,MAAMC,SAAAA,GAAYT,uBAAOU,CAAAA,qBAAAA,CAAU;;;;;AAKnC,CAAC;AAED;;AAEkG;AAGlG,MAAMC,UAAAA,GAAa,CAAC,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAO,EAAwB,GAAA;AAC7D,IAAA,MAAMC,aAAaC,YAAuB,CAAA,IAAA,CAAA;AAC1C,IAAA,MAAMC,aAAaD,YAAuB,CAAA,IAAA,CAAA;;IAG1CE,eAAU,CAAA,IAAA;AACR,QAAA,MAAMC,gBAAgB,CAACC,CAAAA,GAAAA;YACrB,IAAIA,CAAAA,CAAEC,GAAG,KAAK,QAAU,EAAA;;AAEtBD,gBAAAA,CAAAA,CAAEE,cAAc,EAAA;AAChBF,gBAAAA,CAAAA,CAAEG,eAAe,EAAA;AACjBT,gBAAAA,OAAAA,IAAAA;;AAGAM,gBAAAA,CAAAA,CAAEI,wBAAwB,EAAA;gBAC1BJ,CAAEK,CAAAA,YAAY,GAAG,IAAA,CAAA;gBACjB,OAAO,KAAA;AACT;AACF,SAAA;;QAGAC,MAAOC,CAAAA,gBAAgB,CAAC,SAAA,EAAWR,aAAe,EAAA,IAAA,CAAA;AAClD,QAAA,OAAO,IAAMO,MAAAA,CAAOE,mBAAmB,CAAC,WAAWT,aAAe,EAAA,IAAA,CAAA;KACjE,EAAA;AAACL,QAAAA;AAAQ,KAAA,CAAA;;IAGZI,eAAU,CAAA,IAAA;AACR,QAAA,MAAMW,qBAAqB,CAACT,CAAAA,GAAAA;;AAE1B,YAAA,IAAIA,CAAEU,CAAAA,MAAM,KAAKf,UAAAA,CAAWgB,OAAO,EAAE;AACnCX,gBAAAA,CAAAA,CAAEE,cAAc,EAAA;AAChBF,gBAAAA,CAAAA,CAAEG,eAAe,EAAA;AACjBT,gBAAAA,OAAAA,IAAAA;AACF;AACF,SAAA;AAEA,QAAA,MAAMkB,qBAAqB,CAACZ,CAAAA,GAAAA;;AAE1BA,YAAAA,CAAAA,CAAEG,eAAe,EAAA;AACnB,SAAA;QAEA,MAAMU,OAAAA,GAAUlB,WAAWgB,OAAO;QAClC,MAAMG,OAAAA,GAAUjB,WAAWc,OAAO;AAElC,QAAA,IAAIE,OAAS,EAAA;YACXA,OAAQN,CAAAA,gBAAgB,CAAC,OAASE,EAAAA,kBAAAA,CAAAA;AACpC;AAEA,QAAA,IAAIK,OAAS,EAAA;YACXA,OAAQP,CAAAA,gBAAgB,CAAC,OAASK,EAAAA,kBAAAA,CAAAA;AACpC;QAEA,OAAO,IAAA;AACL,YAAA,IAAIC,OAAS,EAAA;gBACXA,OAAQL,CAAAA,mBAAmB,CAAC,OAASC,EAAAA,kBAAAA,CAAAA;AACvC;AAEA,YAAA,IAAIK,OAAS,EAAA;gBACXA,OAAQN,CAAAA,mBAAmB,CAAC,OAASI,EAAAA,kBAAAA,CAAAA;AACvC;AACF,SAAA;KACC,EAAA;AAAClB,QAAAA;AAAQ,KAAA,CAAA;;AAGZ,IAAA,qBAAOqB,oCACLC,cAACrC,CAAAA,OAAAA,EAAAA;QAAQsC,GAAKtB,EAAAA,UAAAA;AACZ,QAAA,QAAA,gBAAAqB,cAAC9B,CAAAA,YAAAA,EAAAA;YAAa+B,GAAKpB,EAAAA,UAAAA;AACjB,YAAA,QAAA,gBAAAmB,cAAC3B,CAAAA,SAAAA,EAAAA;gBAAUG,GAAKA,EAAAA,GAAAA;gBAAKC,GAAKA,EAAAA;;;AAG9ByB,KAAAA,CAAAA,EAAAA,QAAAA,CAASC,IAAI,CAAA;AAEjB,CAAA;AAEA;;AAEkG;AAGlG,MAAMC,IAAO,GAAA,CAAC,EAAEC,QAAQ,EAAE7B,GAAG,EAAEC,GAAG,EAAEC,OAAO,EAAE4B,WAAAA,GAAc,KAAK,EAA4B,GAAA;AAC1F,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAU,CAAA,GAAGC,cAASH,CAAAA,WAAAA,CAAAA;IAErC,MAAMI,IAAAA,GAAO,IAAMF,SAAU,CAAA,IAAA,CAAA;AAC7B,IAAA,MAAMG,KAAQ,GAAA,IAAA;QACZH,SAAU,CAAA,KAAA,CAAA;AACV9B,QAAAA,OAAAA,IAAAA;AACF,KAAA;IAEA,qBACEkC,eAAA,CAAC3D,uBAAuB4D,QAAQ,EAAA;QAACC,KAAO,EAAA;AAAEP,YAAAA,MAAAA;AAAQG,YAAAA,IAAAA;AAAMC,YAAAA,KAAAA;AAAOnC,YAAAA,GAAAA;AAAKC,YAAAA;AAAI,SAAA;;AACrE4B,YAAAA,QAAAA;AACAE,YAAAA,MAAAA,kBAAUP,cAACzB,CAAAA,UAAAA,EAAAA;gBAAWC,GAAKA,EAAAA,GAAAA;gBAAKC,GAAKA,EAAAA,GAAAA;gBAAKC,OAASiC,EAAAA;;;;AAG1D,CAAA;AAEA;;AAEkG;AAGlG,MAAMI,kBAAqB,GAAA,IAAA;AACzB,IAAA,MAAMC,UAAUC,gBAAWhE,CAAAA,sBAAAA,CAAAA;AAC3B,IAAA,IAAI,CAAC+D,OAAS,EAAA;AACZ,QAAA,MAAM,IAAIE,KAAM,CAAA,+DAAA,CAAA;AAClB;IACA,OAAOF,OAAAA;AACT,CAAA;AAEA;;AAEkG;AAGlG,MAAMG,UAAU,CAAC,EAAEd,QAAQ,EAAEe,OAAAA,GAAU,KAAK,EAA+B,GAAA;IACzE,MAAM,EAAEV,IAAI,EAAE,GAAGK,kBAAAA,EAAAA;AAEjB,IAAA,MAAMM,cAAc,CAACrC,CAAAA,GAAAA;AACnBA,QAAAA,CAAAA,CAAEG,eAAe,EAAA;AACjBuB,QAAAA,IAAAA,EAAAA;AACF,KAAA;AAEA,IAAA,IAAIU,OAAS,EAAA;AACX,QAAA,qBACEpB,cAACnC,CAAAA,KAAAA,EAAAA;YAAIyD,OAASD,EAAAA,WAAAA;YAAaE,KAAO,EAAA;gBAAEC,MAAQ,EAAA,SAAA;gBAAWC,OAAS,EAAA;AAAW,aAAA;AACxEpB,YAAAA,QAAAA,EAAAA;;AAGP;AAEA,IAAA,qBACEL,cAACnC,CAAAA,KAAAA,EAAAA;QAAIyD,OAASD,EAAAA,WAAAA;QAAaE,KAAO,EAAA;YAAEC,MAAQ,EAAA;AAAU,SAAA;AACnDnB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA;;2GAIaqB,eAAkB,GAAA;AAC7BtB,IAAAA,IAAAA;AACAe,IAAAA;AACF;;;;;"}
@@ -0,0 +1,187 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, createContext, useRef, useEffect, useContext } from 'react';
3
+ import { createPortal } from 'react-dom';
4
+ import { styled } from 'styled-components';
5
+ import { ANIMATIONS } from './animations.mjs';
6
+ import { Base64Img } from './Base64Image.mjs';
7
+
8
+ const FullScreenImageContext = /*#__PURE__*/ createContext(undefined);
9
+ /* -------------------------------------------------------------------------------------------------
10
+ * Styles
11
+ * -----------------------------------------------------------------------------------------------*/ const setOpacity = (hex, alpha)=>`${hex}${Math.floor(alpha * 255).toString(16).padStart(2, '0')}`;
12
+ const Overlay = styled.div`
13
+ position: fixed;
14
+ top: 0;
15
+ left: 0;
16
+ right: 0;
17
+ bottom: 0;
18
+ width: 100vw;
19
+ height: 100vh;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ z-index: 500;
24
+ pointer-events: auto; /* Explicitly enable pointer events */
25
+ background: ${(props)=>setOpacity(props.theme.colors.neutral800, 0.2)};
26
+ `;
27
+ const ImageWrapper = styled.div`
28
+ max-width: 80vw;
29
+ max-height: 90vh;
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ pointer-events: auto; /* Explicitly enable pointer events */
34
+ position: relative;
35
+ animation: ${ANIMATIONS.scaleIn} 0.3s ease;
36
+ `;
37
+ const StyledImg = styled(Base64Img)`
38
+ max-width: 100%;
39
+ max-height: 90vh;
40
+ object-fit: contain;
41
+ pointer-events: auto; /* Explicitly enable pointer events */
42
+ `;
43
+ /* -------------------------------------------------------------------------------------------------
44
+ * Modal
45
+ * -----------------------------------------------------------------------------------------------*/ // Use the existing FullScreenImage as our modal component
46
+ const ImageModal = ({ src, alt, onClose })=>{
47
+ const overlayRef = useRef(null);
48
+ const wrapperRef = useRef(null);
49
+ // Close on ESC key press
50
+ useEffect(()=>{
51
+ const handleKeyDown = (e)=>{
52
+ if (e.key === 'Escape') {
53
+ // Stop propagation to prevent closing parent modals
54
+ e.preventDefault();
55
+ e.stopPropagation();
56
+ onClose?.();
57
+ // The next 3 lines are critical: they completely stop the event
58
+ e.stopImmediatePropagation();
59
+ e.cancelBubble = true; // For older browsers
60
+ return false;
61
+ }
62
+ };
63
+ // Use capture phase to intercept event before it reaches other components
64
+ window.addEventListener('keydown', handleKeyDown, true);
65
+ return ()=>window.removeEventListener('keydown', handleKeyDown, true);
66
+ }, [
67
+ onClose
68
+ ]);
69
+ // Setup click handlers
70
+ useEffect(()=>{
71
+ const handleOverlayClick = (e)=>{
72
+ // Only close if clicking directly on the overlay (not its children)
73
+ if (e.target === overlayRef.current) {
74
+ e.preventDefault();
75
+ e.stopPropagation();
76
+ onClose?.();
77
+ }
78
+ };
79
+ const handleWrapperClick = (e)=>{
80
+ // Stop propagation for clicks on the image wrapper
81
+ e.stopPropagation();
82
+ };
83
+ const overlay = overlayRef.current;
84
+ const wrapper = wrapperRef.current;
85
+ if (overlay) {
86
+ overlay.addEventListener('click', handleOverlayClick);
87
+ }
88
+ if (wrapper) {
89
+ wrapper.addEventListener('click', handleWrapperClick);
90
+ }
91
+ return ()=>{
92
+ if (overlay) {
93
+ overlay.removeEventListener('click', handleOverlayClick);
94
+ }
95
+ if (wrapper) {
96
+ wrapper.removeEventListener('click', handleWrapperClick);
97
+ }
98
+ };
99
+ }, [
100
+ onClose
101
+ ]);
102
+ // Using createPortal to render directly at document body level
103
+ return /*#__PURE__*/ createPortal(/*#__PURE__*/ jsx(Overlay, {
104
+ ref: overlayRef,
105
+ children: /*#__PURE__*/ jsx(ImageWrapper, {
106
+ ref: wrapperRef,
107
+ children: /*#__PURE__*/ jsx(StyledImg, {
108
+ src: src,
109
+ alt: alt
110
+ })
111
+ })
112
+ }), document.body);
113
+ };
114
+ /* -------------------------------------------------------------------------------------------------
115
+ * Root
116
+ * -----------------------------------------------------------------------------------------------*/ // Root component that provides context
117
+ const Root = ({ children, src, alt, onClose, defaultOpen = false })=>{
118
+ const [isOpen, setIsOpen] = useState(defaultOpen);
119
+ const open = ()=>setIsOpen(true);
120
+ const close = ()=>{
121
+ setIsOpen(false);
122
+ onClose?.();
123
+ };
124
+ return /*#__PURE__*/ jsxs(FullScreenImageContext.Provider, {
125
+ value: {
126
+ isOpen,
127
+ open,
128
+ close,
129
+ src,
130
+ alt
131
+ },
132
+ children: [
133
+ children,
134
+ isOpen && /*#__PURE__*/ jsx(ImageModal, {
135
+ src: src,
136
+ alt: alt,
137
+ onClose: close
138
+ })
139
+ ]
140
+ });
141
+ };
142
+ /* -------------------------------------------------------------------------------------------------
143
+ * Hooks
144
+ * -----------------------------------------------------------------------------------------------*/ // Hook to use the context
145
+ const useFullScreenImage = ()=>{
146
+ const context = useContext(FullScreenImageContext);
147
+ if (!context) {
148
+ throw new Error('useFullScreenImage must be used within a FullScreenImage.Root');
149
+ }
150
+ return context;
151
+ };
152
+ /* -------------------------------------------------------------------------------------------------
153
+ * Trigger
154
+ * -----------------------------------------------------------------------------------------------*/ // Trigger component that opens the full screen image
155
+ const Trigger = ({ children, asChild = false })=>{
156
+ const { open } = useFullScreenImage();
157
+ const handleClick = (e)=>{
158
+ e.stopPropagation();
159
+ open();
160
+ };
161
+ if (asChild) {
162
+ return /*#__PURE__*/ jsx("div", {
163
+ onClick: handleClick,
164
+ style: {
165
+ cursor: 'pointer',
166
+ display: 'contents'
167
+ },
168
+ children: children
169
+ });
170
+ }
171
+ return /*#__PURE__*/ jsx("div", {
172
+ onClick: handleClick,
173
+ style: {
174
+ cursor: 'pointer'
175
+ },
176
+ children: children
177
+ });
178
+ };
179
+ /* -------------------------------------------------------------------------------------------------
180
+ * Export
181
+ * -----------------------------------------------------------------------------------------------*/ const FullScreenImage = {
182
+ Root,
183
+ Trigger
184
+ };
185
+
186
+ export { FullScreenImage, setOpacity };
187
+ //# sourceMappingURL=FullScreenImage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FullScreenImage.mjs","sources":["../../../../../admin/src/components/AIChat/components/FullScreenImage.tsx"],"sourcesContent":["import { useEffect, useRef, createContext, useContext, useState, ReactNode } from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageContextType {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n src: string;\n alt: string;\n}\n\nconst FullScreenImageContext = createContext<FullScreenImageContextType | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageProps {\n src: string;\n alt: string;\n onClose?: () => void;\n}\n\ninterface FullScreenImageRootProps extends FullScreenImageProps {\n children: ReactNode;\n defaultOpen?: boolean;\n}\n\ninterface FullScreenImageTriggerProps {\n children: ReactNode;\n asChild?: boolean;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Styles\n * -----------------------------------------------------------------------------------------------*/\nexport const setOpacity = (hex: string, alpha: number) =>\n `${hex}${Math.floor(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 500;\n pointer-events: auto; /* Explicitly enable pointer events */\n background: ${(props) => setOpacity(props.theme.colors.neutral800, 0.2)};\n`;\n\nconst ImageWrapper = styled.div`\n max-width: 80vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto; /* Explicitly enable pointer events */\n position: relative;\n animation: ${ANIMATIONS.scaleIn} 0.3s ease;\n`;\n\nconst StyledImg = styled(Base64Img)`\n max-width: 100%;\n max-height: 90vh;\n object-fit: contain;\n pointer-events: auto; /* Explicitly enable pointer events */\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Modal\n * -----------------------------------------------------------------------------------------------*/\n\n// Use the existing FullScreenImage as our modal component\nconst ImageModal = ({ src, alt, onClose }: FullScreenImageProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Close on ESC key press\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n // Stop propagation to prevent closing parent modals\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n\n // The next 3 lines are critical: they completely stop the event\n e.stopImmediatePropagation();\n e.cancelBubble = true; // For older browsers\n return false;\n }\n };\n\n // Use capture phase to intercept event before it reaches other components\n window.addEventListener('keydown', handleKeyDown, true);\n return () => window.removeEventListener('keydown', handleKeyDown, true);\n }, [onClose]);\n\n // Setup click handlers\n useEffect(() => {\n const handleOverlayClick = (e: MouseEvent) => {\n // Only close if clicking directly on the overlay (not its children)\n if (e.target === overlayRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n }\n };\n\n const handleWrapperClick = (e: MouseEvent) => {\n // Stop propagation for clicks on the image wrapper\n e.stopPropagation();\n };\n\n const overlay = overlayRef.current;\n const wrapper = wrapperRef.current;\n\n if (overlay) {\n overlay.addEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.addEventListener('click', handleWrapperClick);\n }\n\n return () => {\n if (overlay) {\n overlay.removeEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.removeEventListener('click', handleWrapperClick);\n }\n };\n }, [onClose]);\n\n // Using createPortal to render directly at document body level\n return createPortal(\n <Overlay ref={overlayRef}>\n <ImageWrapper ref={wrapperRef}>\n <StyledImg src={src} alt={alt} />\n </ImageWrapper>\n </Overlay>,\n document.body\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\n// Root component that provides context\nconst Root = ({ children, src, alt, onClose, defaultOpen = false }: FullScreenImageRootProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n const open = () => setIsOpen(true);\n const close = () => {\n setIsOpen(false);\n onClose?.();\n };\n\n return (\n <FullScreenImageContext.Provider value={{ isOpen, open, close, src, alt }}>\n {children}\n {isOpen && <ImageModal src={src} alt={alt} onClose={close} />}\n </FullScreenImageContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\n// Hook to use the context\nconst useFullScreenImage = () => {\n const context = useContext(FullScreenImageContext);\n if (!context) {\n throw new Error('useFullScreenImage must be used within a FullScreenImage.Root');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\n// Trigger component that opens the full screen image\nconst Trigger = ({ children, asChild = false }: FullScreenImageTriggerProps) => {\n const { open } = useFullScreenImage();\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n open();\n };\n\n if (asChild) {\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer', display: 'contents' }}>\n {children}\n </div>\n );\n }\n\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer' }}>\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const FullScreenImage = {\n Root,\n Trigger,\n};\n"],"names":["FullScreenImageContext","createContext","undefined","setOpacity","hex","alpha","Math","floor","toString","padStart","Overlay","styled","div","props","theme","colors","neutral800","ImageWrapper","ANIMATIONS","scaleIn","StyledImg","Base64Img","ImageModal","src","alt","onClose","overlayRef","useRef","wrapperRef","useEffect","handleKeyDown","e","key","preventDefault","stopPropagation","stopImmediatePropagation","cancelBubble","window","addEventListener","removeEventListener","handleOverlayClick","target","current","handleWrapperClick","overlay","wrapper","createPortal","_jsx","ref","document","body","Root","children","defaultOpen","isOpen","setIsOpen","useState","open","close","_jsxs","Provider","value","useFullScreenImage","context","useContext","Error","Trigger","asChild","handleClick","onClick","style","cursor","display","FullScreenImage"],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var designSystem = require('@strapi/design-system');
5
+ var Icons = require('@strapi/icons');
6
+ var styledComponents = require('styled-components');
7
+ var animations = require('./animations.js');
8
+ var Base64Image = require('./Base64Image.js');
9
+ var FullScreenImage = require('./FullScreenImage.js');
10
+
11
+ const ImageContainer = styledComponents.styled(designSystem.Box)`
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ height: 160px;
16
+ width: 100%;
17
+ border-radius: 4px 4px 0 0;
18
+ overflow: hidden;
19
+ cursor: pointer;
20
+ `;
21
+ const StyledImg = styledComponents.styled(Base64Image.Base64Img)`
22
+ width: 100%;
23
+ height: 100%;
24
+ object-fit: cover;
25
+ display: block;
26
+ // make it appear gracefully when first rendering
27
+ animation: ${animations.ANIMATIONS.fadeIn} 0.3s ease;
28
+ `;
29
+ const CardContainer = styledComponents.styled(designSystem.Card)`
30
+ height: 100%;
31
+ width: 100%;
32
+ ${({ $selected, theme })=>$selected ? `
33
+ border: 2px solid ${theme.colors.primary600};
34
+ outline: 0px solid transparent;
35
+ ` : `
36
+ border: 2px solid transparent;
37
+ outline: 1px solid ${theme.colors.neutral200};
38
+ `}
39
+ transition: all 0.2s ease-in-out;
40
+ `;
41
+ const ImagePreview = ({ imageUrl, imageName, selected = false, onSelect })=>{
42
+ return /*#__PURE__*/ jsxRuntime.jsx(FullScreenImage.FullScreenImage.Root, {
43
+ src: imageUrl,
44
+ alt: imageName,
45
+ children: /*#__PURE__*/ jsxRuntime.jsxs(CardContainer, {
46
+ role: "button",
47
+ $selected: selected,
48
+ children: [
49
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.CardHeader, {
50
+ children: [
51
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.CardCheckbox, {
52
+ checked: selected,
53
+ onCheckedChange: onSelect
54
+ }),
55
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.CardAction, {
56
+ position: "end",
57
+ children: /*#__PURE__*/ jsxRuntime.jsx(FullScreenImage.FullScreenImage.Trigger, {
58
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
59
+ label: "Preview",
60
+ type: "button",
61
+ children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Expand, {})
62
+ })
63
+ })
64
+ }),
65
+ /*#__PURE__*/ jsxRuntime.jsx(ImageContainer, {
66
+ onClick: onSelect,
67
+ children: /*#__PURE__*/ jsxRuntime.jsx(StyledImg, {
68
+ src: imageUrl,
69
+ alt: imageName
70
+ })
71
+ })
72
+ ]
73
+ }),
74
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.CardBody, {
75
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.CardContent, {
76
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.CardTitle, {
77
+ children: imageName
78
+ })
79
+ })
80
+ })
81
+ ]
82
+ })
83
+ });
84
+ };
85
+
86
+ exports.ImagePreview = ImagePreview;
87
+ //# sourceMappingURL=ImagePreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreview.js","sources":["../../../../../admin/src/components/AIChat/components/ImagePreview.tsx"],"sourcesContent":["import {\n Box,\n Card,\n CardBody,\n CardCheckbox,\n CardContent,\n CardHeader,\n CardAction,\n CardTitle,\n IconButton,\n} from '@strapi/design-system';\nimport { Expand } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\nimport { FullScreenImage } from './FullScreenImage';\n\ninterface Base64ImageProps {\n imageUrl: string;\n imageName: string;\n selected?: boolean;\n onSelect?: (selected: boolean) => void;\n}\n\nconst ImageContainer = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 160px;\n width: 100%;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n cursor: pointer;\n`;\n\nconst StyledImg = styled(Base64Img)`\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n // make it appear gracefully when first rendering\n animation: ${ANIMATIONS.fadeIn} 0.3s ease;\n`;\n\nconst CardContainer = styled(Card)<{ $selected?: boolean }>`\n height: 100%;\n width: 100%;\n ${({ $selected, theme }) =>\n $selected\n ? `\n border: 2px solid ${theme.colors.primary600};\n outline: 0px solid transparent;\n `\n : `\n border: 2px solid transparent;\n outline: 1px solid ${theme.colors.neutral200};\n `}\n transition: all 0.2s ease-in-out;\n`;\n\nexport const ImagePreview = ({\n imageUrl,\n imageName,\n selected = false,\n onSelect,\n}: Base64ImageProps) => {\n return (\n <FullScreenImage.Root src={imageUrl} alt={imageName}>\n <CardContainer role=\"button\" $selected={selected}>\n <CardHeader>\n <CardCheckbox checked={selected} onCheckedChange={onSelect} />\n <CardAction position=\"end\">\n <FullScreenImage.Trigger>\n <IconButton label=\"Preview\" type=\"button\">\n <Expand />\n </IconButton>\n </FullScreenImage.Trigger>\n </CardAction>\n <ImageContainer onClick={onSelect}>\n <StyledImg src={imageUrl} alt={imageName} />\n </ImageContainer>\n </CardHeader>\n\n <CardBody>\n <CardContent>\n <CardTitle>{imageName}</CardTitle>\n </CardContent>\n </CardBody>\n </CardContainer>\n </FullScreenImage.Root>\n );\n};\n"],"names":["ImageContainer","styled","Box","StyledImg","Base64Img","ANIMATIONS","fadeIn","CardContainer","Card","$selected","theme","colors","primary600","neutral200","ImagePreview","imageUrl","imageName","selected","onSelect","_jsx","FullScreenImage","Root","src","alt","_jsxs","role","CardHeader","CardCheckbox","checked","onCheckedChange","CardAction","position","Trigger","IconButton","label","type","Expand","onClick","CardBody","CardContent","CardTitle"],"mappings":";;;;;;;;;;AAyBA,MAAMA,cAAAA,GAAiBC,uBAAOC,CAAAA,gBAAAA,CAAI;;;;;;;;;AASlC,CAAC;AAED,MAAMC,SAAAA,GAAYF,uBAAOG,CAAAA,qBAAAA,CAAU;;;;;;aAMtB,EAAEC,qBAAAA,CAAWC,MAAM,CAAC;AACjC,CAAC;AAED,MAAMC,aAAAA,GAAgBN,uBAAOO,CAAAA,iBAAAA,CAA8B;;;EAGzD,EAAE,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE,GACrBD,YACI;AACgB,wBAAA,EAAEC,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE9C,IAAA,CAAC,GACG;;AAEiB,yBAAA,EAAEF,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;AAC/C,IAAA,CAAC;;AAEL,CAAC;AAEYC,MAAAA,YAAAA,GAAe,CAAC,EAC3BC,QAAQ,EACRC,SAAS,EACTC,QAAW,GAAA,KAAK,EAChBC,QAAQ,EACS,GAAA;IACjB,qBACEC,cAAA,CAACC,gCAAgBC,IAAI,EAAA;QAACC,GAAKP,EAAAA,QAAAA;QAAUQ,GAAKP,EAAAA,SAAAA;AACxC,QAAA,QAAA,gBAAAQ,eAACjB,CAAAA,aAAAA,EAAAA;YAAckB,IAAK,EAAA,QAAA;YAAShB,SAAWQ,EAAAA,QAAAA;;8BACtCO,eAACE,CAAAA,uBAAAA,EAAAA;;sCACCP,cAACQ,CAAAA,yBAAAA,EAAAA;4BAAaC,OAASX,EAAAA,QAAAA;4BAAUY,eAAiBX,EAAAA;;sCAClDC,cAACW,CAAAA,uBAAAA,EAAAA;4BAAWC,QAAS,EAAA,KAAA;oDACnBZ,cAAA,CAACC,gCAAgBY,OAAO,EAAA;AACtB,gCAAA,QAAA,gBAAAb,cAACc,CAAAA,uBAAAA,EAAAA;oCAAWC,KAAM,EAAA,SAAA;oCAAUC,IAAK,EAAA,QAAA;AAC/B,oCAAA,QAAA,gBAAAhB,cAACiB,CAAAA,YAAAA,EAAAA,EAAAA;;;;sCAIPjB,cAACnB,CAAAA,cAAAA,EAAAA;4BAAeqC,OAASnB,EAAAA,QAAAA;AACvB,4BAAA,QAAA,gBAAAC,cAAChB,CAAAA,SAAAA,EAAAA;gCAAUmB,GAAKP,EAAAA,QAAAA;gCAAUQ,GAAKP,EAAAA;;;;;8BAInCG,cAACmB,CAAAA,qBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAnB,cAACoB,CAAAA,wBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAApB,cAACqB,CAAAA,sBAAAA,EAAAA;AAAWxB,4BAAAA,QAAAA,EAAAA;;;;;;;AAMxB;;;;"}
@@ -0,0 +1,85 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Box, Card, CardHeader, CardCheckbox, CardAction, IconButton, CardBody, CardContent, CardTitle } from '@strapi/design-system';
3
+ import { Expand } from '@strapi/icons';
4
+ import { styled } from 'styled-components';
5
+ import { ANIMATIONS } from './animations.mjs';
6
+ import { Base64Img } from './Base64Image.mjs';
7
+ import { FullScreenImage } from './FullScreenImage.mjs';
8
+
9
+ const ImageContainer = styled(Box)`
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ height: 160px;
14
+ width: 100%;
15
+ border-radius: 4px 4px 0 0;
16
+ overflow: hidden;
17
+ cursor: pointer;
18
+ `;
19
+ const StyledImg = styled(Base64Img)`
20
+ width: 100%;
21
+ height: 100%;
22
+ object-fit: cover;
23
+ display: block;
24
+ // make it appear gracefully when first rendering
25
+ animation: ${ANIMATIONS.fadeIn} 0.3s ease;
26
+ `;
27
+ const CardContainer = styled(Card)`
28
+ height: 100%;
29
+ width: 100%;
30
+ ${({ $selected, theme })=>$selected ? `
31
+ border: 2px solid ${theme.colors.primary600};
32
+ outline: 0px solid transparent;
33
+ ` : `
34
+ border: 2px solid transparent;
35
+ outline: 1px solid ${theme.colors.neutral200};
36
+ `}
37
+ transition: all 0.2s ease-in-out;
38
+ `;
39
+ const ImagePreview = ({ imageUrl, imageName, selected = false, onSelect })=>{
40
+ return /*#__PURE__*/ jsx(FullScreenImage.Root, {
41
+ src: imageUrl,
42
+ alt: imageName,
43
+ children: /*#__PURE__*/ jsxs(CardContainer, {
44
+ role: "button",
45
+ $selected: selected,
46
+ children: [
47
+ /*#__PURE__*/ jsxs(CardHeader, {
48
+ children: [
49
+ /*#__PURE__*/ jsx(CardCheckbox, {
50
+ checked: selected,
51
+ onCheckedChange: onSelect
52
+ }),
53
+ /*#__PURE__*/ jsx(CardAction, {
54
+ position: "end",
55
+ children: /*#__PURE__*/ jsx(FullScreenImage.Trigger, {
56
+ children: /*#__PURE__*/ jsx(IconButton, {
57
+ label: "Preview",
58
+ type: "button",
59
+ children: /*#__PURE__*/ jsx(Expand, {})
60
+ })
61
+ })
62
+ }),
63
+ /*#__PURE__*/ jsx(ImageContainer, {
64
+ onClick: onSelect,
65
+ children: /*#__PURE__*/ jsx(StyledImg, {
66
+ src: imageUrl,
67
+ alt: imageName
68
+ })
69
+ })
70
+ ]
71
+ }),
72
+ /*#__PURE__*/ jsx(CardBody, {
73
+ children: /*#__PURE__*/ jsx(CardContent, {
74
+ children: /*#__PURE__*/ jsx(CardTitle, {
75
+ children: imageName
76
+ })
77
+ })
78
+ })
79
+ ]
80
+ })
81
+ });
82
+ };
83
+
84
+ export { ImagePreview };
85
+ //# sourceMappingURL=ImagePreview.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreview.mjs","sources":["../../../../../admin/src/components/AIChat/components/ImagePreview.tsx"],"sourcesContent":["import {\n Box,\n Card,\n CardBody,\n CardCheckbox,\n CardContent,\n CardHeader,\n CardAction,\n CardTitle,\n IconButton,\n} from '@strapi/design-system';\nimport { Expand } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\nimport { FullScreenImage } from './FullScreenImage';\n\ninterface Base64ImageProps {\n imageUrl: string;\n imageName: string;\n selected?: boolean;\n onSelect?: (selected: boolean) => void;\n}\n\nconst ImageContainer = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 160px;\n width: 100%;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n cursor: pointer;\n`;\n\nconst StyledImg = styled(Base64Img)`\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n // make it appear gracefully when first rendering\n animation: ${ANIMATIONS.fadeIn} 0.3s ease;\n`;\n\nconst CardContainer = styled(Card)<{ $selected?: boolean }>`\n height: 100%;\n width: 100%;\n ${({ $selected, theme }) =>\n $selected\n ? `\n border: 2px solid ${theme.colors.primary600};\n outline: 0px solid transparent;\n `\n : `\n border: 2px solid transparent;\n outline: 1px solid ${theme.colors.neutral200};\n `}\n transition: all 0.2s ease-in-out;\n`;\n\nexport const ImagePreview = ({\n imageUrl,\n imageName,\n selected = false,\n onSelect,\n}: Base64ImageProps) => {\n return (\n <FullScreenImage.Root src={imageUrl} alt={imageName}>\n <CardContainer role=\"button\" $selected={selected}>\n <CardHeader>\n <CardCheckbox checked={selected} onCheckedChange={onSelect} />\n <CardAction position=\"end\">\n <FullScreenImage.Trigger>\n <IconButton label=\"Preview\" type=\"button\">\n <Expand />\n </IconButton>\n </FullScreenImage.Trigger>\n </CardAction>\n <ImageContainer onClick={onSelect}>\n <StyledImg src={imageUrl} alt={imageName} />\n </ImageContainer>\n </CardHeader>\n\n <CardBody>\n <CardContent>\n <CardTitle>{imageName}</CardTitle>\n </CardContent>\n </CardBody>\n </CardContainer>\n </FullScreenImage.Root>\n );\n};\n"],"names":["ImageContainer","styled","Box","StyledImg","Base64Img","ANIMATIONS","fadeIn","CardContainer","Card","$selected","theme","colors","primary600","neutral200","ImagePreview","imageUrl","imageName","selected","onSelect","_jsx","FullScreenImage","Root","src","alt","_jsxs","role","CardHeader","CardCheckbox","checked","onCheckedChange","CardAction","position","Trigger","IconButton","label","type","Expand","onClick","CardBody","CardContent","CardTitle"],"mappings":";;;;;;;;AAyBA,MAAMA,cAAAA,GAAiBC,MAAOC,CAAAA,GAAAA,CAAI;;;;;;;;;AASlC,CAAC;AAED,MAAMC,SAAAA,GAAYF,MAAOG,CAAAA,SAAAA,CAAU;;;;;;aAMtB,EAAEC,UAAAA,CAAWC,MAAM,CAAC;AACjC,CAAC;AAED,MAAMC,aAAAA,GAAgBN,MAAOO,CAAAA,IAAAA,CAA8B;;;EAGzD,EAAE,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE,GACrBD,YACI;AACgB,wBAAA,EAAEC,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE9C,IAAA,CAAC,GACG;;AAEiB,yBAAA,EAAEF,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;AAC/C,IAAA,CAAC;;AAEL,CAAC;AAEYC,MAAAA,YAAAA,GAAe,CAAC,EAC3BC,QAAQ,EACRC,SAAS,EACTC,QAAW,GAAA,KAAK,EAChBC,QAAQ,EACS,GAAA;IACjB,qBACEC,GAAA,CAACC,gBAAgBC,IAAI,EAAA;QAACC,GAAKP,EAAAA,QAAAA;QAAUQ,GAAKP,EAAAA,SAAAA;AACxC,QAAA,QAAA,gBAAAQ,IAACjB,CAAAA,aAAAA,EAAAA;YAAckB,IAAK,EAAA,QAAA;YAAShB,SAAWQ,EAAAA,QAAAA;;8BACtCO,IAACE,CAAAA,UAAAA,EAAAA;;sCACCP,GAACQ,CAAAA,YAAAA,EAAAA;4BAAaC,OAASX,EAAAA,QAAAA;4BAAUY,eAAiBX,EAAAA;;sCAClDC,GAACW,CAAAA,UAAAA,EAAAA;4BAAWC,QAAS,EAAA,KAAA;oDACnBZ,GAAA,CAACC,gBAAgBY,OAAO,EAAA;AACtB,gCAAA,QAAA,gBAAAb,GAACc,CAAAA,UAAAA,EAAAA;oCAAWC,KAAM,EAAA,SAAA;oCAAUC,IAAK,EAAA,QAAA;AAC/B,oCAAA,QAAA,gBAAAhB,GAACiB,CAAAA,MAAAA,EAAAA,EAAAA;;;;sCAIPjB,GAACnB,CAAAA,cAAAA,EAAAA;4BAAeqC,OAASnB,EAAAA,QAAAA;AACvB,4BAAA,QAAA,gBAAAC,GAAChB,CAAAA,SAAAA,EAAAA;gCAAUmB,GAAKP,EAAAA,QAAAA;gCAAUQ,GAAKP,EAAAA;;;;;8BAInCG,GAACmB,CAAAA,QAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAnB,GAACoB,CAAAA,WAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAApB,GAACqB,CAAAA,SAAAA,EAAAA;AAAWxB,4BAAAA,QAAAA,EAAAA;;;;;;;AAMxB;;;;"}