@intlayer/design-system 5.7.7 → 5.8.0-canary.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 (358) hide show
  1. package/dist/.vite/manifest.json +85 -57
  2. package/dist/{better-auth.8zoxzg-F-D8e0X4ys.js → better-auth.CMQ3rA-I-7umXOENE.js} +1 -7
  3. package/dist/better-auth.CMQ3rA-I-7umXOENE.js.map +1 -0
  4. package/dist/{better-auth.8zoxzg-F-BEBqzpjz.cjs → better-auth.CMQ3rA-I-C2nBKRMa.cjs} +1 -7
  5. package/dist/better-auth.CMQ3rA-I-C2nBKRMa.cjs.map +1 -0
  6. package/dist/components/Accordion/Accordion.cjs +2 -2
  7. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  8. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  9. package/dist/components/Accordion/Accordion.mjs +3 -3
  10. package/dist/components/Accordion/Accordion.mjs.map +1 -1
  11. package/dist/components/Badge/index.cjs +69 -12
  12. package/dist/components/Badge/index.cjs.map +1 -1
  13. package/dist/components/Badge/index.d.ts +18 -2
  14. package/dist/components/Badge/index.d.ts.map +1 -1
  15. package/dist/components/Badge/index.mjs +69 -12
  16. package/dist/components/Badge/index.mjs.map +1 -1
  17. package/dist/components/Breadcrumb/index.cjs +2 -2
  18. package/dist/components/Breadcrumb/index.cjs.map +1 -1
  19. package/dist/components/Breadcrumb/index.d.ts +2 -1
  20. package/dist/components/Breadcrumb/index.d.ts.map +1 -1
  21. package/dist/components/Breadcrumb/index.mjs +4 -4
  22. package/dist/components/Breadcrumb/index.mjs.map +1 -1
  23. package/dist/components/Button/Button.cjs +95 -40
  24. package/dist/components/Button/Button.cjs.map +1 -1
  25. package/dist/components/Button/Button.d.ts +42 -1
  26. package/dist/components/Button/Button.d.ts.map +1 -1
  27. package/dist/components/Button/Button.mjs +96 -41
  28. package/dist/components/Button/Button.mjs.map +1 -1
  29. package/dist/components/Button/index.cjs +5 -0
  30. package/dist/components/Button/index.cjs.map +1 -1
  31. package/dist/components/Button/index.mjs +7 -2
  32. package/dist/components/Container/index.cjs +67 -0
  33. package/dist/components/Container/index.cjs.map +1 -1
  34. package/dist/components/Container/index.d.ts +53 -0
  35. package/dist/components/Container/index.d.ts.map +1 -1
  36. package/dist/components/Container/index.mjs +67 -0
  37. package/dist/components/Container/index.mjs.map +1 -1
  38. package/dist/components/ContentEditor/ContentEditor.cjs +3 -1
  39. package/dist/components/ContentEditor/ContentEditor.cjs.map +1 -1
  40. package/dist/components/ContentEditor/ContentEditor.d.ts.map +1 -1
  41. package/dist/components/ContentEditor/ContentEditor.mjs +3 -1
  42. package/dist/components/ContentEditor/ContentEditor.mjs.map +1 -1
  43. package/dist/components/ContentEditor/ContentEditorInput.cjs +7 -7
  44. package/dist/components/ContentEditor/ContentEditorInput.cjs.map +1 -1
  45. package/dist/components/ContentEditor/ContentEditorInput.d.ts +1 -1
  46. package/dist/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  47. package/dist/components/ContentEditor/ContentEditorInput.mjs +9 -9
  48. package/dist/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  49. package/dist/components/CopyButton/index.cjs +3 -3
  50. package/dist/components/CopyButton/index.cjs.map +1 -1
  51. package/dist/components/CopyButton/index.d.ts.map +1 -1
  52. package/dist/components/CopyButton/index.mjs +4 -4
  53. package/dist/components/CopyButton/index.mjs.map +1 -1
  54. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.cjs +26 -26
  55. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.cjs.map +1 -1
  56. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  57. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +28 -28
  58. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  59. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs +3 -2
  60. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs.map +1 -1
  61. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  62. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +3 -2
  63. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  64. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.cjs +2 -1
  65. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.cjs.map +1 -1
  66. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +1 -0
  67. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  68. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs +1 -0
  69. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  70. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.cjs +1 -1
  71. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs +1 -1
  72. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs +4 -3
  73. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs.map +1 -1
  74. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  75. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +4 -3
  76. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  77. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.cjs +2 -1
  78. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.cjs.map +1 -1
  79. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +1 -0
  80. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  81. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs +1 -0
  82. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  83. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.cjs +1 -1
  84. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.cjs +2 -1
  85. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.cjs.map +1 -1
  86. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +1 -0
  87. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  88. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs +1 -0
  89. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
  90. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs +1 -1
  91. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs +5 -5
  92. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs.map +1 -1
  93. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  94. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +7 -7
  95. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  96. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs +7 -7
  97. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs.map +1 -1
  98. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts +1 -1
  99. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  100. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +8 -8
  101. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  102. package/dist/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.cjs +2 -1
  103. package/dist/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.cjs.map +1 -1
  104. package/dist/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +1 -0
  105. package/dist/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  106. package/dist/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs +1 -0
  107. package/dist/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
  108. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs +13 -12
  109. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs.map +1 -1
  110. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  111. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +14 -13
  112. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  113. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.cjs +2 -1
  114. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.cjs.map +1 -1
  115. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +1 -0
  116. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  117. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs +1 -0
  118. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  119. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.cjs +9 -9
  120. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.cjs.map +1 -1
  121. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  122. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.mjs +10 -10
  123. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  124. package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.cjs +2 -1
  125. package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.cjs.map +1 -1
  126. package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +1 -0
  127. package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  128. package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.mjs +1 -0
  129. package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
  130. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.cjs +4 -4
  131. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.cjs.map +1 -1
  132. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
  133. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs +5 -5
  134. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
  135. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.cjs +1 -1
  136. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs +1 -1
  137. package/dist/components/DictionaryFieldEditor/dictionaryFieldEditor.content.cjs +2 -1
  138. package/dist/components/DictionaryFieldEditor/dictionaryFieldEditor.content.cjs.map +1 -1
  139. package/dist/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +1 -0
  140. package/dist/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  141. package/dist/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs +1 -0
  142. package/dist/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
  143. package/dist/components/DictionaryFieldEditor/nodeTypeSelector.content.cjs +2 -1
  144. package/dist/components/DictionaryFieldEditor/nodeTypeSelector.content.cjs.map +1 -1
  145. package/dist/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +1 -0
  146. package/dist/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  147. package/dist/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs +1 -0
  148. package/dist/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
  149. package/dist/components/DropDown/index.cjs +11 -2
  150. package/dist/components/DropDown/index.cjs.map +1 -1
  151. package/dist/components/DropDown/index.d.ts +7 -2
  152. package/dist/components/DropDown/index.d.ts.map +1 -1
  153. package/dist/components/DropDown/index.mjs +12 -3
  154. package/dist/components/DropDown/index.mjs.map +1 -1
  155. package/dist/components/EditableField/EditableFieldLayout.cjs +9 -9
  156. package/dist/components/EditableField/EditableFieldLayout.cjs.map +1 -1
  157. package/dist/components/EditableField/EditableFieldLayout.d.ts +1 -1
  158. package/dist/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  159. package/dist/components/EditableField/EditableFieldLayout.mjs +10 -10
  160. package/dist/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  161. package/dist/components/EditableField/EditableFieldTextArea.cjs +1 -1
  162. package/dist/components/EditableField/EditableFieldTextArea.mjs +1 -1
  163. package/dist/components/Form/FormBase.cjs +1 -1
  164. package/dist/components/Form/FormBase.mjs +1 -1
  165. package/dist/components/Form/elements/FormElementWrapper.cjs +2 -2
  166. package/dist/components/Form/elements/FormElementWrapper.mjs +2 -2
  167. package/dist/components/IDE/CodeBlockClient.cjs +2 -2
  168. package/dist/components/IDE/CodeBlockClient.cjs.map +1 -1
  169. package/dist/components/IDE/CodeBlockClient.mjs +2 -2
  170. package/dist/components/IDE/CodeBlockClient.mjs.map +1 -1
  171. package/dist/components/IDE/CodeBlockServer.cjs +2 -2
  172. package/dist/components/IDE/CodeBlockServer.cjs.map +1 -1
  173. package/dist/components/IDE/CodeBlockServer.mjs +2 -2
  174. package/dist/components/IDE/CodeBlockServer.mjs.map +1 -1
  175. package/dist/components/IDE/CodeContext.cjs +1 -1
  176. package/dist/components/IDE/CodeContext.mjs +1 -1
  177. package/dist/components/IDE/CopyCode.cjs +1 -1
  178. package/dist/components/IDE/CopyCode.cjs.map +1 -1
  179. package/dist/components/IDE/CopyCode.mjs +2 -2
  180. package/dist/components/IDE/CopyCode.mjs.map +1 -1
  181. package/dist/components/Input/Checkbox.cjs +21 -0
  182. package/dist/components/Input/Checkbox.cjs.map +1 -1
  183. package/dist/components/Input/Checkbox.d.ts +21 -1
  184. package/dist/components/Input/Checkbox.d.ts.map +1 -1
  185. package/dist/components/Input/Checkbox.mjs +21 -0
  186. package/dist/components/Input/Checkbox.mjs.map +1 -1
  187. package/dist/components/Input/Input.cjs +12 -0
  188. package/dist/components/Input/Input.cjs.map +1 -1
  189. package/dist/components/Input/Input.d.ts +13 -2
  190. package/dist/components/Input/Input.d.ts.map +1 -1
  191. package/dist/components/Input/Input.mjs +12 -0
  192. package/dist/components/Input/Input.mjs.map +1 -1
  193. package/dist/components/Input/index.cjs +4 -0
  194. package/dist/components/Input/index.cjs.map +1 -1
  195. package/dist/components/Input/index.mjs +6 -2
  196. package/dist/components/Link/Link.cjs +60 -19
  197. package/dist/components/Link/Link.cjs.map +1 -1
  198. package/dist/components/Link/Link.d.ts +27 -2
  199. package/dist/components/Link/Link.d.ts.map +1 -1
  200. package/dist/components/Link/Link.mjs +60 -19
  201. package/dist/components/Link/Link.mjs.map +1 -1
  202. package/dist/components/Link/index.cjs +3 -0
  203. package/dist/components/Link/index.cjs.map +1 -1
  204. package/dist/components/Link/index.mjs +4 -1
  205. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.cjs +7 -7
  206. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.cjs.map +1 -1
  207. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
  208. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +9 -9
  209. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  210. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.cjs +1 -1
  211. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs +1 -1
  212. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.cjs +3 -3
  213. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.cjs.map +1 -1
  214. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +4 -4
  215. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  216. package/dist/components/MarkDownRender/index.cjs +11 -24
  217. package/dist/components/MarkDownRender/index.cjs.map +1 -1
  218. package/dist/components/MarkDownRender/index.d.ts.map +1 -1
  219. package/dist/components/MarkDownRender/index.mjs +12 -25
  220. package/dist/components/MarkDownRender/index.mjs.map +1 -1
  221. package/dist/components/Modal/Modal.cjs +13 -4
  222. package/dist/components/Modal/Modal.cjs.map +1 -1
  223. package/dist/components/Modal/Modal.d.ts +10 -4
  224. package/dist/components/Modal/Modal.d.ts.map +1 -1
  225. package/dist/components/Modal/Modal.mjs +15 -6
  226. package/dist/components/Modal/Modal.mjs.map +1 -1
  227. package/dist/components/Modal/index.cjs +1 -0
  228. package/dist/components/Modal/index.cjs.map +1 -1
  229. package/dist/components/Modal/index.mjs +3 -2
  230. package/dist/components/Navbar/DesktopNavbar.cjs +1 -1
  231. package/dist/components/Navbar/DesktopNavbar.cjs.map +1 -1
  232. package/dist/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  233. package/dist/components/Navbar/DesktopNavbar.mjs +2 -2
  234. package/dist/components/Navbar/DesktopNavbar.mjs.map +1 -1
  235. package/dist/components/Navbar/MobileNavbar.cjs +1 -1
  236. package/dist/components/Navbar/MobileNavbar.mjs +1 -1
  237. package/dist/components/Navbar/index.cjs +1 -1
  238. package/dist/components/Navbar/index.mjs +1 -1
  239. package/dist/components/Popover/index.cjs +12 -0
  240. package/dist/components/Popover/index.cjs.map +1 -1
  241. package/dist/components/Popover/index.d.ts +10 -2
  242. package/dist/components/Popover/index.d.ts.map +1 -1
  243. package/dist/components/Popover/index.mjs +13 -1
  244. package/dist/components/Popover/index.mjs.map +1 -1
  245. package/dist/components/RightDrawer/RightDrawer.cjs +5 -5
  246. package/dist/components/RightDrawer/RightDrawer.cjs.map +1 -1
  247. package/dist/components/RightDrawer/RightDrawer.mjs +6 -6
  248. package/dist/components/RightDrawer/RightDrawer.mjs.map +1 -1
  249. package/dist/components/Select/Multiselect.cjs +1 -1
  250. package/dist/components/Select/Multiselect.cjs.map +1 -1
  251. package/dist/components/Select/Multiselect.mjs +2 -2
  252. package/dist/components/Select/Multiselect.mjs.map +1 -1
  253. package/dist/components/Select/Select.cjs +12 -1
  254. package/dist/components/Select/Select.cjs.map +1 -1
  255. package/dist/components/Select/Select.d.ts +5 -1
  256. package/dist/components/Select/Select.d.ts.map +1 -1
  257. package/dist/components/Select/Select.mjs +12 -1
  258. package/dist/components/Select/Select.mjs.map +1 -1
  259. package/dist/components/Select/index.cjs +1 -0
  260. package/dist/components/Select/index.cjs.map +1 -1
  261. package/dist/components/Select/index.mjs +2 -1
  262. package/dist/components/SwitchSelector/index.cjs +89 -18
  263. package/dist/components/SwitchSelector/index.cjs.map +1 -1
  264. package/dist/components/SwitchSelector/index.d.ts +16 -2
  265. package/dist/components/SwitchSelector/index.d.ts.map +1 -1
  266. package/dist/components/SwitchSelector/index.mjs +90 -19
  267. package/dist/components/SwitchSelector/index.mjs.map +1 -1
  268. package/dist/components/TabSelector/TabSelector.cjs +12 -1
  269. package/dist/components/TabSelector/TabSelector.cjs.map +1 -1
  270. package/dist/components/TabSelector/TabSelector.d.ts +12 -1
  271. package/dist/components/TabSelector/TabSelector.d.ts.map +1 -1
  272. package/dist/components/TabSelector/TabSelector.mjs +13 -2
  273. package/dist/components/TabSelector/TabSelector.mjs.map +1 -1
  274. package/dist/components/TabSelector/index.cjs +1 -0
  275. package/dist/components/TabSelector/index.cjs.map +1 -1
  276. package/dist/components/TabSelector/index.d.ts +1 -0
  277. package/dist/components/TabSelector/index.d.ts.map +1 -1
  278. package/dist/components/TabSelector/index.mjs +3 -2
  279. package/dist/components/Table/Table.cjs +104 -0
  280. package/dist/components/Table/Table.cjs.map +1 -0
  281. package/dist/components/Table/Table.d.ts +5 -0
  282. package/dist/components/Table/Table.d.ts.map +1 -0
  283. package/dist/components/Table/Table.mjs +104 -0
  284. package/dist/components/Table/Table.mjs.map +1 -0
  285. package/dist/components/Table/index.cjs +5 -0
  286. package/dist/components/Table/index.cjs.map +1 -0
  287. package/dist/components/Table/index.d.ts +2 -0
  288. package/dist/components/Table/index.d.ts.map +1 -0
  289. package/dist/components/Table/index.mjs +5 -0
  290. package/dist/components/Table/index.mjs.map +1 -0
  291. package/dist/components/Table/table.content.cjs +54 -0
  292. package/dist/components/Table/table.content.cjs.map +1 -0
  293. package/dist/components/Table/table.content.d.ts +106 -0
  294. package/dist/components/Table/table.content.d.ts.map +1 -0
  295. package/dist/components/Table/table.content.mjs +55 -0
  296. package/dist/components/Table/table.content.mjs.map +1 -0
  297. package/dist/components/Tag/index.cjs +131 -22
  298. package/dist/components/Tag/index.cjs.map +1 -1
  299. package/dist/components/Tag/index.d.ts +37 -5
  300. package/dist/components/Tag/index.d.ts.map +1 -1
  301. package/dist/components/Tag/index.mjs +132 -23
  302. package/dist/components/Tag/index.mjs.map +1 -1
  303. package/dist/components/TextArea/AutocompleteTextArea.cjs +1 -1
  304. package/dist/components/TextArea/AutocompleteTextArea.mjs +1 -1
  305. package/dist/components/TextArea/TextArea.cjs.map +1 -1
  306. package/dist/components/TextArea/TextArea.d.ts +5 -3
  307. package/dist/components/TextArea/TextArea.d.ts.map +1 -1
  308. package/dist/components/TextArea/TextArea.mjs.map +1 -1
  309. package/dist/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.cjs +1 -1
  310. package/dist/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.cjs.map +1 -1
  311. package/dist/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +2 -2
  312. package/dist/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  313. package/dist/components/index.cjs +34 -0
  314. package/dist/components/index.cjs.map +1 -1
  315. package/dist/components/index.mjs +47 -13
  316. package/dist/hooks/auth.cjs +2 -2
  317. package/dist/hooks/auth.cjs.map +1 -1
  318. package/dist/hooks/auth.mjs +1 -1
  319. package/dist/hooks/auth.mjs.map +1 -1
  320. package/dist/hooks/intlayerAPIHooks.cjs +1 -1
  321. package/dist/hooks/intlayerAPIHooks.d.ts +1 -1
  322. package/dist/hooks/intlayerAPIHooks.d.ts.map +1 -1
  323. package/dist/hooks/intlayerAPIHooks.mjs +1 -1
  324. package/dist/hooks/useAsync/useAsync.cjs +6 -6
  325. package/dist/hooks/useAsync/useAsync.cjs.map +1 -1
  326. package/dist/hooks/useAsync/useAsync.mjs +6 -6
  327. package/dist/hooks/useAsync/useAsync.mjs.map +1 -1
  328. package/dist/hooks/useUser/index.cjs +1 -1
  329. package/dist/hooks/useUser/index.mjs +1 -1
  330. package/dist/index-BCuMWKyy.js.map +1 -1
  331. package/dist/index-BYzBot7l.cjs.map +1 -1
  332. package/dist/{parse-BJVwmz92.cjs → parse-Ltyyb1op.cjs} +9 -11
  333. package/dist/parse-Ltyyb1op.cjs.map +1 -0
  334. package/dist/{parse-pnJgclyf.js → parse-Vrm0h1r9.js} +30 -32
  335. package/dist/parse-Vrm0h1r9.js.map +1 -0
  336. package/dist/{schemas-BIuxHDyZ.js → schemas-DEXdAbCK.js} +75 -46
  337. package/dist/schemas-DEXdAbCK.js.map +1 -0
  338. package/dist/{schemas-Q6C7ZNs3.cjs → schemas-lh5OFOvX.cjs} +75 -46
  339. package/dist/schemas-lh5OFOvX.cjs.map +1 -0
  340. package/dist/{zod-K7y5gPX4.cjs → zod-BvUVjPTw.cjs} +11 -11
  341. package/dist/zod-BvUVjPTw.cjs.map +1 -0
  342. package/dist/{zod-D4WapgbL.js → zod-CJrbzxwg.js} +11 -11
  343. package/dist/zod-CJrbzxwg.js.map +1 -0
  344. package/package.json +39 -33
  345. package/dist/better-auth.8zoxzg-F-BEBqzpjz.cjs.map +0 -1
  346. package/dist/better-auth.8zoxzg-F-D8e0X4ys.js.map +0 -1
  347. package/dist/components/Headers/SectionScroller.cjs +0 -29
  348. package/dist/components/Headers/SectionScroller.cjs.map +0 -1
  349. package/dist/components/Headers/SectionScroller.d.ts +0 -2
  350. package/dist/components/Headers/SectionScroller.d.ts.map +0 -1
  351. package/dist/components/Headers/SectionScroller.mjs +0 -29
  352. package/dist/components/Headers/SectionScroller.mjs.map +0 -1
  353. package/dist/parse-BJVwmz92.cjs.map +0 -1
  354. package/dist/parse-pnJgclyf.js.map +0 -1
  355. package/dist/schemas-BIuxHDyZ.js.map +0 -1
  356. package/dist/schemas-Q6C7ZNs3.cjs.map +0 -1
  357. package/dist/zod-D4WapgbL.js.map +0 -1
  358. package/dist/zod-K7y5gPX4.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.cjs","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Locales } from '@intlayer/config';\nimport {\n type ConditionContent,\n type ContentNode,\n type Dictionary,\n type EnumerationContent,\n type KeyPath,\n type MarkdownContent,\n type NestedContent,\n type TranslationContent,\n FileContent,\n getEmptyNode,\n getLocaleName,\n getNodeType,\n InsertionContent,\n NodeType,\n} from '@intlayer/core';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport { Plus, Trash, WandSparkles } from 'lucide-react';\nimport { type FC, Fragment, ReactNode, useState } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { useAuditContentDeclarationField } from '../../../hooks';\nimport { renameKey } from '../../../utils/object';\nimport { Button } from '../../Button';\nimport { Container } from '../../Container';\nimport {\n type ContentEditorInputProps as ContentEditorInputPropsBase,\n ContentEditorInput as ContentEditorInputBase,\n} from '../../ContentEditor/ContentEditorInput';\nimport {\n type ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n ContentEditorTextArea as ContentEditorTextAreaBase,\n} from '../../ContentEditor/ContentEditorTextArea';\nimport { Label } from '../../Label';\nimport { useLocaleSwitcherContent } from '../../LocaleSwitcherContentDropDown';\nimport { MarkdownRenderer } from '../../MarkDownRender';\nimport {\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n SwitchSelector,\n} from '../../SwitchSelector';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { navigationViewContent } from '../NavigationView/navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype ContentEditorTextAreaProps = Omit<\n ContentEditorTextAreaPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { editedContent, addEditedContent } = useEditedContent();\n const configuration = useConfiguration();\n const { auditContentDeclarationField, isLoading: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n additionalButtons={\n <Button\n Icon={WandSparkles}\n label=\"Audit\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n isLoading={isAuditing}\n onClick={() => {\n auditContentDeclarationField({\n fileContent: JSON.stringify({\n ...dictionary,\n ...(editedContent?.[dictionary.key] ?? {}),\n }),\n keyPath,\n locales: configuration.internationalization.locales ?? [],\n aiOptions: {\n apiKey: configuration.ai?.apiKey,\n model: configuration.ai?.model,\n temperature: configuration.ai?.temperature,\n },\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(dictionary.key, editedContent, keyPath);\n } catch (error) {\n console.error(error);\n }\n });\n }}\n />\n }\n {...props}\n />\n );\n};\n\ntype ContentEditorInputProps = Omit<\n ContentEditorInputPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorInput: FC<ContentEditorInputProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <ContentEditorInputBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n {...props}\n />\n );\n};\n\nconst toggleContent = [\n {\n content: 'False',\n value: false,\n },\n {\n content: 'True',\n value: true,\n },\n] as SwitchSelectorChoices<boolean>;\n\ntype ContentEditorToggleProps = SwitchSelectorProps & {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n};\n\nconst ContentEditorToggle: FC<ContentEditorToggleProps> = ({\n dictionary,\n keyPath,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <SwitchSelector\n choices={toggleContent}\n value={true}\n onChange={(value) => addEditedContent(dictionary.key, value, keyPath)}\n color=\"text\"\n size=\"sm\"\n {...props}\n />\n );\n};\n\nexport type TextEditorProps = {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n section: ContentNode;\n isDarkMode?: boolean;\n renderSection?: (content: string) => ReactNode;\n onContentChange?: (newValue: string) => void;\n};\n\nconst TranslationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}: TextEditorProps) => {\n const { locale, defaultLocale } = useLocale();\n const { selectedLocales, availableLocales } = useLocaleSwitcherContent();\n\n const sectionContent = (section as TranslationContent<string>)[\n NodeType.Translation\n ] as Record<Locales, string>;\n\n const sectionContentKeys = Object.keys(sectionContent) as Locales[];\n\n const isFiltered = availableLocales.length > selectedLocales.length;\n\n const localesList = isFiltered\n ? selectedLocales\n : // If the translation include content in other locales, we display all of them\n [...new Set([...availableLocales, ...sectionContentKeys])];\n\n const content = (section as TranslationContent<string>)[NodeType.Translation];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {localesList.map((translationKey) => (\n <Fragment key={translationKey}>\n <tr className=\"mt-2 w-full p-2 text-xs\">\n {getLocaleName(translationKey, locale)}\n </tr>\n <tr>\n <TextEditorContainer\n section={\n content[translationKey] ??\n getEmptyNode(content[defaultLocale])\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst EnumerationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration, removeEnumeration } = useDictionary(\n navigationViewContent\n );\n\n const content = (section as EnumerationContent<string>)[NodeType.Enumeration];\n const firstKey = Object.keys(content)[0] as keyof typeof content;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {Object.keys(\n (section as EnumerationContent<ContentNode>)[NodeType.Enumeration]\n ).map((enumKey) => {\n const childrenKeyPath = [\n ...keyPath,\n { type: NodeType.Enumeration },\n ] as KeyPath[];\n return (\n <Fragment key={enumKey}>\n <tr className=\"mt-2 w-full\">\n <div className=\"flex flex-1\">\n <Button\n label={removeEnumeration.label.value}\n variant=\"hoverable\"\n color=\"text\"\n Icon={Trash}\n className=\"ml-auto\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n undefined,\n childrenKeyPath\n )\n }\n >\n {removeEnumeration.text}\n </Button>\n </div>\n </tr>\n <tr className=\"w-full p-2\">\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeType.Enumeration];\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeType.Enumeration]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </tr>\n <tr className=\"block w-full\">\n <TextEditor\n section={\n content[enumKey as keyof typeof content] ??\n getEmptyNode(content[firstKey])\n }\n keyPath={childrenKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n );\n })}\n </tbody>\n </table>\n\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n isFullWidth\n onClick={() =>\n addEditedContent(\n dictionary.key,\n getEmptyNode(content[firstKey]) ?? '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }]\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </div>\n );\n};\n\nconst ConditionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const content = (section as ConditionContent<string>)[NodeType.Condition];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {['true', 'false', 'fallback'].map((condKey) => (\n <Fragment key={condKey}>\n <tr key={condKey} className=\"mt-2 block w-full p-2 text-xs\">\n {String(condKey)}\n </tr>\n <tr key={condKey} className=\"block w-full\">\n <TextEditorContainer\n section={\n content[condKey as keyof typeof content] ??\n getEmptyNode(content['true'])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Condition,\n key: condKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst ArrayTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewElement, removeElement } = useDictionary(navigationViewContent);\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {(section as unknown as ContentNode[]).map((subSection, index) => (\n <Fragment key={JSON.stringify(subSection)}>\n <tr className=\"mt-2 flex w-full justify-between gap-2 p-2\">\n <span className=\"text-xs\">{String(index)}</span>\n <Button\n label={removeElement.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n className=\"ml-auto\"\n textAlign=\"left\"\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n addEditedContent(dictionary.key, undefined, newKeyPath);\n }}\n Icon={Trash}\n >\n {removeElement.text}\n </Button>\n </tr>\n\n <tr className=\"block w-full\">\n <TextEditorContainer\n section={\n subSection ??\n getEmptyNode((section as unknown as ContentNode[])[0])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: index,\n },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n <Button\n label={addNewElement.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n isFullWidth\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n addEditedContent(\n dictionary.key,\n getEmptyNode((section as unknown as ContentNode[])[0]) ?? '',\n newKeyPath,\n false\n );\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n};\n\nconst ObjectTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => (\n <>\n <table className=\"w-full\">\n <tbody className=\"flex flex-col gap-2\">\n {Object.keys(section as unknown as Record<string, ContentNode>).map(\n (key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Object, key },\n ];\n const typedSection = section as unknown as Record<\n string,\n ContentNode\n >;\n const firstKey = Object.keys(\n typedSection\n )[0] as keyof typeof section;\n const subSection =\n typedSection[key as keyof typeof section] ??\n getEmptyNode(typedSection[firstKey]);\n\n return (\n <Fragment key={key}>\n <tr\n key={JSON.stringify(subSection)}\n className=\"mt-2 p-2 text-xs\"\n >\n {String(key)}\n </tr>\n <tr key={JSON.stringify(subSection)} className=\"block w-full\">\n <TextEditor\n section={subSection}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n );\n }\n )}\n </tbody>\n </table>\n </>\n);\n\nenum MarkdownViewMode {\n Edit,\n Preview,\n}\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n onContentChange,\n}) => {\n const [mode, setMode] = useState(MarkdownViewMode.Edit);\n const toggleContent = [\n {\n content: 'Edit',\n value: MarkdownViewMode.Edit,\n },\n {\n content: 'Preview',\n value: MarkdownViewMode.Preview,\n },\n ] as SwitchSelectorChoices<MarkdownViewMode>;\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.Markdown }];\n\n const content = (section as MarkdownContent<ContentNode>)[\n NodeType.Markdown\n ] as ContentNode;\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <SwitchSelector\n choices={toggleContent}\n value={mode}\n onChange={setMode}\n color=\"text\"\n size=\"sm\"\n className=\"ml-auto\"\n />\n\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={\n mode === MarkdownViewMode.Preview\n ? (content) => (\n <MarkdownRenderer isDarkMode={isDarkMode}>\n {content}\n </MarkdownRenderer>\n )\n : undefined\n }\n onContentChange={onContentChange}\n />\n </div>\n );\n};\n\nconst InsertionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.Insertion }];\n\n const content = (section as InsertionContent<ContentNode>)[\n NodeType.Insertion\n ];\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n {...props}\n />\n </div>\n );\n};\n\nconst FileTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.File }];\n\n const fileUrl = (section as FileContent)[NodeType.File];\n const { content } = section as FileContent;\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <span className=\"text-neutral text-sm\">{fileUrl} </span>\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n {...props}\n />\n </div>\n );\n};\n\nconst NestedTextEditor: FC<TextEditorProps> = ({\n keyPath,\n dictionary,\n renderSection,\n section,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n const content = (section as NestedContent)[NodeType.Nested];\n const childrenKeyPath = [...keyPath, { type: NodeType.Nested }] as KeyPath[];\n\n return (\n <div className=\"w-full p-2\">\n <Label>Dictionary key</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n {...props}\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n dictionaryKey: String(newValue),\n },\n childrenKeyPath\n );\n }}\n >\n {content.dictionaryKey ?? ''}\n </ContentEditorInputBase>\n\n <Label>Path (optional)</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n {...props}\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n path: newValue !== '' ? newValue : undefined,\n },\n childrenKeyPath\n );\n }}\n >\n {content.path ?? ''}\n </ContentEditorInputBase>\n </div>\n );\n};\n\nexport const TextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n isDarkMode,\n}) => {\n const { tsxNotEditable } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n\n if (nodeType === NodeType.ReactNode) {\n return (\n <>\n <span>[React Node]</span>\n <span className=\"text-neutral text-xs\">{tsxNotEditable}</span>\n </>\n );\n }\n\n if (nodeType === NodeType.Nested) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Enumeration) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Condition) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Insertion) {\n return (\n <InsertionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Markdown) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n isDarkMode={isDarkMode}\n />\n );\n }\n\n if (nodeType === NodeType.File) {\n return (\n <FileTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Object) {\n return (\n <ObjectTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Number) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorInput\n dictionary={dictionary}\n keyPath={keyPath}\n type=\"number\"\n aria-label=\"Edit field\"\n >\n {section as number}\n </ContentEditorInput>\n </div>\n );\n }\n\n if (nodeType === NodeType.Text) {\n return (\n <div className=\"w-full p-2\">\n {typeof renderSection === 'function' ? (\n renderSection(section as string)\n ) : (\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={keyPath}\n dictionary={dictionary}\n >\n {section as string}\n </ContentEditorTextArea>\n )}\n </div>\n );\n }\n\n if (nodeType === NodeType.Boolean) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorToggle\n dictionary={dictionary}\n keyPath={keyPath}\n value={section as boolean}\n />\n </div>\n );\n }\n\n return (\n <div className=\"w-full p-2\">\n Error. Format not supported.\n {JSON.stringify(section, null, 2)}\n {JSON.stringify(keyPath, null, 2)}\n NodeType : {nodeType}\n </div>\n );\n};\n\nexport const TextEditorContainer: FC<TextEditorProps> = (props) => (\n <Container\n border\n background=\"none\"\n className=\"top-6 flex h-full flex-1 flex-col gap-6 overflow-hidden p-2 md:sticky\"\n roundedSize=\"xl\"\n >\n <TextEditor {...props} />\n </Container>\n);\n"],"names":["useEditedContent","useConfiguration","useAuditContentDeclarationField","jsx","ContentEditorTextAreaBase","Button","WandSparkles","editedContent","ContentEditorInputBase","SwitchSelector","useLocale","useLocaleSwitcherContent","NodeType","jsxs","Fragment","getLocaleName","getEmptyNode","useDictionary","navigationViewContent","Trash","EnumKeyInput","renameKey","Plus","useState","toggleContent","content","MarkdownRenderer","Label","getNodeType","Container"],"mappings":"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"}
1
+ {"version":3,"file":"TextEditor.cjs","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Locales } from '@intlayer/config';\nimport {\n type ConditionContent,\n type ContentNode,\n type Dictionary,\n type EnumerationContent,\n type KeyPath,\n type MarkdownContent,\n type NestedContent,\n type TranslationContent,\n FileContent,\n getEmptyNode,\n getLocaleName,\n getNodeType,\n InsertionContent,\n NodeType,\n} from '@intlayer/core';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport { Plus, Trash, WandSparkles } from 'lucide-react';\nimport { type FC, Fragment, ReactNode, useState } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { useAuditContentDeclarationField } from '../../../hooks';\nimport { renameKey } from '../../../utils/object';\nimport {\n Button,\n ButtonColor,\n ButtonSize,\n ButtonTextAlign,\n ButtonVariant,\n} from '../../Button';\nimport { Container } from '../../Container';\nimport {\n type ContentEditorInputProps as ContentEditorInputPropsBase,\n ContentEditorInput as ContentEditorInputBase,\n} from '../../ContentEditor/ContentEditorInput';\nimport {\n type ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n ContentEditorTextArea as ContentEditorTextAreaBase,\n} from '../../ContentEditor/ContentEditorTextArea';\nimport { InputVariant } from '../../Input';\nimport { Label } from '../../Label';\nimport { useLocaleSwitcherContent } from '../../LocaleSwitcherContentDropDown';\nimport { MarkdownRenderer } from '../../MarkDownRender';\nimport {\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n SwitchSelector,\n SwitchSelectorColor,\n SwitchSelectorSize,\n} from '../../SwitchSelector';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { navigationViewContent } from '../NavigationView/navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype ContentEditorTextAreaProps = Omit<\n ContentEditorTextAreaPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { editedContent, addEditedContent } = useEditedContent();\n const configuration = useConfiguration();\n const { auditContentDeclarationField, isLoading: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant={InputVariant.DEFAULT}\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n additionalButtons={\n <Button\n Icon={WandSparkles}\n label=\"Audit\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"cursor-pointer hover:scale-110\"\n isLoading={isAuditing}\n onClick={() => {\n auditContentDeclarationField({\n fileContent: JSON.stringify({\n ...dictionary,\n ...(editedContent?.[dictionary.key] ?? {}),\n }),\n keyPath,\n locales: configuration.internationalization.locales ?? [],\n aiOptions: {\n apiKey: configuration.ai?.apiKey,\n model: configuration.ai?.model,\n temperature: configuration.ai?.temperature,\n },\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(dictionary.key, editedContent, keyPath);\n } catch (error) {\n console.error(error);\n }\n });\n }}\n />\n }\n {...props}\n />\n );\n};\n\ntype ContentEditorInputProps = Omit<\n ContentEditorInputPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorInput: FC<ContentEditorInputProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <ContentEditorInputBase\n variant={InputVariant.DEFAULT}\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n {...props}\n />\n );\n};\n\nconst toggleContent = [\n {\n content: 'False',\n value: false,\n },\n {\n content: 'True',\n value: true,\n },\n] as SwitchSelectorChoices<boolean>;\n\ntype ContentEditorToggleProps = SwitchSelectorProps & {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n};\n\nconst ContentEditorToggle: FC<ContentEditorToggleProps> = ({\n dictionary,\n keyPath,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <SwitchSelector\n choices={toggleContent}\n value={true}\n onChange={(value) => addEditedContent(dictionary.key, value, keyPath)}\n color={SwitchSelectorColor.TEXT}\n size={SwitchSelectorSize.SM}\n {...props}\n />\n );\n};\n\nexport type TextEditorProps = {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n section: ContentNode;\n isDarkMode?: boolean;\n renderSection?: (content: string) => ReactNode;\n onContentChange?: (newValue: string) => void;\n};\n\nconst TranslationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}: TextEditorProps) => {\n const { locale, defaultLocale } = useLocale();\n const { selectedLocales, availableLocales } = useLocaleSwitcherContent();\n\n const sectionContent = (section as TranslationContent<string>)[\n NodeType.Translation\n ] as Record<Locales, string>;\n\n const sectionContentKeys = Object.keys(sectionContent) as Locales[];\n\n const isFiltered = availableLocales.length > selectedLocales.length;\n\n const localesList = isFiltered\n ? selectedLocales\n : // If the translation include content in other locales, we display all of them\n [...new Set([...availableLocales, ...sectionContentKeys])];\n\n const content = (section as TranslationContent<string>)[NodeType.Translation];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {localesList.map((translationKey) => (\n <Fragment key={translationKey}>\n <tr className=\"mt-2 w-full p-2 text-xs\">\n {getLocaleName(translationKey, locale)}\n </tr>\n <tr>\n <TextEditorContainer\n section={\n content[translationKey] ??\n getEmptyNode(content[defaultLocale])\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst EnumerationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration, removeEnumeration } = useDictionary(\n navigationViewContent\n );\n\n const content = (section as EnumerationContent<string>)[NodeType.Enumeration];\n const firstKey = Object.keys(content)[0] as keyof typeof content;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {Object.keys(\n (section as EnumerationContent<ContentNode>)[NodeType.Enumeration]\n ).map((enumKey) => {\n const childrenKeyPath = [\n ...keyPath,\n { type: NodeType.Enumeration },\n ] as KeyPath[];\n return (\n <Fragment key={enumKey}>\n <tr className=\"mt-2 w-full\">\n <div className=\"flex flex-1\">\n <Button\n label={removeEnumeration.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n Icon={Trash}\n className=\"ml-auto\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n undefined,\n childrenKeyPath\n )\n }\n >\n {removeEnumeration.text}\n </Button>\n </div>\n </tr>\n <tr className=\"w-full p-2\">\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeType.Enumeration];\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeType.Enumeration]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </tr>\n <tr className=\"block w-full\">\n <TextEditor\n section={\n content[enumKey as keyof typeof content] ??\n getEmptyNode(content[firstKey])\n }\n keyPath={childrenKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n );\n })}\n </tbody>\n </table>\n\n <Button\n label={addNewEnumeration.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n isFullWidth\n onClick={() =>\n addEditedContent(\n dictionary.key,\n getEmptyNode(content[firstKey]) ?? '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }]\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </div>\n );\n};\n\nconst ConditionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const content = (section as ConditionContent<string>)[NodeType.Condition];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {['true', 'false', 'fallback'].map((condKey) => (\n <Fragment key={condKey}>\n <tr key={condKey} className=\"mt-2 block w-full p-2 text-xs\">\n {String(condKey)}\n </tr>\n <tr key={condKey} className=\"block w-full\">\n <TextEditorContainer\n section={\n content[condKey as keyof typeof content] ??\n getEmptyNode(content['true'])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Condition,\n key: condKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst ArrayTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewElement, removeElement } = useDictionary(navigationViewContent);\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {(section as unknown as ContentNode[]).map((subSection, index) => (\n <Fragment key={JSON.stringify(subSection)}>\n <tr className=\"mt-2 flex w-full justify-between gap-2 p-2\">\n <span className=\"text-xs\">{String(index)}</span>\n <Button\n label={removeElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n className=\"ml-auto\"\n textAlign={ButtonTextAlign.LEFT}\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n addEditedContent(dictionary.key, undefined, newKeyPath);\n }}\n Icon={Trash}\n >\n {removeElement.text}\n </Button>\n </tr>\n\n <tr className=\"block w-full\">\n <TextEditorContainer\n section={\n subSection ??\n getEmptyNode((section as unknown as ContentNode[])[0])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: index,\n },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n <Button\n label={addNewElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n isFullWidth\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n addEditedContent(\n dictionary.key,\n getEmptyNode((section as unknown as ContentNode[])[0]) ?? '',\n newKeyPath,\n false\n );\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n};\n\nconst ObjectTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => (\n <>\n <table className=\"w-full\">\n <tbody className=\"flex flex-col gap-2\">\n {Object.keys(section as unknown as Record<string, ContentNode>).map(\n (key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Object, key },\n ];\n const typedSection = section as unknown as Record<\n string,\n ContentNode\n >;\n const firstKey = Object.keys(\n typedSection\n )[0] as keyof typeof section;\n const subSection =\n typedSection[key as keyof typeof section] ??\n getEmptyNode(typedSection[firstKey]);\n\n return (\n <Fragment key={key}>\n <tr\n key={JSON.stringify(subSection)}\n className=\"mt-2 p-2 text-xs\"\n >\n {String(key)}\n </tr>\n <tr key={JSON.stringify(subSection)} className=\"block w-full\">\n <TextEditor\n section={subSection}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n );\n }\n )}\n </tbody>\n </table>\n </>\n);\n\nenum MarkdownViewMode {\n Edit,\n Preview,\n}\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n onContentChange,\n}) => {\n const [mode, setMode] = useState(MarkdownViewMode.Edit);\n const toggleContent = [\n {\n content: 'Edit',\n value: MarkdownViewMode.Edit,\n },\n {\n content: 'Preview',\n value: MarkdownViewMode.Preview,\n },\n ] as SwitchSelectorChoices<MarkdownViewMode>;\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.Markdown }];\n\n const content = (section as MarkdownContent<ContentNode>)[\n NodeType.Markdown\n ] as ContentNode;\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <SwitchSelector\n choices={toggleContent}\n value={mode}\n onChange={setMode}\n color={SwitchSelectorColor.TEXT}\n size={SwitchSelectorSize.SM}\n className=\"ml-auto\"\n />\n\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={\n mode === MarkdownViewMode.Preview\n ? (content) => (\n <MarkdownRenderer isDarkMode={isDarkMode}>\n {content}\n </MarkdownRenderer>\n )\n : undefined\n }\n onContentChange={onContentChange}\n />\n </div>\n );\n};\n\nconst InsertionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.Insertion }];\n\n const content = (section as InsertionContent<ContentNode>)[\n NodeType.Insertion\n ];\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n {...props}\n />\n </div>\n );\n};\n\nconst FileTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.File }];\n\n const fileUrl = (section as FileContent)[NodeType.File];\n const { content } = section as FileContent;\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <span className=\"text-neutral text-sm\">{fileUrl} </span>\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n {...props}\n />\n </div>\n );\n};\n\nconst NestedTextEditor: FC<TextEditorProps> = ({\n keyPath,\n dictionary,\n renderSection,\n section,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n const content = (section as NestedContent)[NodeType.Nested];\n const childrenKeyPath = [...keyPath, { type: NodeType.Nested }] as KeyPath[];\n\n return (\n <div className=\"w-full p-2\">\n <Label>Dictionary key</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant={InputVariant.DEFAULT}\n {...props}\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n dictionaryKey: String(newValue),\n },\n childrenKeyPath\n );\n }}\n >\n {content.dictionaryKey ?? ''}\n </ContentEditorInputBase>\n\n <Label>Path (optional)</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant={InputVariant.DEFAULT}\n {...props}\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n path: newValue !== '' ? newValue : undefined,\n },\n childrenKeyPath\n );\n }}\n >\n {content.path ?? ''}\n </ContentEditorInputBase>\n </div>\n );\n};\n\nexport const TextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n isDarkMode,\n}) => {\n const { tsxNotEditable } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n\n if (nodeType === NodeType.ReactNode) {\n return (\n <>\n <span>[React Node]</span>\n <span className=\"text-neutral text-xs\">{tsxNotEditable}</span>\n </>\n );\n }\n\n if (nodeType === NodeType.Nested) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Enumeration) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Condition) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Insertion) {\n return (\n <InsertionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Markdown) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n isDarkMode={isDarkMode}\n />\n );\n }\n\n if (nodeType === NodeType.File) {\n return (\n <FileTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Object) {\n return (\n <ObjectTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Number) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorInput\n dictionary={dictionary}\n keyPath={keyPath}\n type=\"number\"\n aria-label=\"Edit field\"\n >\n {section as number}\n </ContentEditorInput>\n </div>\n );\n }\n\n if (nodeType === NodeType.Text) {\n return (\n <div className=\"w-full p-2\">\n {typeof renderSection === 'function' ? (\n renderSection(section as string)\n ) : (\n <ContentEditorTextArea\n variant={InputVariant.DEFAULT}\n aria-label=\"Edit field\"\n keyPath={keyPath}\n dictionary={dictionary}\n >\n {section as string}\n </ContentEditorTextArea>\n )}\n </div>\n );\n }\n\n if (nodeType === NodeType.Boolean) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorToggle\n dictionary={dictionary}\n keyPath={keyPath}\n value={section as boolean}\n />\n </div>\n );\n }\n\n return (\n <div className=\"w-full p-2\">\n Error. Format not supported.\n {JSON.stringify(section, null, 2)}\n {JSON.stringify(keyPath, null, 2)}\n NodeType : {nodeType}\n </div>\n );\n};\n\nexport const TextEditorContainer: FC<TextEditorProps> = (props) => (\n <Container\n border\n background=\"none\"\n className=\"top-6 flex h-full flex-1 flex-col gap-6 overflow-hidden p-2 md:sticky\"\n roundedSize=\"xl\"\n >\n <TextEditor {...props} />\n </Container>\n);\n"],"names":["useEditedContent","useConfiguration","useAuditContentDeclarationField","jsx","ContentEditorTextAreaBase","InputVariant","Button","WandSparkles","ButtonVariant","ButtonSize","ButtonColor","editedContent","ContentEditorInputBase","SwitchSelector","SwitchSelectorColor","SwitchSelectorSize","useLocale","useLocaleSwitcherContent","NodeType","jsxs","Fragment","getLocaleName","getEmptyNode","useDictionary","navigationViewContent","Trash","EnumKeyInput","renameKey","ButtonTextAlign","Plus","useState","toggleContent","content","MarkdownRenderer","Label","getNodeType","Container"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,UAAU,EAEf,KAAK,OAAO,EAUb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,EAAY,SAAS,EAAY,MAAM,OAAO,CAAC;AAyB/D,eAAO,MAAM,SAAS,EAAE,MAAM,EAAmC,CAAC;AAgIlE,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C,CAAC;AAsfF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA4K1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,eAAe,CASnD,CAAC"}
1
+ {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,UAAU,EAEf,KAAK,OAAO,EAUb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,EAAY,SAAS,EAAY,MAAM,OAAO,CAAC;AAkC/D,eAAO,MAAM,SAAS,EAAE,MAAM,EAAmC,CAAC;AAgIlE,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C,CAAC;AAsfF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA4K1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,eAAe,CASnD,CAAC"}
@@ -6,24 +6,24 @@ import { Trash, Plus, WandSparkles } from "lucide-react";
6
6
  import { Fragment as Fragment$1, useState } from "react";
7
7
  import { useDictionary, useLocale } from "react-intlayer";
8
8
  import "@intlayer/config/built";
9
- import "../../../better-auth.8zoxzg-F-D8e0X4ys.js";
9
+ import "../../../better-auth.CMQ3rA-I-7umXOENE.js";
10
10
  import { useAuditContentDeclarationField } from "../../../hooks/intlayerAPIHooks.mjs";
11
11
  import "../../../hooks/useAsync/useAsyncStateStore.mjs";
12
12
  import "@intlayer/api";
13
13
  import "deepmerge";
14
14
  import "../../../hooks/useScrollBlockage/useScrollBlockageStore.mjs";
15
15
  import { renameKey } from "../../../utils/object.mjs";
16
- import { Button } from "../../Button/Button.mjs";
16
+ import { Button, ButtonColor, ButtonVariant, ButtonTextAlign, ButtonSize } from "../../Button/Button.mjs";
17
17
  import { Container } from "../../Container/index.mjs";
18
18
  import { ContentEditorInput as ContentEditorInput$1 } from "../../ContentEditor/ContentEditorInput.mjs";
19
19
  import { ContentEditorTextArea as ContentEditorTextArea$1 } from "../../ContentEditor/ContentEditorTextArea.mjs";
20
+ import { InputVariant } from "../../Input/Input.mjs";
21
+ import "../../Input/Checkbox.mjs";
20
22
  import { Label } from "../../Label/index.mjs";
21
23
  import "@intlayer/config/client";
22
24
  import "fuse.js";
23
25
  import "../../DropDown/index.mjs";
24
- import "../../Input/Input.mjs";
25
- import "../../Input/Checkbox.mjs";
26
- import { SwitchSelector } from "../../SwitchSelector/index.mjs";
26
+ import { SwitchSelector, SwitchSelectorSize, SwitchSelectorColor } from "../../SwitchSelector/index.mjs";
27
27
  import "../../LocaleSwitcherContentDropDown/localeSwitcher.content.mjs";
28
28
  import { useLocaleSwitcherContent } from "../../LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs";
29
29
  import { MarkdownRenderer } from "../../MarkDownRender/index.mjs";
@@ -41,16 +41,16 @@ const ContentEditorTextArea = ({
41
41
  return /* @__PURE__ */ jsx(
42
42
  ContentEditorTextArea$1,
43
43
  {
44
- variant: "default",
44
+ variant: InputVariant.DEFAULT,
45
45
  onContentChange: (newValue) => addEditedContent(dictionary.key, newValue, keyPath),
46
46
  additionalButtons: /* @__PURE__ */ jsx(
47
47
  Button,
48
48
  {
49
49
  Icon: WandSparkles,
50
50
  label: "Audit",
51
- variant: "hoverable",
52
- size: "icon-sm",
53
- color: "text",
51
+ variant: ButtonVariant.HOVERABLE,
52
+ size: ButtonSize.ICON_SM,
53
+ color: ButtonColor.TEXT,
54
54
  className: "cursor-pointer hover:scale-110",
55
55
  isLoading: isAuditing,
56
56
  onClick: () => {
@@ -91,7 +91,7 @@ const ContentEditorInput = ({
91
91
  return /* @__PURE__ */ jsx(
92
92
  ContentEditorInput$1,
93
93
  {
94
- variant: "default",
94
+ variant: InputVariant.DEFAULT,
95
95
  onContentChange: (newValue) => addEditedContent(dictionary.key, newValue, keyPath),
96
96
  ...props
97
97
  }
@@ -119,8 +119,8 @@ const ContentEditorToggle = ({
119
119
  choices: toggleContent,
120
120
  value: true,
121
121
  onChange: (value) => addEditedContent(dictionary.key, value, keyPath),
122
- color: "text",
123
- size: "sm",
122
+ color: SwitchSelectorColor.TEXT,
123
+ size: SwitchSelectorSize.SM,
124
124
  ...props
125
125
  }
126
126
  );
@@ -182,8 +182,8 @@ const EnumerationTextEditor = ({
182
182
  Button,
183
183
  {
184
184
  label: removeEnumeration.label.value,
185
- variant: "hoverable",
186
- color: "text",
185
+ variant: ButtonVariant.HOVERABLE,
186
+ color: ButtonColor.TEXT,
187
187
  Icon: Trash,
188
188
  className: "ml-auto",
189
189
  onClick: () => addEditedContent(
@@ -228,9 +228,9 @@ const EnumerationTextEditor = ({
228
228
  Button,
229
229
  {
230
230
  label: addNewEnumeration.label.value,
231
- variant: "hoverable",
232
- color: "neutral",
233
- textAlign: "left",
231
+ variant: ButtonVariant.HOVERABLE,
232
+ color: ButtonColor.NEUTRAL,
233
+ textAlign: ButtonTextAlign.LEFT,
234
234
  isFullWidth: true,
235
235
  onClick: () => addEditedContent(
236
236
  dictionary.key,
@@ -286,10 +286,10 @@ const ArrayTextEditor = ({
286
286
  Button,
287
287
  {
288
288
  label: removeElement.label.value,
289
- variant: "hoverable",
290
- color: "neutral",
289
+ variant: ButtonVariant.HOVERABLE,
290
+ color: ButtonColor.NEUTRAL,
291
291
  className: "ml-auto",
292
- textAlign: "left",
292
+ textAlign: ButtonTextAlign.LEFT,
293
293
  onClick: () => {
294
294
  const newKeyPath = [
295
295
  ...keyPath,
@@ -325,9 +325,9 @@ const ArrayTextEditor = ({
325
325
  Button,
326
326
  {
327
327
  label: addNewElement.label.value,
328
- variant: "hoverable",
329
- color: "neutral",
330
- textAlign: "left",
328
+ variant: ButtonVariant.HOVERABLE,
329
+ color: ButtonColor.NEUTRAL,
330
+ textAlign: ButtonTextAlign.LEFT,
331
331
  isFullWidth: true,
332
332
  onClick: () => {
333
333
  const newKeyPath = [
@@ -419,8 +419,8 @@ const MarkdownTextEditor = ({
419
419
  choices: toggleContent2,
420
420
  value: mode,
421
421
  onChange: setMode,
422
- color: "text",
423
- size: "sm",
422
+ color: SwitchSelectorColor.TEXT,
423
+ size: SwitchSelectorSize.SM,
424
424
  className: "ml-auto"
425
425
  }
426
426
  ),
@@ -492,7 +492,7 @@ const NestedTextEditor = ({
492
492
  {
493
493
  "aria-label": "Edit field",
494
494
  type: "text",
495
- variant: "default",
495
+ variant: InputVariant.DEFAULT,
496
496
  ...props,
497
497
  onContentChange: (newValue) => {
498
498
  addEditedContent(
@@ -513,7 +513,7 @@ const NestedTextEditor = ({
513
513
  {
514
514
  "aria-label": "Edit field",
515
515
  type: "text",
516
- variant: "default",
516
+ variant: InputVariant.DEFAULT,
517
517
  ...props,
518
518
  onContentChange: (newValue) => {
519
519
  addEditedContent(
@@ -660,7 +660,7 @@ const TextEditor = ({
660
660
  return /* @__PURE__ */ jsx("div", { className: "w-full p-2", children: typeof renderSection === "function" ? renderSection(section) : /* @__PURE__ */ jsx(
661
661
  ContentEditorTextArea,
662
662
  {
663
- variant: "default",
663
+ variant: InputVariant.DEFAULT,
664
664
  "aria-label": "Edit field",
665
665
  keyPath,
666
666
  dictionary,
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.mjs","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Locales } from '@intlayer/config';\nimport {\n type ConditionContent,\n type ContentNode,\n type Dictionary,\n type EnumerationContent,\n type KeyPath,\n type MarkdownContent,\n type NestedContent,\n type TranslationContent,\n FileContent,\n getEmptyNode,\n getLocaleName,\n getNodeType,\n InsertionContent,\n NodeType,\n} from '@intlayer/core';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport { Plus, Trash, WandSparkles } from 'lucide-react';\nimport { type FC, Fragment, ReactNode, useState } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { useAuditContentDeclarationField } from '../../../hooks';\nimport { renameKey } from '../../../utils/object';\nimport { Button } from '../../Button';\nimport { Container } from '../../Container';\nimport {\n type ContentEditorInputProps as ContentEditorInputPropsBase,\n ContentEditorInput as ContentEditorInputBase,\n} from '../../ContentEditor/ContentEditorInput';\nimport {\n type ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n ContentEditorTextArea as ContentEditorTextAreaBase,\n} from '../../ContentEditor/ContentEditorTextArea';\nimport { Label } from '../../Label';\nimport { useLocaleSwitcherContent } from '../../LocaleSwitcherContentDropDown';\nimport { MarkdownRenderer } from '../../MarkDownRender';\nimport {\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n SwitchSelector,\n} from '../../SwitchSelector';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { navigationViewContent } from '../NavigationView/navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype ContentEditorTextAreaProps = Omit<\n ContentEditorTextAreaPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { editedContent, addEditedContent } = useEditedContent();\n const configuration = useConfiguration();\n const { auditContentDeclarationField, isLoading: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n additionalButtons={\n <Button\n Icon={WandSparkles}\n label=\"Audit\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n isLoading={isAuditing}\n onClick={() => {\n auditContentDeclarationField({\n fileContent: JSON.stringify({\n ...dictionary,\n ...(editedContent?.[dictionary.key] ?? {}),\n }),\n keyPath,\n locales: configuration.internationalization.locales ?? [],\n aiOptions: {\n apiKey: configuration.ai?.apiKey,\n model: configuration.ai?.model,\n temperature: configuration.ai?.temperature,\n },\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(dictionary.key, editedContent, keyPath);\n } catch (error) {\n console.error(error);\n }\n });\n }}\n />\n }\n {...props}\n />\n );\n};\n\ntype ContentEditorInputProps = Omit<\n ContentEditorInputPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorInput: FC<ContentEditorInputProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <ContentEditorInputBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n {...props}\n />\n );\n};\n\nconst toggleContent = [\n {\n content: 'False',\n value: false,\n },\n {\n content: 'True',\n value: true,\n },\n] as SwitchSelectorChoices<boolean>;\n\ntype ContentEditorToggleProps = SwitchSelectorProps & {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n};\n\nconst ContentEditorToggle: FC<ContentEditorToggleProps> = ({\n dictionary,\n keyPath,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <SwitchSelector\n choices={toggleContent}\n value={true}\n onChange={(value) => addEditedContent(dictionary.key, value, keyPath)}\n color=\"text\"\n size=\"sm\"\n {...props}\n />\n );\n};\n\nexport type TextEditorProps = {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n section: ContentNode;\n isDarkMode?: boolean;\n renderSection?: (content: string) => ReactNode;\n onContentChange?: (newValue: string) => void;\n};\n\nconst TranslationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}: TextEditorProps) => {\n const { locale, defaultLocale } = useLocale();\n const { selectedLocales, availableLocales } = useLocaleSwitcherContent();\n\n const sectionContent = (section as TranslationContent<string>)[\n NodeType.Translation\n ] as Record<Locales, string>;\n\n const sectionContentKeys = Object.keys(sectionContent) as Locales[];\n\n const isFiltered = availableLocales.length > selectedLocales.length;\n\n const localesList = isFiltered\n ? selectedLocales\n : // If the translation include content in other locales, we display all of them\n [...new Set([...availableLocales, ...sectionContentKeys])];\n\n const content = (section as TranslationContent<string>)[NodeType.Translation];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {localesList.map((translationKey) => (\n <Fragment key={translationKey}>\n <tr className=\"mt-2 w-full p-2 text-xs\">\n {getLocaleName(translationKey, locale)}\n </tr>\n <tr>\n <TextEditorContainer\n section={\n content[translationKey] ??\n getEmptyNode(content[defaultLocale])\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst EnumerationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration, removeEnumeration } = useDictionary(\n navigationViewContent\n );\n\n const content = (section as EnumerationContent<string>)[NodeType.Enumeration];\n const firstKey = Object.keys(content)[0] as keyof typeof content;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {Object.keys(\n (section as EnumerationContent<ContentNode>)[NodeType.Enumeration]\n ).map((enumKey) => {\n const childrenKeyPath = [\n ...keyPath,\n { type: NodeType.Enumeration },\n ] as KeyPath[];\n return (\n <Fragment key={enumKey}>\n <tr className=\"mt-2 w-full\">\n <div className=\"flex flex-1\">\n <Button\n label={removeEnumeration.label.value}\n variant=\"hoverable\"\n color=\"text\"\n Icon={Trash}\n className=\"ml-auto\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n undefined,\n childrenKeyPath\n )\n }\n >\n {removeEnumeration.text}\n </Button>\n </div>\n </tr>\n <tr className=\"w-full p-2\">\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeType.Enumeration];\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeType.Enumeration]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </tr>\n <tr className=\"block w-full\">\n <TextEditor\n section={\n content[enumKey as keyof typeof content] ??\n getEmptyNode(content[firstKey])\n }\n keyPath={childrenKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n );\n })}\n </tbody>\n </table>\n\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n isFullWidth\n onClick={() =>\n addEditedContent(\n dictionary.key,\n getEmptyNode(content[firstKey]) ?? '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }]\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </div>\n );\n};\n\nconst ConditionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const content = (section as ConditionContent<string>)[NodeType.Condition];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {['true', 'false', 'fallback'].map((condKey) => (\n <Fragment key={condKey}>\n <tr key={condKey} className=\"mt-2 block w-full p-2 text-xs\">\n {String(condKey)}\n </tr>\n <tr key={condKey} className=\"block w-full\">\n <TextEditorContainer\n section={\n content[condKey as keyof typeof content] ??\n getEmptyNode(content['true'])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Condition,\n key: condKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst ArrayTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewElement, removeElement } = useDictionary(navigationViewContent);\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {(section as unknown as ContentNode[]).map((subSection, index) => (\n <Fragment key={JSON.stringify(subSection)}>\n <tr className=\"mt-2 flex w-full justify-between gap-2 p-2\">\n <span className=\"text-xs\">{String(index)}</span>\n <Button\n label={removeElement.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n className=\"ml-auto\"\n textAlign=\"left\"\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n addEditedContent(dictionary.key, undefined, newKeyPath);\n }}\n Icon={Trash}\n >\n {removeElement.text}\n </Button>\n </tr>\n\n <tr className=\"block w-full\">\n <TextEditorContainer\n section={\n subSection ??\n getEmptyNode((section as unknown as ContentNode[])[0])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: index,\n },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n <Button\n label={addNewElement.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n isFullWidth\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n addEditedContent(\n dictionary.key,\n getEmptyNode((section as unknown as ContentNode[])[0]) ?? '',\n newKeyPath,\n false\n );\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n};\n\nconst ObjectTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => (\n <>\n <table className=\"w-full\">\n <tbody className=\"flex flex-col gap-2\">\n {Object.keys(section as unknown as Record<string, ContentNode>).map(\n (key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Object, key },\n ];\n const typedSection = section as unknown as Record<\n string,\n ContentNode\n >;\n const firstKey = Object.keys(\n typedSection\n )[0] as keyof typeof section;\n const subSection =\n typedSection[key as keyof typeof section] ??\n getEmptyNode(typedSection[firstKey]);\n\n return (\n <Fragment key={key}>\n <tr\n key={JSON.stringify(subSection)}\n className=\"mt-2 p-2 text-xs\"\n >\n {String(key)}\n </tr>\n <tr key={JSON.stringify(subSection)} className=\"block w-full\">\n <TextEditor\n section={subSection}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n );\n }\n )}\n </tbody>\n </table>\n </>\n);\n\nenum MarkdownViewMode {\n Edit,\n Preview,\n}\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n onContentChange,\n}) => {\n const [mode, setMode] = useState(MarkdownViewMode.Edit);\n const toggleContent = [\n {\n content: 'Edit',\n value: MarkdownViewMode.Edit,\n },\n {\n content: 'Preview',\n value: MarkdownViewMode.Preview,\n },\n ] as SwitchSelectorChoices<MarkdownViewMode>;\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.Markdown }];\n\n const content = (section as MarkdownContent<ContentNode>)[\n NodeType.Markdown\n ] as ContentNode;\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <SwitchSelector\n choices={toggleContent}\n value={mode}\n onChange={setMode}\n color=\"text\"\n size=\"sm\"\n className=\"ml-auto\"\n />\n\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={\n mode === MarkdownViewMode.Preview\n ? (content) => (\n <MarkdownRenderer isDarkMode={isDarkMode}>\n {content}\n </MarkdownRenderer>\n )\n : undefined\n }\n onContentChange={onContentChange}\n />\n </div>\n );\n};\n\nconst InsertionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.Insertion }];\n\n const content = (section as InsertionContent<ContentNode>)[\n NodeType.Insertion\n ];\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n {...props}\n />\n </div>\n );\n};\n\nconst FileTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.File }];\n\n const fileUrl = (section as FileContent)[NodeType.File];\n const { content } = section as FileContent;\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <span className=\"text-neutral text-sm\">{fileUrl} </span>\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n {...props}\n />\n </div>\n );\n};\n\nconst NestedTextEditor: FC<TextEditorProps> = ({\n keyPath,\n dictionary,\n renderSection,\n section,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n const content = (section as NestedContent)[NodeType.Nested];\n const childrenKeyPath = [...keyPath, { type: NodeType.Nested }] as KeyPath[];\n\n return (\n <div className=\"w-full p-2\">\n <Label>Dictionary key</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n {...props}\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n dictionaryKey: String(newValue),\n },\n childrenKeyPath\n );\n }}\n >\n {content.dictionaryKey ?? ''}\n </ContentEditorInputBase>\n\n <Label>Path (optional)</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n {...props}\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n path: newValue !== '' ? newValue : undefined,\n },\n childrenKeyPath\n );\n }}\n >\n {content.path ?? ''}\n </ContentEditorInputBase>\n </div>\n );\n};\n\nexport const TextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n isDarkMode,\n}) => {\n const { tsxNotEditable } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n\n if (nodeType === NodeType.ReactNode) {\n return (\n <>\n <span>[React Node]</span>\n <span className=\"text-neutral text-xs\">{tsxNotEditable}</span>\n </>\n );\n }\n\n if (nodeType === NodeType.Nested) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Enumeration) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Condition) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Insertion) {\n return (\n <InsertionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Markdown) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n isDarkMode={isDarkMode}\n />\n );\n }\n\n if (nodeType === NodeType.File) {\n return (\n <FileTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Object) {\n return (\n <ObjectTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Number) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorInput\n dictionary={dictionary}\n keyPath={keyPath}\n type=\"number\"\n aria-label=\"Edit field\"\n >\n {section as number}\n </ContentEditorInput>\n </div>\n );\n }\n\n if (nodeType === NodeType.Text) {\n return (\n <div className=\"w-full p-2\">\n {typeof renderSection === 'function' ? (\n renderSection(section as string)\n ) : (\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={keyPath}\n dictionary={dictionary}\n >\n {section as string}\n </ContentEditorTextArea>\n )}\n </div>\n );\n }\n\n if (nodeType === NodeType.Boolean) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorToggle\n dictionary={dictionary}\n keyPath={keyPath}\n value={section as boolean}\n />\n </div>\n );\n }\n\n return (\n <div className=\"w-full p-2\">\n Error. Format not supported.\n {JSON.stringify(section, null, 2)}\n {JSON.stringify(keyPath, null, 2)}\n NodeType : {nodeType}\n </div>\n );\n};\n\nexport const TextEditorContainer: FC<TextEditorProps> = (props) => (\n <Container\n border\n background=\"none\"\n className=\"top-6 flex h-full flex-1 flex-col gap-6 overflow-hidden p-2 md:sticky\"\n roundedSize=\"xl\"\n >\n <TextEditor {...props} />\n </Container>\n);\n"],"names":["ContentEditorTextAreaBase","editedContent","ContentEditorInputBase","Fragment","toggleContent","content"],"mappings":"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"}
1
+ {"version":3,"file":"TextEditor.mjs","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Locales } from '@intlayer/config';\nimport {\n type ConditionContent,\n type ContentNode,\n type Dictionary,\n type EnumerationContent,\n type KeyPath,\n type MarkdownContent,\n type NestedContent,\n type TranslationContent,\n FileContent,\n getEmptyNode,\n getLocaleName,\n getNodeType,\n InsertionContent,\n NodeType,\n} from '@intlayer/core';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport { Plus, Trash, WandSparkles } from 'lucide-react';\nimport { type FC, Fragment, ReactNode, useState } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { useAuditContentDeclarationField } from '../../../hooks';\nimport { renameKey } from '../../../utils/object';\nimport {\n Button,\n ButtonColor,\n ButtonSize,\n ButtonTextAlign,\n ButtonVariant,\n} from '../../Button';\nimport { Container } from '../../Container';\nimport {\n type ContentEditorInputProps as ContentEditorInputPropsBase,\n ContentEditorInput as ContentEditorInputBase,\n} from '../../ContentEditor/ContentEditorInput';\nimport {\n type ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n ContentEditorTextArea as ContentEditorTextAreaBase,\n} from '../../ContentEditor/ContentEditorTextArea';\nimport { InputVariant } from '../../Input';\nimport { Label } from '../../Label';\nimport { useLocaleSwitcherContent } from '../../LocaleSwitcherContentDropDown';\nimport { MarkdownRenderer } from '../../MarkDownRender';\nimport {\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n SwitchSelector,\n SwitchSelectorColor,\n SwitchSelectorSize,\n} from '../../SwitchSelector';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { navigationViewContent } from '../NavigationView/navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype ContentEditorTextAreaProps = Omit<\n ContentEditorTextAreaPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { editedContent, addEditedContent } = useEditedContent();\n const configuration = useConfiguration();\n const { auditContentDeclarationField, isLoading: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant={InputVariant.DEFAULT}\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n additionalButtons={\n <Button\n Icon={WandSparkles}\n label=\"Audit\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"cursor-pointer hover:scale-110\"\n isLoading={isAuditing}\n onClick={() => {\n auditContentDeclarationField({\n fileContent: JSON.stringify({\n ...dictionary,\n ...(editedContent?.[dictionary.key] ?? {}),\n }),\n keyPath,\n locales: configuration.internationalization.locales ?? [],\n aiOptions: {\n apiKey: configuration.ai?.apiKey,\n model: configuration.ai?.model,\n temperature: configuration.ai?.temperature,\n },\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(dictionary.key, editedContent, keyPath);\n } catch (error) {\n console.error(error);\n }\n });\n }}\n />\n }\n {...props}\n />\n );\n};\n\ntype ContentEditorInputProps = Omit<\n ContentEditorInputPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorInput: FC<ContentEditorInputProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <ContentEditorInputBase\n variant={InputVariant.DEFAULT}\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n {...props}\n />\n );\n};\n\nconst toggleContent = [\n {\n content: 'False',\n value: false,\n },\n {\n content: 'True',\n value: true,\n },\n] as SwitchSelectorChoices<boolean>;\n\ntype ContentEditorToggleProps = SwitchSelectorProps & {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n};\n\nconst ContentEditorToggle: FC<ContentEditorToggleProps> = ({\n dictionary,\n keyPath,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <SwitchSelector\n choices={toggleContent}\n value={true}\n onChange={(value) => addEditedContent(dictionary.key, value, keyPath)}\n color={SwitchSelectorColor.TEXT}\n size={SwitchSelectorSize.SM}\n {...props}\n />\n );\n};\n\nexport type TextEditorProps = {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n section: ContentNode;\n isDarkMode?: boolean;\n renderSection?: (content: string) => ReactNode;\n onContentChange?: (newValue: string) => void;\n};\n\nconst TranslationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}: TextEditorProps) => {\n const { locale, defaultLocale } = useLocale();\n const { selectedLocales, availableLocales } = useLocaleSwitcherContent();\n\n const sectionContent = (section as TranslationContent<string>)[\n NodeType.Translation\n ] as Record<Locales, string>;\n\n const sectionContentKeys = Object.keys(sectionContent) as Locales[];\n\n const isFiltered = availableLocales.length > selectedLocales.length;\n\n const localesList = isFiltered\n ? selectedLocales\n : // If the translation include content in other locales, we display all of them\n [...new Set([...availableLocales, ...sectionContentKeys])];\n\n const content = (section as TranslationContent<string>)[NodeType.Translation];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {localesList.map((translationKey) => (\n <Fragment key={translationKey}>\n <tr className=\"mt-2 w-full p-2 text-xs\">\n {getLocaleName(translationKey, locale)}\n </tr>\n <tr>\n <TextEditorContainer\n section={\n content[translationKey] ??\n getEmptyNode(content[defaultLocale])\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst EnumerationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration, removeEnumeration } = useDictionary(\n navigationViewContent\n );\n\n const content = (section as EnumerationContent<string>)[NodeType.Enumeration];\n const firstKey = Object.keys(content)[0] as keyof typeof content;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {Object.keys(\n (section as EnumerationContent<ContentNode>)[NodeType.Enumeration]\n ).map((enumKey) => {\n const childrenKeyPath = [\n ...keyPath,\n { type: NodeType.Enumeration },\n ] as KeyPath[];\n return (\n <Fragment key={enumKey}>\n <tr className=\"mt-2 w-full\">\n <div className=\"flex flex-1\">\n <Button\n label={removeEnumeration.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n Icon={Trash}\n className=\"ml-auto\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n undefined,\n childrenKeyPath\n )\n }\n >\n {removeEnumeration.text}\n </Button>\n </div>\n </tr>\n <tr className=\"w-full p-2\">\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeType.Enumeration];\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeType.Enumeration]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </tr>\n <tr className=\"block w-full\">\n <TextEditor\n section={\n content[enumKey as keyof typeof content] ??\n getEmptyNode(content[firstKey])\n }\n keyPath={childrenKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n );\n })}\n </tbody>\n </table>\n\n <Button\n label={addNewEnumeration.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n isFullWidth\n onClick={() =>\n addEditedContent(\n dictionary.key,\n getEmptyNode(content[firstKey]) ?? '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }]\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </div>\n );\n};\n\nconst ConditionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const content = (section as ConditionContent<string>)[NodeType.Condition];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {['true', 'false', 'fallback'].map((condKey) => (\n <Fragment key={condKey}>\n <tr key={condKey} className=\"mt-2 block w-full p-2 text-xs\">\n {String(condKey)}\n </tr>\n <tr key={condKey} className=\"block w-full\">\n <TextEditorContainer\n section={\n content[condKey as keyof typeof content] ??\n getEmptyNode(content['true'])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Condition,\n key: condKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst ArrayTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewElement, removeElement } = useDictionary(navigationViewContent);\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {(section as unknown as ContentNode[]).map((subSection, index) => (\n <Fragment key={JSON.stringify(subSection)}>\n <tr className=\"mt-2 flex w-full justify-between gap-2 p-2\">\n <span className=\"text-xs\">{String(index)}</span>\n <Button\n label={removeElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n className=\"ml-auto\"\n textAlign={ButtonTextAlign.LEFT}\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n addEditedContent(dictionary.key, undefined, newKeyPath);\n }}\n Icon={Trash}\n >\n {removeElement.text}\n </Button>\n </tr>\n\n <tr className=\"block w-full\">\n <TextEditorContainer\n section={\n subSection ??\n getEmptyNode((section as unknown as ContentNode[])[0])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: index,\n },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n ))}\n </tbody>\n </table>\n <Button\n label={addNewElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n isFullWidth\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n addEditedContent(\n dictionary.key,\n getEmptyNode((section as unknown as ContentNode[])[0]) ?? '',\n newKeyPath,\n false\n );\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n};\n\nconst ObjectTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => (\n <>\n <table className=\"w-full\">\n <tbody className=\"flex flex-col gap-2\">\n {Object.keys(section as unknown as Record<string, ContentNode>).map(\n (key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Object, key },\n ];\n const typedSection = section as unknown as Record<\n string,\n ContentNode\n >;\n const firstKey = Object.keys(\n typedSection\n )[0] as keyof typeof section;\n const subSection =\n typedSection[key as keyof typeof section] ??\n getEmptyNode(typedSection[firstKey]);\n\n return (\n <Fragment key={key}>\n <tr\n key={JSON.stringify(subSection)}\n className=\"mt-2 p-2 text-xs\"\n >\n {String(key)}\n </tr>\n <tr key={JSON.stringify(subSection)} className=\"block w-full\">\n <TextEditor\n section={subSection}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </tr>\n </Fragment>\n );\n }\n )}\n </tbody>\n </table>\n </>\n);\n\nenum MarkdownViewMode {\n Edit,\n Preview,\n}\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n onContentChange,\n}) => {\n const [mode, setMode] = useState(MarkdownViewMode.Edit);\n const toggleContent = [\n {\n content: 'Edit',\n value: MarkdownViewMode.Edit,\n },\n {\n content: 'Preview',\n value: MarkdownViewMode.Preview,\n },\n ] as SwitchSelectorChoices<MarkdownViewMode>;\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.Markdown }];\n\n const content = (section as MarkdownContent<ContentNode>)[\n NodeType.Markdown\n ] as ContentNode;\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <SwitchSelector\n choices={toggleContent}\n value={mode}\n onChange={setMode}\n color={SwitchSelectorColor.TEXT}\n size={SwitchSelectorSize.SM}\n className=\"ml-auto\"\n />\n\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={\n mode === MarkdownViewMode.Preview\n ? (content) => (\n <MarkdownRenderer isDarkMode={isDarkMode}>\n {content}\n </MarkdownRenderer>\n )\n : undefined\n }\n onContentChange={onContentChange}\n />\n </div>\n );\n};\n\nconst InsertionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.Insertion }];\n\n const content = (section as InsertionContent<ContentNode>)[\n NodeType.Insertion\n ];\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n {...props}\n />\n </div>\n );\n};\n\nconst FileTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeType.File }];\n\n const fileUrl = (section as FileContent)[NodeType.File];\n const { content } = section as FileContent;\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <span className=\"text-neutral text-sm\">{fileUrl} </span>\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n {...props}\n />\n </div>\n );\n};\n\nconst NestedTextEditor: FC<TextEditorProps> = ({\n keyPath,\n dictionary,\n renderSection,\n section,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n const content = (section as NestedContent)[NodeType.Nested];\n const childrenKeyPath = [...keyPath, { type: NodeType.Nested }] as KeyPath[];\n\n return (\n <div className=\"w-full p-2\">\n <Label>Dictionary key</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant={InputVariant.DEFAULT}\n {...props}\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n dictionaryKey: String(newValue),\n },\n childrenKeyPath\n );\n }}\n >\n {content.dictionaryKey ?? ''}\n </ContentEditorInputBase>\n\n <Label>Path (optional)</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant={InputVariant.DEFAULT}\n {...props}\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n path: newValue !== '' ? newValue : undefined,\n },\n childrenKeyPath\n );\n }}\n >\n {content.path ?? ''}\n </ContentEditorInputBase>\n </div>\n );\n};\n\nexport const TextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n isDarkMode,\n}) => {\n const { tsxNotEditable } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n\n if (nodeType === NodeType.ReactNode) {\n return (\n <>\n <span>[React Node]</span>\n <span className=\"text-neutral text-xs\">{tsxNotEditable}</span>\n </>\n );\n }\n\n if (nodeType === NodeType.Nested) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Enumeration) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Condition) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Insertion) {\n return (\n <InsertionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Markdown) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n isDarkMode={isDarkMode}\n />\n );\n }\n\n if (nodeType === NodeType.File) {\n return (\n <FileTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Object) {\n return (\n <ObjectTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Number) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorInput\n dictionary={dictionary}\n keyPath={keyPath}\n type=\"number\"\n aria-label=\"Edit field\"\n >\n {section as number}\n </ContentEditorInput>\n </div>\n );\n }\n\n if (nodeType === NodeType.Text) {\n return (\n <div className=\"w-full p-2\">\n {typeof renderSection === 'function' ? (\n renderSection(section as string)\n ) : (\n <ContentEditorTextArea\n variant={InputVariant.DEFAULT}\n aria-label=\"Edit field\"\n keyPath={keyPath}\n dictionary={dictionary}\n >\n {section as string}\n </ContentEditorTextArea>\n )}\n </div>\n );\n }\n\n if (nodeType === NodeType.Boolean) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorToggle\n dictionary={dictionary}\n keyPath={keyPath}\n value={section as boolean}\n />\n </div>\n );\n }\n\n return (\n <div className=\"w-full p-2\">\n Error. Format not supported.\n {JSON.stringify(section, null, 2)}\n {JSON.stringify(keyPath, null, 2)}\n NodeType : {nodeType}\n </div>\n );\n};\n\nexport const TextEditorContainer: FC<TextEditorProps> = (props) => (\n <Container\n border\n background=\"none\"\n className=\"top-6 flex h-full flex-1 flex-col gap-6 overflow-hidden p-2 md:sticky\"\n roundedSize=\"xl\"\n >\n <TextEditor {...props} />\n </Container>\n);\n"],"names":["ContentEditorTextAreaBase","editedContent","ContentEditorInputBase","Fragment","toggleContent","content"],"mappings":"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"}
@@ -10,7 +10,8 @@ require("@intlayer/config/built");
10
10
  require("@intlayer/editor-react");
11
11
  require("react");
12
12
  require("../../../hooks/useAsync/useAsyncStateStore.cjs");
13
- require("../../../better-auth.8zoxzg-F-BEBqzpjz.cjs");
13
+ require("../../../better-auth.CMQ3rA-I-C2nBKRMa.cjs");
14
+ const components_Button_Button = require("../../Button/Button.cjs");
14
15
  const components_Form_FormBase = require("../../Form/FormBase.cjs");
15
16
  require("../../Form/FormField.cjs");
16
17
  const components_Form_layout_FormItemLayout = require("../../../Form-DJrUK3mm.cjs");
@@ -74,7 +75,7 @@ const DictionaryCreationForm = ({
74
75
  {
75
76
  className: "ml-auto mt-12",
76
77
  type: "submit",
77
- color: "text",
78
+ color: components_Button_Button.ButtonColor.TEXT,
78
79
  isLoading: isSubmitting,
79
80
  label: createDictionaryButton.ariaLabel.value,
80
81
  isFullWidth: true,
@@ -1 +1 @@
1
- {"version":3,"file":"DictionaryCreationForm.cjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"sourcesContent":["'use client';\n\nimport { type FC } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAddDictionary,\n useGetProjects,\n} from '../../../hooks/intlayerAPIHooks';\nimport { useAuth } from '../../../hooks/useAuth';\nimport { Form, useForm } from '../../Form';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryFormContent } from './dictionaryCreationForm.content';\nimport {\n useDictionarySchema,\n type DictionaryFormData,\n} from './useDictionaryFormSchema';\n\ntype DictionaryCreationFormProps = {\n onDictionaryCreated?: () => void;\n};\n\nexport const DictionaryCreationForm: FC<DictionaryCreationFormProps> = ({\n onDictionaryCreated,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { addDictionary } = useAddDictionary();\n const { data: projects } = useGetProjects();\n const DictionarySchema = useDictionarySchema(String(project?.id));\n const { form, isSubmitting } = useForm(DictionarySchema);\n const { keyInput, createDictionaryButton, projectInput } = useDictionary(\n dictionaryFormContent\n );\n\n const onSubmitSuccess = async (data: DictionaryFormData) => {\n await addDictionary({ dictionary: data }).then(() =>\n onDictionaryCreated?.()\n );\n };\n\n return (\n <Form\n schema={DictionarySchema}\n onSubmitSuccess={onSubmitSuccess}\n className=\"w-full max-w-[400px] m-auto\"\n {...form}\n >\n <Form.Input\n name=\"key\"\n label={keyInput.label.value}\n placeholder={keyInput.placeholder.value}\n isRequired\n />\n\n <Form.MultiSelect name=\"projectIds\" label={projectInput.label.value}>\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <MultiSelect.List>\n {projects?.data?.map((project) => (\n <MultiSelect.Item\n key={String(project.id)}\n value={String(project.id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.Button\n className=\"ml-auto mt-12\"\n type=\"submit\"\n color=\"text\"\n isLoading={isSubmitting}\n label={createDictionaryButton.ariaLabel.value}\n isFullWidth\n >\n {createDictionaryButton.text}\n </Form.Button>\n </Form>\n );\n};\n"],"names":["useAuth","useAddDictionary","useGetProjects","useDictionarySchema","useForm","useDictionary","dictionaryFormContent","jsxs","Form","jsx","MultiSelect","project"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBO,MAAM,yBAA0D,CAAC;AAAA,EACtE;AACF,MAAM;AACJ,QAAM,EAAE,QAAA,IAAYA,8BAAA;AACpB,QAAM,EAAE,YAAY,WAAW,CAAA;AAC/B,QAAM,EAAE,cAAA,IAAkBC,wCAAA;AAC1B,QAAM,EAAE,MAAM,SAAA,IAAaC,sCAAA;AAC3B,QAAM,mBAAmBC,gFAAAA,oBAAoB,OAAO,SAAS,EAAE,CAAC;AAChE,QAAM,EAAE,MAAM,iBAAiBC,yBAAAA,QAAQ,gBAAgB;AACvD,QAAM,EAAE,UAAU,wBAAwB,aAAA,IAAiBC,cAAAA;AAAAA,IACzDC,uFAAAA;AAAAA,EAAA;AAGF,QAAM,kBAAkB,OAAO,SAA6B;AAC1D,UAAM,cAAc,EAAE,YAAY,KAAA,CAAM,EAAE;AAAA,MAAK,MAC7C,sBAAA;AAAA,IAAsB;AAAA,EAE1B;AAEA,SACEC,2BAAAA;AAAAA,IAACC,sCAAAA;AAAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR;AAAA,MACA,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAC,2BAAAA;AAAAA,UAACD,sCAAAA,KAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,OAAO,SAAS,MAAM;AAAA,YACtB,aAAa,SAAS,YAAY;AAAA,YAClC,YAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAGZD,2BAAAA,KAACC,sCAAAA,KAAK,aAAL,EAAiB,MAAK,cAAa,OAAO,aAAa,MAAM,OAC5D,UAAA;AAAA,UAAAC,2BAAAA;AAAAA,YAACC,8BAAAA,YAAY;AAAA,YAAZ;AAAA,cACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACC,aAAY,OAAOA,SAAQ,EAAE,MAAM,KAAK,GAC1D,QAAQ;AAAA,cAGd,yCAACD,8BAAAA,YAAY,OAAZ,EAAkB,aAAa,aAAa,YAAY,MAAA,CAAO;AAAA,YAAA;AAAA,UAAA;AAAA,UAElED,2BAAAA,IAACC,8BAAAA,YAAY,SAAZ,EACC,UAAAD,2BAAAA,IAACC,8BAAAA,YAAY,MAAZ,EACE,UAAA,UAAU,MAAM,IAAI,CAACC,aACpBF,2BAAAA;AAAAA,YAACC,8BAAAA,YAAY;AAAA,YAAZ;AAAA,cAEC,OAAO,OAAOC,SAAQ,EAAE;AAAA,cAEvB,UAAAA,SAAQ;AAAA,YAAA;AAAA,YAHJ,OAAOA,SAAQ,EAAE;AAAA,UAAA,CAKzB,GACH,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAEAF,2BAAAA;AAAAA,UAACD,sCAAAA,KAAK;AAAA,UAAL;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,OAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO,uBAAuB,UAAU;AAAA,YACxC,aAAW;AAAA,YAEV,UAAA,uBAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1B;AAAA,IAAA;AAAA,EAAA;AAGN;;"}
1
+ {"version":3,"file":"DictionaryCreationForm.cjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"sourcesContent":["'use client';\n\nimport { type FC } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAddDictionary,\n useGetProjects,\n} from '../../../hooks/intlayerAPIHooks';\nimport { useAuth } from '../../../hooks/useAuth';\nimport { ButtonColor } from '../../Button';\nimport { Form, useForm } from '../../Form';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryFormContent } from './dictionaryCreationForm.content';\nimport {\n useDictionarySchema,\n type DictionaryFormData,\n} from './useDictionaryFormSchema';\n\ntype DictionaryCreationFormProps = {\n onDictionaryCreated?: () => void;\n};\n\nexport const DictionaryCreationForm: FC<DictionaryCreationFormProps> = ({\n onDictionaryCreated,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { addDictionary } = useAddDictionary();\n const { data: projects } = useGetProjects();\n const DictionarySchema = useDictionarySchema(String(project?.id));\n const { form, isSubmitting } = useForm(DictionarySchema);\n const { keyInput, createDictionaryButton, projectInput } = useDictionary(\n dictionaryFormContent\n );\n\n const onSubmitSuccess = async (data: DictionaryFormData) => {\n await addDictionary({ dictionary: data }).then(() =>\n onDictionaryCreated?.()\n );\n };\n\n return (\n <Form\n schema={DictionarySchema}\n onSubmitSuccess={onSubmitSuccess}\n className=\"w-full max-w-[400px] m-auto\"\n {...form}\n >\n <Form.Input\n name=\"key\"\n label={keyInput.label.value}\n placeholder={keyInput.placeholder.value}\n isRequired\n />\n\n <Form.MultiSelect name=\"projectIds\" label={projectInput.label.value}>\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <MultiSelect.List>\n {projects?.data?.map((project) => (\n <MultiSelect.Item\n key={String(project.id)}\n value={String(project.id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.Button\n className=\"ml-auto mt-12\"\n type=\"submit\"\n color={ButtonColor.TEXT}\n isLoading={isSubmitting}\n label={createDictionaryButton.ariaLabel.value}\n isFullWidth\n >\n {createDictionaryButton.text}\n </Form.Button>\n </Form>\n );\n};\n"],"names":["useAuth","useAddDictionary","useGetProjects","useDictionarySchema","useForm","useDictionary","dictionaryFormContent","jsxs","Form","jsx","MultiSelect","project","ButtonColor"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBO,MAAM,yBAA0D,CAAC;AAAA,EACtE;AACF,MAAM;AACJ,QAAM,EAAE,QAAA,IAAYA,8BAAA;AACpB,QAAM,EAAE,YAAY,WAAW,CAAA;AAC/B,QAAM,EAAE,cAAA,IAAkBC,wCAAA;AAC1B,QAAM,EAAE,MAAM,SAAA,IAAaC,sCAAA;AAC3B,QAAM,mBAAmBC,gFAAAA,oBAAoB,OAAO,SAAS,EAAE,CAAC;AAChE,QAAM,EAAE,MAAM,iBAAiBC,yBAAAA,QAAQ,gBAAgB;AACvD,QAAM,EAAE,UAAU,wBAAwB,aAAA,IAAiBC,cAAAA;AAAAA,IACzDC,uFAAAA;AAAAA,EAAA;AAGF,QAAM,kBAAkB,OAAO,SAA6B;AAC1D,UAAM,cAAc,EAAE,YAAY,KAAA,CAAM,EAAE;AAAA,MAAK,MAC7C,sBAAA;AAAA,IAAsB;AAAA,EAE1B;AAEA,SACEC,2BAAAA;AAAAA,IAACC,sCAAAA;AAAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR;AAAA,MACA,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAC,2BAAAA;AAAAA,UAACD,sCAAAA,KAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,OAAO,SAAS,MAAM;AAAA,YACtB,aAAa,SAAS,YAAY;AAAA,YAClC,YAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAGZD,2BAAAA,KAACC,sCAAAA,KAAK,aAAL,EAAiB,MAAK,cAAa,OAAO,aAAa,MAAM,OAC5D,UAAA;AAAA,UAAAC,2BAAAA;AAAAA,YAACC,8BAAAA,YAAY;AAAA,YAAZ;AAAA,cACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACC,aAAY,OAAOA,SAAQ,EAAE,MAAM,KAAK,GAC1D,QAAQ;AAAA,cAGd,yCAACD,8BAAAA,YAAY,OAAZ,EAAkB,aAAa,aAAa,YAAY,MAAA,CAAO;AAAA,YAAA;AAAA,UAAA;AAAA,UAElED,2BAAAA,IAACC,8BAAAA,YAAY,SAAZ,EACC,UAAAD,2BAAAA,IAACC,8BAAAA,YAAY,MAAZ,EACE,UAAA,UAAU,MAAM,IAAI,CAACC,aACpBF,2BAAAA;AAAAA,YAACC,8BAAAA,YAAY;AAAA,YAAZ;AAAA,cAEC,OAAO,OAAOC,SAAQ,EAAE;AAAA,cAEvB,UAAAA,SAAQ;AAAA,YAAA;AAAA,YAHJ,OAAOA,SAAQ,EAAE;AAAA,UAAA,CAKzB,GACH,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAEAF,2BAAAA;AAAAA,UAACD,sCAAAA,KAAK;AAAA,UAAL;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,OAAOI,yBAAAA,YAAY;AAAA,YACnB,WAAW;AAAA,YACX,OAAO,uBAAuB,UAAU;AAAA,YACxC,aAAW;AAAA,YAEV,UAAA,uBAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1B;AAAA,IAAA;AAAA,EAAA;AAGN;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DictionaryCreationForm.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAehC,KAAK,2BAA2B,GAAG;IACjC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAoElE,CAAC"}
1
+ {"version":3,"file":"DictionaryCreationForm.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAgBhC,KAAK,2BAA2B,GAAG;IACjC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAoElE,CAAC"}