@intlayer/design-system 9.0.0-canary.8 → 9.0.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 (1322) hide show
  1. package/dist/esm/api/hooks/ai.mjs.map +1 -1
  2. package/dist/esm/api/hooks/analytics.mjs +71 -0
  3. package/dist/esm/api/hooks/analytics.mjs.map +1 -0
  4. package/dist/esm/api/hooks/asset.mjs.map +1 -1
  5. package/dist/esm/api/hooks/audit.mjs.map +1 -1
  6. package/dist/esm/api/hooks/auth.mjs.map +1 -1
  7. package/dist/esm/api/hooks/bitbucket.mjs.map +1 -1
  8. package/dist/esm/api/hooks/dictionary.mjs +15 -3
  9. package/dist/esm/api/hooks/dictionary.mjs.map +1 -1
  10. package/dist/esm/api/hooks/discussions.mjs.map +1 -1
  11. package/dist/esm/api/hooks/editor.mjs.map +1 -1
  12. package/dist/esm/api/hooks/environment.mjs.map +1 -1
  13. package/dist/esm/api/hooks/github.mjs.map +1 -1
  14. package/dist/esm/api/hooks/gitlab.mjs.map +1 -1
  15. package/dist/esm/api/hooks/newsletter.mjs.map +1 -1
  16. package/dist/esm/api/hooks/organization.mjs +35 -3
  17. package/dist/esm/api/hooks/organization.mjs.map +1 -1
  18. package/dist/esm/api/hooks/project.mjs +13 -1
  19. package/dist/esm/api/hooks/project.mjs.map +1 -1
  20. package/dist/esm/api/hooks/reviewer.mjs.map +1 -1
  21. package/dist/esm/api/hooks/search.mjs.map +1 -1
  22. package/dist/esm/api/hooks/showcaseProject.mjs.map +1 -1
  23. package/dist/esm/api/hooks/stripe.mjs.map +1 -1
  24. package/dist/esm/api/hooks/tag.mjs.map +1 -1
  25. package/dist/esm/api/hooks/translate.mjs.map +1 -1
  26. package/dist/esm/api/hooks/user.mjs.map +1 -1
  27. package/dist/esm/api/hooks/utils.mjs.map +1 -1
  28. package/dist/esm/api/index.mjs +4 -3
  29. package/dist/esm/api/useAuth/useAuth.mjs.map +1 -1
  30. package/dist/esm/api/useAuth/useOAuth2.mjs.map +1 -1
  31. package/dist/esm/api/useAuth/useSession.mjs.map +1 -1
  32. package/dist/esm/api/useIntlayerAPI.mjs +6 -1
  33. package/dist/esm/api/useIntlayerAPI.mjs.map +1 -1
  34. package/dist/esm/api/useUser/index.mjs.map +1 -1
  35. package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
  36. package/dist/esm/components/Avatar/image.mjs.map +1 -1
  37. package/dist/esm/components/Avatar/index.mjs.map +1 -1
  38. package/dist/esm/components/Badge/index.mjs.map +1 -1
  39. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs.map +1 -1
  40. package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
  41. package/dist/esm/components/Browser/Browser.content.mjs.map +1 -1
  42. package/dist/esm/components/Browser/Browser.mjs.map +1 -1
  43. package/dist/esm/components/Browser/extractUrlFromSitemap.mjs.map +1 -1
  44. package/dist/esm/components/Button/Button.mjs.map +1 -1
  45. package/dist/esm/components/Carousel/index.content.mjs.map +1 -1
  46. package/dist/esm/components/Carousel/index.mjs +2 -1
  47. package/dist/esm/components/Carousel/index.mjs.map +1 -1
  48. package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
  49. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
  50. package/dist/esm/components/Command/index.mjs.map +1 -1
  51. package/dist/esm/components/Container/index.mjs.map +1 -1
  52. package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
  53. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  54. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
  55. package/dist/esm/components/ContentSelector/ContentSelector.mjs.map +1 -1
  56. package/dist/esm/components/CopyButton/CopyButton.content.mjs.map +1 -1
  57. package/dist/esm/components/CopyButton/index.mjs.map +1 -1
  58. package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
  59. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  60. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
  61. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
  62. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs.map +1 -1
  63. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs.map +1 -1
  64. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs.map +1 -1
  65. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs.map +1 -1
  66. package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs.map +1 -1
  67. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs.map +1 -1
  68. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs.map +1 -1
  69. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
  70. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs.map +1 -1
  71. package/dist/esm/components/DictionaryEditor/NodeWrapper/PluralWrapper.mjs.map +1 -1
  72. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
  73. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs.map +1 -1
  74. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs.map +1 -1
  75. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +1 -1
  76. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  77. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.mjs.map +1 -1
  78. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +24 -22
  79. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  80. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/object.mjs.map +1 -1
  81. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  82. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  83. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs.map +1 -1
  84. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
  85. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  86. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  87. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
  88. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
  89. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  90. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
  91. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs.map +1 -1
  92. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
  93. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +18 -13
  94. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  95. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
  96. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  97. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +3 -2
  98. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  99. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  100. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  101. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +5 -3
  102. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  103. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
  104. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
  105. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs.map +1 -1
  106. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs.map +1 -1
  107. package/dist/esm/components/DictionaryFieldEditor/contentEditor.content.mjs.map +1 -1
  108. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
  109. package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs.map +1 -1
  110. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
  111. package/dist/esm/components/DropDown/index.mjs.map +1 -1
  112. package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
  113. package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  114. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  115. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
  116. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -1
  117. package/dist/esm/components/Flags/Flag.mjs.map +1 -1
  118. package/dist/esm/components/Flags/ae.mjs +9 -6
  119. package/dist/esm/components/Flags/ae.mjs.map +1 -1
  120. package/dist/esm/components/Flags/af.mjs +26 -23
  121. package/dist/esm/components/Flags/af.mjs.map +1 -1
  122. package/dist/esm/components/Flags/al.mjs +7 -5
  123. package/dist/esm/components/Flags/al.mjs.map +1 -1
  124. package/dist/esm/components/Flags/am.mjs +7 -5
  125. package/dist/esm/components/Flags/am.mjs.map +1 -1
  126. package/dist/esm/components/Flags/ar.mjs +51 -31
  127. package/dist/esm/components/Flags/ar.mjs.map +1 -1
  128. package/dist/esm/components/Flags/at.mjs +5 -4
  129. package/dist/esm/components/Flags/at.mjs.map +1 -1
  130. package/dist/esm/components/Flags/au.mjs +13 -8
  131. package/dist/esm/components/Flags/au.mjs.map +1 -1
  132. package/dist/esm/components/Flags/az.mjs +13 -8
  133. package/dist/esm/components/Flags/az.mjs.map +1 -1
  134. package/dist/esm/components/Flags/ba.mjs +8 -7
  135. package/dist/esm/components/Flags/ba.mjs.map +1 -1
  136. package/dist/esm/components/Flags/bd.mjs +5 -4
  137. package/dist/esm/components/Flags/bd.mjs.map +1 -1
  138. package/dist/esm/components/Flags/be.mjs +5 -5
  139. package/dist/esm/components/Flags/be.mjs.map +1 -1
  140. package/dist/esm/components/Flags/bg.mjs +7 -5
  141. package/dist/esm/components/Flags/bg.mjs.map +1 -1
  142. package/dist/esm/components/Flags/bh.mjs +5 -4
  143. package/dist/esm/components/Flags/bh.mjs.map +1 -1
  144. package/dist/esm/components/Flags/bn.mjs +12 -8
  145. package/dist/esm/components/Flags/bn.mjs.map +1 -1
  146. package/dist/esm/components/Flags/bo.mjs +1306 -656
  147. package/dist/esm/components/Flags/bo.mjs.map +1 -1
  148. package/dist/esm/components/Flags/br.mjs +26 -26
  149. package/dist/esm/components/Flags/br.mjs.map +1 -1
  150. package/dist/esm/components/Flags/bw.mjs +4 -4
  151. package/dist/esm/components/Flags/bw.mjs.map +1 -1
  152. package/dist/esm/components/Flags/by.mjs +11 -8
  153. package/dist/esm/components/Flags/by.mjs.map +1 -1
  154. package/dist/esm/components/Flags/bz.mjs +111 -81
  155. package/dist/esm/components/Flags/bz.mjs.map +1 -1
  156. package/dist/esm/components/Flags/ca.mjs +5 -4
  157. package/dist/esm/components/Flags/ca.mjs.map +1 -1
  158. package/dist/esm/components/Flags/ch.mjs +4 -4
  159. package/dist/esm/components/Flags/ch.mjs.map +1 -1
  160. package/dist/esm/components/Flags/cl.mjs +9 -8
  161. package/dist/esm/components/Flags/cl.mjs.map +1 -1
  162. package/dist/esm/components/Flags/cn.mjs +15 -9
  163. package/dist/esm/components/Flags/cn.mjs.map +1 -1
  164. package/dist/esm/components/Flags/co.mjs +5 -5
  165. package/dist/esm/components/Flags/co.mjs.map +1 -1
  166. package/dist/esm/components/Flags/cr.mjs +5 -5
  167. package/dist/esm/components/Flags/cr.mjs.map +1 -1
  168. package/dist/esm/components/Flags/cu.mjs +9 -8
  169. package/dist/esm/components/Flags/cu.mjs.map +1 -1
  170. package/dist/esm/components/Flags/cv.mjs +9 -8
  171. package/dist/esm/components/Flags/cv.mjs.map +1 -1
  172. package/dist/esm/components/Flags/cz.mjs +7 -5
  173. package/dist/esm/components/Flags/cz.mjs.map +1 -1
  174. package/dist/esm/components/Flags/de.mjs +7 -5
  175. package/dist/esm/components/Flags/de.mjs.map +1 -1
  176. package/dist/esm/components/Flags/dj.mjs +9 -8
  177. package/dist/esm/components/Flags/dj.mjs.map +1 -1
  178. package/dist/esm/components/Flags/dk.mjs +7 -5
  179. package/dist/esm/components/Flags/dk.mjs.map +1 -1
  180. package/dist/esm/components/Flags/do.mjs +71 -53
  181. package/dist/esm/components/Flags/do.mjs.map +1 -1
  182. package/dist/esm/components/Flags/dz.mjs +7 -5
  183. package/dist/esm/components/Flags/dz.mjs.map +1 -1
  184. package/dist/esm/components/Flags/ec.mjs +165 -122
  185. package/dist/esm/components/Flags/ec.mjs.map +1 -1
  186. package/dist/esm/components/Flags/ee.mjs +7 -5
  187. package/dist/esm/components/Flags/ee.mjs.map +1 -1
  188. package/dist/esm/components/Flags/eg.mjs +28 -25
  189. package/dist/esm/components/Flags/eg.mjs.map +1 -1
  190. package/dist/esm/components/Flags/es-ct.mjs +5 -4
  191. package/dist/esm/components/Flags/es-ct.mjs.map +1 -1
  192. package/dist/esm/components/Flags/es-ga.mjs +184 -183
  193. package/dist/esm/components/Flags/es-ga.mjs.map +1 -1
  194. package/dist/esm/components/Flags/es-pv.mjs +7 -5
  195. package/dist/esm/components/Flags/es-pv.mjs.map +1 -1
  196. package/dist/esm/components/Flags/es.mjs +1072 -531
  197. package/dist/esm/components/Flags/es.mjs.map +1 -1
  198. package/dist/esm/components/Flags/et.mjs +10 -9
  199. package/dist/esm/components/Flags/et.mjs.map +1 -1
  200. package/dist/esm/components/Flags/fi.mjs +7 -5
  201. package/dist/esm/components/Flags/fi.mjs.map +1 -1
  202. package/dist/esm/components/Flags/flags.mjs.map +1 -1
  203. package/dist/esm/components/Flags/fo.mjs +8 -7
  204. package/dist/esm/components/Flags/fo.mjs.map +1 -1
  205. package/dist/esm/components/Flags/fr.mjs +7 -5
  206. package/dist/esm/components/Flags/fr.mjs.map +1 -1
  207. package/dist/esm/components/Flags/gb-wls.mjs +10 -8
  208. package/dist/esm/components/Flags/gb-wls.mjs.map +1 -1
  209. package/dist/esm/components/Flags/gb.mjs +11 -7
  210. package/dist/esm/components/Flags/gb.mjs.map +1 -1
  211. package/dist/esm/components/Flags/ge.mjs +9 -6
  212. package/dist/esm/components/Flags/ge.mjs.map +1 -1
  213. package/dist/esm/components/Flags/gh.mjs +9 -6
  214. package/dist/esm/components/Flags/gh.mjs.map +1 -1
  215. package/dist/esm/components/Flags/gr.mjs +23 -13
  216. package/dist/esm/components/Flags/gr.mjs.map +1 -1
  217. package/dist/esm/components/Flags/gt.mjs +116 -113
  218. package/dist/esm/components/Flags/gt.mjs.map +1 -1
  219. package/dist/esm/components/Flags/gw.mjs +19 -12
  220. package/dist/esm/components/Flags/gw.mjs.map +1 -1
  221. package/dist/esm/components/Flags/hk.mjs +13 -8
  222. package/dist/esm/components/Flags/hk.mjs.map +1 -1
  223. package/dist/esm/components/Flags/hn.mjs +21 -15
  224. package/dist/esm/components/Flags/hn.mjs.map +1 -1
  225. package/dist/esm/components/Flags/hr.mjs +49 -23
  226. package/dist/esm/components/Flags/hr.mjs.map +1 -1
  227. package/dist/esm/components/Flags/hu.mjs +4 -4
  228. package/dist/esm/components/Flags/hu.mjs.map +1 -1
  229. package/dist/esm/components/Flags/id.mjs +5 -4
  230. package/dist/esm/components/Flags/id.mjs.map +1 -1
  231. package/dist/esm/components/Flags/ie.mjs +5 -5
  232. package/dist/esm/components/Flags/ie.mjs.map +1 -1
  233. package/dist/esm/components/Flags/il.mjs +10 -9
  234. package/dist/esm/components/Flags/il.mjs.map +1 -1
  235. package/dist/esm/components/Flags/in.mjs +18 -15
  236. package/dist/esm/components/Flags/in.mjs.map +1 -1
  237. package/dist/esm/components/Flags/iq.mjs +11 -8
  238. package/dist/esm/components/Flags/iq.mjs.map +1 -1
  239. package/dist/esm/components/Flags/ir.mjs +33 -32
  240. package/dist/esm/components/Flags/ir.mjs.map +1 -1
  241. package/dist/esm/components/Flags/is.mjs +8 -7
  242. package/dist/esm/components/Flags/is.mjs.map +1 -1
  243. package/dist/esm/components/Flags/it.mjs +5 -5
  244. package/dist/esm/components/Flags/it.mjs.map +1 -1
  245. package/dist/esm/components/Flags/jm.mjs +5 -5
  246. package/dist/esm/components/Flags/jm.mjs.map +1 -1
  247. package/dist/esm/components/Flags/jo.mjs +11 -10
  248. package/dist/esm/components/Flags/jo.mjs.map +1 -1
  249. package/dist/esm/components/Flags/jp.mjs +7 -6
  250. package/dist/esm/components/Flags/jp.mjs.map +1 -1
  251. package/dist/esm/components/Flags/ke.mjs +28 -19
  252. package/dist/esm/components/Flags/ke.mjs.map +1 -1
  253. package/dist/esm/components/Flags/kg.mjs +11 -10
  254. package/dist/esm/components/Flags/kg.mjs.map +1 -1
  255. package/dist/esm/components/Flags/kh.mjs +20 -18
  256. package/dist/esm/components/Flags/kh.mjs.map +1 -1
  257. package/dist/esm/components/Flags/km.mjs +12 -11
  258. package/dist/esm/components/Flags/km.mjs.map +1 -1
  259. package/dist/esm/components/Flags/kr.mjs +14 -13
  260. package/dist/esm/components/Flags/kr.mjs.map +1 -1
  261. package/dist/esm/components/Flags/kw.mjs +9 -8
  262. package/dist/esm/components/Flags/kw.mjs.map +1 -1
  263. package/dist/esm/components/Flags/kz.mjs +18 -17
  264. package/dist/esm/components/Flags/kz.mjs.map +1 -1
  265. package/dist/esm/components/Flags/la.mjs +8 -7
  266. package/dist/esm/components/Flags/la.mjs.map +1 -1
  267. package/dist/esm/components/Flags/lb.mjs +10 -9
  268. package/dist/esm/components/Flags/lb.mjs.map +1 -1
  269. package/dist/esm/components/Flags/li.mjs +33 -31
  270. package/dist/esm/components/Flags/li.mjs.map +1 -1
  271. package/dist/esm/components/Flags/lk.mjs +22 -14
  272. package/dist/esm/components/Flags/lk.mjs.map +1 -1
  273. package/dist/esm/components/Flags/lt.mjs +5 -5
  274. package/dist/esm/components/Flags/lt.mjs.map +1 -1
  275. package/dist/esm/components/Flags/lu.mjs +7 -5
  276. package/dist/esm/components/Flags/lu.mjs.map +1 -1
  277. package/dist/esm/components/Flags/lv.mjs +3 -3
  278. package/dist/esm/components/Flags/lv.mjs.map +1 -1
  279. package/dist/esm/components/Flags/ly.mjs +8 -7
  280. package/dist/esm/components/Flags/ly.mjs.map +1 -1
  281. package/dist/esm/components/Flags/ma.mjs +5 -4
  282. package/dist/esm/components/Flags/ma.mjs.map +1 -1
  283. package/dist/esm/components/Flags/mc.mjs +4 -4
  284. package/dist/esm/components/Flags/mc.mjs.map +1 -1
  285. package/dist/esm/components/Flags/md.mjs +93 -61
  286. package/dist/esm/components/Flags/md.mjs.map +1 -1
  287. package/dist/esm/components/Flags/mk.mjs +7 -5
  288. package/dist/esm/components/Flags/mk.mjs.map +1 -1
  289. package/dist/esm/components/Flags/mm.mjs +13 -10
  290. package/dist/esm/components/Flags/mm.mjs.map +1 -1
  291. package/dist/esm/components/Flags/mn.mjs +19 -12
  292. package/dist/esm/components/Flags/mn.mjs.map +1 -1
  293. package/dist/esm/components/Flags/mo.mjs +10 -7
  294. package/dist/esm/components/Flags/mo.mjs.map +1 -1
  295. package/dist/esm/components/Flags/mr.mjs +9 -6
  296. package/dist/esm/components/Flags/mr.mjs.map +1 -1
  297. package/dist/esm/components/Flags/mt.mjs +44 -39
  298. package/dist/esm/components/Flags/mt.mjs.map +1 -1
  299. package/dist/esm/components/Flags/mv.mjs +9 -6
  300. package/dist/esm/components/Flags/mv.mjs.map +1 -1
  301. package/dist/esm/components/Flags/mx.mjs +748 -377
  302. package/dist/esm/components/Flags/mx.mjs.map +1 -1
  303. package/dist/esm/components/Flags/my.mjs +21 -20
  304. package/dist/esm/components/Flags/my.mjs.map +1 -1
  305. package/dist/esm/components/Flags/mz.mjs +17 -16
  306. package/dist/esm/components/Flags/mz.mjs.map +1 -1
  307. package/dist/esm/components/Flags/ng.mjs +4 -4
  308. package/dist/esm/components/Flags/ng.mjs.map +1 -1
  309. package/dist/esm/components/Flags/ni.mjs +103 -98
  310. package/dist/esm/components/Flags/ni.mjs.map +1 -1
  311. package/dist/esm/components/Flags/nl.mjs +7 -5
  312. package/dist/esm/components/Flags/nl.mjs.map +1 -1
  313. package/dist/esm/components/Flags/no.mjs +11 -7
  314. package/dist/esm/components/Flags/no.mjs.map +1 -1
  315. package/dist/esm/components/Flags/np.mjs +7 -6
  316. package/dist/esm/components/Flags/np.mjs.map +1 -1
  317. package/dist/esm/components/Flags/nz.mjs +30 -20
  318. package/dist/esm/components/Flags/nz.mjs.map +1 -1
  319. package/dist/esm/components/Flags/om.mjs +102 -101
  320. package/dist/esm/components/Flags/om.mjs.map +1 -1
  321. package/dist/esm/components/Flags/pa.mjs +9 -8
  322. package/dist/esm/components/Flags/pa.mjs.map +1 -1
  323. package/dist/esm/components/Flags/pe.mjs +5 -4
  324. package/dist/esm/components/Flags/pe.mjs.map +1 -1
  325. package/dist/esm/components/Flags/ph.mjs +9 -6
  326. package/dist/esm/components/Flags/ph.mjs.map +1 -1
  327. package/dist/esm/components/Flags/pk.mjs +8 -7
  328. package/dist/esm/components/Flags/pk.mjs.map +1 -1
  329. package/dist/esm/components/Flags/pl.mjs +3 -3
  330. package/dist/esm/components/Flags/pl.mjs.map +1 -1
  331. package/dist/esm/components/Flags/pr.mjs +9 -8
  332. package/dist/esm/components/Flags/pr.mjs.map +1 -1
  333. package/dist/esm/components/Flags/ps.mjs +10 -9
  334. package/dist/esm/components/Flags/ps.mjs.map +1 -1
  335. package/dist/esm/components/Flags/pt.mjs +34 -31
  336. package/dist/esm/components/Flags/pt.mjs.map +1 -1
  337. package/dist/esm/components/Flags/py.mjs +17 -11
  338. package/dist/esm/components/Flags/py.mjs.map +1 -1
  339. package/dist/esm/components/Flags/qa.mjs +5 -4
  340. package/dist/esm/components/Flags/qa.mjs.map +1 -1
  341. package/dist/esm/components/Flags/ro.mjs +5 -5
  342. package/dist/esm/components/Flags/ro.mjs.map +1 -1
  343. package/dist/esm/components/Flags/rs.mjs +259 -258
  344. package/dist/esm/components/Flags/rs.mjs.map +1 -1
  345. package/dist/esm/components/Flags/ru.mjs +7 -5
  346. package/dist/esm/components/Flags/ru.mjs.map +1 -1
  347. package/dist/esm/components/Flags/sa.mjs +21 -20
  348. package/dist/esm/components/Flags/sa.mjs.map +1 -1
  349. package/dist/esm/components/Flags/sd.mjs +9 -8
  350. package/dist/esm/components/Flags/sd.mjs.map +1 -1
  351. package/dist/esm/components/Flags/se.mjs +5 -4
  352. package/dist/esm/components/Flags/se.mjs.map +1 -1
  353. package/dist/esm/components/Flags/sg.mjs +9 -8
  354. package/dist/esm/components/Flags/sg.mjs.map +1 -1
  355. package/dist/esm/components/Flags/si.mjs +14 -13
  356. package/dist/esm/components/Flags/si.mjs.map +1 -1
  357. package/dist/esm/components/Flags/sk.mjs +15 -9
  358. package/dist/esm/components/Flags/sk.mjs.map +1 -1
  359. package/dist/esm/components/Flags/so.mjs +7 -6
  360. package/dist/esm/components/Flags/so.mjs.map +1 -1
  361. package/dist/esm/components/Flags/st.mjs +17 -13
  362. package/dist/esm/components/Flags/st.mjs.map +1 -1
  363. package/dist/esm/components/Flags/sv.mjs +538 -522
  364. package/dist/esm/components/Flags/sv.mjs.map +1 -1
  365. package/dist/esm/components/Flags/sy.mjs +9 -6
  366. package/dist/esm/components/Flags/sy.mjs.map +1 -1
  367. package/dist/esm/components/Flags/td.mjs +4 -4
  368. package/dist/esm/components/Flags/td.mjs.map +1 -1
  369. package/dist/esm/components/Flags/th.mjs +4 -4
  370. package/dist/esm/components/Flags/th.mjs.map +1 -1
  371. package/dist/esm/components/Flags/tl.mjs +9 -8
  372. package/dist/esm/components/Flags/tl.mjs.map +1 -1
  373. package/dist/esm/components/Flags/tn.mjs +5 -4
  374. package/dist/esm/components/Flags/tn.mjs.map +1 -1
  375. package/dist/esm/components/Flags/tr.mjs +5 -5
  376. package/dist/esm/components/Flags/tr.mjs.map +1 -1
  377. package/dist/esm/components/Flags/tt.mjs +7 -5
  378. package/dist/esm/components/Flags/tt.mjs.map +1 -1
  379. package/dist/esm/components/Flags/tw.mjs +7 -6
  380. package/dist/esm/components/Flags/tw.mjs.map +1 -1
  381. package/dist/esm/components/Flags/tz.mjs +9 -8
  382. package/dist/esm/components/Flags/tz.mjs.map +1 -1
  383. package/dist/esm/components/Flags/ua.mjs +4 -4
  384. package/dist/esm/components/Flags/ua.mjs.map +1 -1
  385. package/dist/esm/components/Flags/ug.mjs +26 -25
  386. package/dist/esm/components/Flags/ug.mjs.map +1 -1
  387. package/dist/esm/components/Flags/us.mjs +12 -8
  388. package/dist/esm/components/Flags/us.mjs.map +1 -1
  389. package/dist/esm/components/Flags/uy.mjs +15 -12
  390. package/dist/esm/components/Flags/uy.mjs.map +1 -1
  391. package/dist/esm/components/Flags/uz.mjs +27 -21
  392. package/dist/esm/components/Flags/uz.mjs.map +1 -1
  393. package/dist/esm/components/Flags/ve.mjs +21 -16
  394. package/dist/esm/components/Flags/ve.mjs.map +1 -1
  395. package/dist/esm/components/Flags/vn.mjs +7 -6
  396. package/dist/esm/components/Flags/vn.mjs.map +1 -1
  397. package/dist/esm/components/Flags/xx.mjs +5 -4
  398. package/dist/esm/components/Flags/xx.mjs.map +1 -1
  399. package/dist/esm/components/Flags/ye.mjs +5 -5
  400. package/dist/esm/components/Flags/ye.mjs.map +1 -1
  401. package/dist/esm/components/Flags/za.mjs +12 -11
  402. package/dist/esm/components/Flags/za.mjs.map +1 -1
  403. package/dist/esm/components/Flags/zw.mjs +16 -15
  404. package/dist/esm/components/Flags/zw.mjs.map +1 -1
  405. package/dist/esm/components/Footer/index.mjs.map +1 -1
  406. package/dist/esm/components/Form/FormBase.mjs.map +1 -1
  407. package/dist/esm/components/Form/FormControl.mjs.map +1 -1
  408. package/dist/esm/components/Form/FormDescription.mjs.map +1 -1
  409. package/dist/esm/components/Form/FormField.mjs +2 -1
  410. package/dist/esm/components/Form/FormField.mjs.map +1 -1
  411. package/dist/esm/components/Form/FormItem.mjs.map +1 -1
  412. package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
  413. package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
  414. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
  415. package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
  416. package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs.map +1 -1
  417. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs.map +1 -1
  418. package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
  419. package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
  420. package/dist/esm/components/Form/elements/InputElement.mjs.map +1 -1
  421. package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
  422. package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
  423. package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -1
  424. package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -1
  425. package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
  426. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
  427. package/dist/esm/components/Form/elements/TextAreaElement.mjs.map +1 -1
  428. package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
  429. package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
  430. package/dist/esm/components/Form/layout/RequiredStar.mjs.map +1 -1
  431. package/dist/esm/components/HTMLRender/HTMLRender.mjs.map +1 -1
  432. package/dist/esm/components/Headers/index.mjs.map +1 -1
  433. package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
  434. package/dist/esm/components/HideShow/index.mjs.map +1 -1
  435. package/dist/esm/components/IDE/Code.mjs +1 -1
  436. package/dist/esm/components/IDE/Code.mjs.map +1 -1
  437. package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
  438. package/dist/esm/components/IDE/CodeBlockHighlight.mjs.map +1 -1
  439. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  440. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  441. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
  442. package/dist/esm/components/IDE/CodeContext.mjs.map +1 -1
  443. package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
  444. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
  445. package/dist/esm/components/IDE/CopyCode.mjs.map +1 -1
  446. package/dist/esm/components/IDE/FileList.mjs.map +1 -1
  447. package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
  448. package/dist/esm/components/IDE/IDE.mjs +2 -1
  449. package/dist/esm/components/IDE/IDE.mjs.map +1 -1
  450. package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
  451. package/dist/esm/components/IDE/MonacoCode.mjs.map +1 -1
  452. package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
  453. package/dist/esm/components/IDE/code.content.mjs.map +1 -1
  454. package/dist/esm/components/IDE/codeTransformer.mjs +7 -4
  455. package/dist/esm/components/IDE/codeTransformer.mjs.map +1 -1
  456. package/dist/esm/components/IDE/copyCode.content.mjs.map +1 -1
  457. package/dist/esm/components/IDE/createFileTree.mjs.map +1 -1
  458. package/dist/esm/components/IDE/selectors.content.mjs.map +1 -1
  459. package/dist/esm/components/InformationTag/index.mjs.map +1 -1
  460. package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
  461. package/dist/esm/components/Input/Input.mjs.map +1 -1
  462. package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
  463. package/dist/esm/components/Input/OTPInput.mjs +2 -1
  464. package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
  465. package/dist/esm/components/Input/Radio.mjs.map +1 -1
  466. package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
  467. package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
  468. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs +2 -1
  469. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
  470. package/dist/esm/components/Label/index.mjs.map +1 -1
  471. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs.map +1 -1
  472. package/dist/esm/components/LanguageBackground/LanguageSection.mjs.map +1 -1
  473. package/dist/esm/components/Link/Link.mjs.map +1 -1
  474. package/dist/esm/components/Loader/index.content.mjs.map +1 -1
  475. package/dist/esm/components/Loader/index.mjs.map +1 -1
  476. package/dist/esm/components/Loader/spinner.mjs.map +1 -1
  477. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  478. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs.map +1 -1
  479. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
  480. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +4 -2
  481. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  482. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
  483. package/dist/esm/components/Logo/Logo.mjs.map +1 -1
  484. package/dist/esm/components/Logo/LogoTextOnly.mjs.map +1 -1
  485. package/dist/esm/components/Logo/LogoWithText.mjs.map +1 -1
  486. package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
  487. package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs.map +1 -1
  488. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +1 -1
  489. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  490. package/dist/esm/components/MarkdownEditor/MarkdownEditor.mjs +2 -3
  491. package/dist/esm/components/MarkdownEditor/MarkdownEditor.mjs.map +1 -1
  492. package/dist/esm/components/MarkdownEditor/extensions.mjs.map +1 -1
  493. package/dist/esm/components/MarkdownEditor/generative/AICompletionCommands.mjs.map +1 -1
  494. package/dist/esm/components/MarkdownEditor/generative/AISelector.mjs +2 -1
  495. package/dist/esm/components/MarkdownEditor/generative/AISelector.mjs.map +1 -1
  496. package/dist/esm/components/MarkdownEditor/generative/AISelectorCommands.mjs.map +1 -1
  497. package/dist/esm/components/MarkdownEditor/generative/GenerativeMenuSwitch.mjs.map +1 -1
  498. package/dist/esm/components/MarkdownEditor/generative/useAICompletion.mjs.map +1 -1
  499. package/dist/esm/components/MarkdownEditor/imageUpload.mjs +2 -1
  500. package/dist/esm/components/MarkdownEditor/imageUpload.mjs.map +1 -1
  501. package/dist/esm/components/MarkdownEditor/markdownEditor.content.mjs +118 -59
  502. package/dist/esm/components/MarkdownEditor/markdownEditor.content.mjs.map +1 -1
  503. package/dist/esm/components/MarkdownEditor/novel/components/editor-bubble-item.mjs.map +1 -1
  504. package/dist/esm/components/MarkdownEditor/novel/components/editor-bubble.mjs.map +1 -1
  505. package/dist/esm/components/MarkdownEditor/novel/components/editor-command-item.mjs.map +1 -1
  506. package/dist/esm/components/MarkdownEditor/novel/components/editor-command.mjs.map +1 -1
  507. package/dist/esm/components/MarkdownEditor/novel/components/editor.mjs.map +1 -1
  508. package/dist/esm/components/MarkdownEditor/novel/extensions/ai-highlight.mjs.map +1 -1
  509. package/dist/esm/components/MarkdownEditor/novel/extensions/custom-keymap.mjs.map +1 -1
  510. package/dist/esm/components/MarkdownEditor/novel/extensions/image-resizer.mjs +91 -37
  511. package/dist/esm/components/MarkdownEditor/novel/extensions/image-resizer.mjs.map +1 -1
  512. package/dist/esm/components/MarkdownEditor/novel/extensions/index.mjs.map +1 -1
  513. package/dist/esm/components/MarkdownEditor/novel/extensions/slash-command.mjs +49 -13
  514. package/dist/esm/components/MarkdownEditor/novel/extensions/slash-command.mjs.map +1 -1
  515. package/dist/esm/components/MarkdownEditor/novel/extensions/updated-image.mjs.map +1 -1
  516. package/dist/esm/components/MarkdownEditor/novel/plugins/upload-images.mjs.map +1 -1
  517. package/dist/esm/components/MarkdownEditor/novel/utils/atoms.mjs.map +1 -1
  518. package/dist/esm/components/MarkdownEditor/novel/utils/index.mjs.map +1 -1
  519. package/dist/esm/components/MarkdownEditor/selectors/ColorSelector.mjs.map +1 -1
  520. package/dist/esm/components/MarkdownEditor/selectors/LinkSelector.mjs.map +1 -1
  521. package/dist/esm/components/MarkdownEditor/selectors/NodeSelector.mjs.map +1 -1
  522. package/dist/esm/components/MarkdownEditor/selectors/TextButtons.mjs.map +1 -1
  523. package/dist/esm/components/MarkdownEditor/slashCommand.mjs.map +1 -1
  524. package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
  525. package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
  526. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  527. package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
  528. package/dist/esm/components/Navbar/DesktopNavbar.mjs.map +1 -1
  529. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  530. package/dist/esm/components/Navbar/index.mjs.map +1 -1
  531. package/dist/esm/components/Navbar/useNavigation.mjs.map +1 -1
  532. package/dist/esm/components/Pagination/NumberItemsSelector.mjs.map +1 -1
  533. package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
  534. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
  535. package/dist/esm/components/Pagination/pagination.content.mjs.map +1 -1
  536. package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
  537. package/dist/esm/components/Pattern/GridDistortionPattern.mjs +2 -1
  538. package/dist/esm/components/Pattern/GridDistortionPattern.mjs.map +1 -1
  539. package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
  540. package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
  541. package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
  542. package/dist/esm/components/Popover/static.mjs.map +1 -1
  543. package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
  544. package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
  545. package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs.map +1 -1
  546. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -1
  547. package/dist/esm/components/RightDrawer/useRightDrawer.mjs.map +1 -1
  548. package/dist/esm/components/Select/Multiselect.mjs +26 -24
  549. package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
  550. package/dist/esm/components/Select/Select.mjs.map +1 -1
  551. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs.map +1 -1
  552. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs.map +1 -1
  553. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs.map +1 -1
  554. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs.map +1 -1
  555. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs.map +1 -1
  556. package/dist/esm/components/SocialNetworks/XLogo.mjs.map +1 -1
  557. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs.map +1 -1
  558. package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
  559. package/dist/esm/components/Steps/index.mjs.map +1 -1
  560. package/dist/esm/components/Steps/steps.content.mjs.map +1 -1
  561. package/dist/esm/components/SwitchSelector/SwitchSelector.mjs.map +1 -1
  562. package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs.map +1 -1
  563. package/dist/esm/components/SwitchSelector/useSwitchSelector.mjs.map +1 -1
  564. package/dist/esm/components/Tab/Tab.mjs +4 -2
  565. package/dist/esm/components/Tab/Tab.mjs.map +1 -1
  566. package/dist/esm/components/Tab/TabContext.mjs.map +1 -1
  567. package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
  568. package/dist/esm/components/Table/ExpandButton.mjs.map +1 -1
  569. package/dist/esm/components/Table/SmartTable.mjs.map +1 -1
  570. package/dist/esm/components/Table/Table.mjs.map +1 -1
  571. package/dist/esm/components/Table/TableElements.mjs.map +1 -1
  572. package/dist/esm/components/Table/table.content.mjs.map +1 -1
  573. package/dist/esm/components/Table/useTableWidths.mjs.map +1 -1
  574. package/dist/esm/components/Tag/index.mjs.map +1 -1
  575. package/dist/esm/components/TechLogo/TechLogo.mjs.map +1 -1
  576. package/dist/esm/components/TechLogo/logos/Adonis.mjs.map +1 -1
  577. package/dist/esm/components/TechLogo/logos/Angular.mjs.map +1 -1
  578. package/dist/esm/components/TechLogo/logos/Anthropic.mjs.map +1 -1
  579. package/dist/esm/components/TechLogo/logos/Astro.mjs.map +1 -1
  580. package/dist/esm/components/TechLogo/logos/Atlassian.mjs.map +1 -1
  581. package/dist/esm/components/TechLogo/logos/Bitbucket.mjs.map +1 -1
  582. package/dist/esm/components/TechLogo/logos/ChatGPT.mjs.map +1 -1
  583. package/dist/esm/components/TechLogo/logos/Claude.mjs.map +1 -1
  584. package/dist/esm/components/TechLogo/logos/DeepSeek.mjs.map +1 -1
  585. package/dist/esm/components/TechLogo/logos/Express.mjs.map +1 -1
  586. package/dist/esm/components/TechLogo/logos/Fastify.mjs.map +1 -1
  587. package/dist/esm/components/TechLogo/logos/Gemini.mjs.map +1 -1
  588. package/dist/esm/components/TechLogo/logos/GitHub.mjs.map +1 -1
  589. package/dist/esm/components/TechLogo/logos/GitLab.mjs.map +1 -1
  590. package/dist/esm/components/TechLogo/logos/Google.mjs.map +1 -1
  591. package/dist/esm/components/TechLogo/logos/GoogleAI.mjs.map +1 -1
  592. package/dist/esm/components/TechLogo/logos/Grok.mjs.map +1 -1
  593. package/dist/esm/components/TechLogo/logos/Hono.mjs.map +1 -1
  594. package/dist/esm/components/TechLogo/logos/LinkedIn.mjs.map +1 -1
  595. package/dist/esm/components/TechLogo/logos/Lit.mjs.map +1 -1
  596. package/dist/esm/components/TechLogo/logos/Lynx.mjs.map +1 -1
  597. package/dist/esm/components/TechLogo/logos/Microsoft.mjs.map +1 -1
  598. package/dist/esm/components/TechLogo/logos/Mistral.mjs.map +1 -1
  599. package/dist/esm/components/TechLogo/logos/NestJS.mjs.map +1 -1
  600. package/dist/esm/components/TechLogo/logos/Nextjs.mjs.map +1 -1
  601. package/dist/esm/components/TechLogo/logos/Node.mjs.map +1 -1
  602. package/dist/esm/components/TechLogo/logos/Nuxt.mjs.map +1 -1
  603. package/dist/esm/components/TechLogo/logos/Ollama.mjs.map +1 -1
  604. package/dist/esm/components/TechLogo/logos/OpenAI.mjs.map +1 -1
  605. package/dist/esm/components/TechLogo/logos/Perplexity.mjs.map +1 -1
  606. package/dist/esm/components/TechLogo/logos/Preact.mjs.map +1 -1
  607. package/dist/esm/components/TechLogo/logos/Reactjs.mjs.map +1 -1
  608. package/dist/esm/components/TechLogo/logos/Solid.mjs.map +1 -1
  609. package/dist/esm/components/TechLogo/logos/Svelte.mjs.map +1 -1
  610. package/dist/esm/components/TechLogo/logos/Tanstack.mjs.map +1 -1
  611. package/dist/esm/components/TechLogo/logos/Vanilla.mjs.map +1 -1
  612. package/dist/esm/components/TechLogo/logos/Vitejs.mjs.map +1 -1
  613. package/dist/esm/components/TechLogo/logos/Vuejs.mjs.map +1 -1
  614. package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
  615. package/dist/esm/components/Terminal/terminal.content.mjs.map +1 -1
  616. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +1 -2
  617. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
  618. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +2 -1
  619. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  620. package/dist/esm/components/TextArea/ContentEditableTextArea.mjs +30 -15
  621. package/dist/esm/components/TextArea/ContentEditableTextArea.mjs.map +1 -1
  622. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  623. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  624. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
  625. package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
  626. package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
  627. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  628. package/dist/esm/components/WithResizer/index.mjs +3 -2
  629. package/dist/esm/components/WithResizer/index.mjs.map +1 -1
  630. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  631. package/dist/esm/hooks/useGetElementById.mjs.map +1 -1
  632. package/dist/esm/hooks/useGetElementOrWindow.mjs.map +1 -1
  633. package/dist/esm/hooks/useHorizontalSwipe.mjs +2 -1
  634. package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
  635. package/dist/esm/hooks/useIsDarkMode.mjs +2 -1
  636. package/dist/esm/hooks/useIsDarkMode.mjs.map +1 -1
  637. package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
  638. package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
  639. package/dist/esm/hooks/useKeyboardDetector.mjs.map +1 -1
  640. package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
  641. package/dist/esm/hooks/useScreenWidth.mjs.map +1 -1
  642. package/dist/esm/hooks/useScrollBlockage/index.mjs.map +1 -1
  643. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs.map +1 -1
  644. package/dist/esm/hooks/useScrollDetection.mjs +5 -2
  645. package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
  646. package/dist/esm/hooks/useScrollY.mjs.map +1 -1
  647. package/dist/esm/hooks/useSearch.mjs.map +1 -1
  648. package/dist/esm/libs/auth.mjs.map +1 -1
  649. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  650. package/dist/esm/routes.mjs +7 -1
  651. package/dist/esm/routes.mjs.map +1 -1
  652. package/dist/esm/structured-data/buildAuthorJsonLd.mjs.map +1 -1
  653. package/dist/esm/structured-data/buildBreadcrumbsJsonLd.mjs.map +1 -1
  654. package/dist/esm/structured-data/buildCreativeWorkJsonLd.mjs.map +1 -1
  655. package/dist/esm/structured-data/buildFAQPageJsonLd.mjs.map +1 -1
  656. package/dist/esm/structured-data/buildOrganizationJsonLd.mjs.map +1 -1
  657. package/dist/esm/structured-data/buildProductJsonLd.mjs.map +1 -1
  658. package/dist/esm/structured-data/buildSoftwareApplicationJsonLd.mjs +23 -4
  659. package/dist/esm/structured-data/buildSoftwareApplicationJsonLd.mjs.map +1 -1
  660. package/dist/esm/structured-data/buildWebsiteJsonLd.mjs.map +1 -1
  661. package/dist/esm/tailwind.config.mjs.map +1 -1
  662. package/dist/types/api/hooks/ai.d.ts +0 -1
  663. package/dist/types/api/hooks/ai.d.ts.map +1 -1
  664. package/dist/types/api/hooks/analytics.d.ts +27 -0
  665. package/dist/types/api/hooks/analytics.d.ts.map +1 -0
  666. package/dist/types/api/hooks/asset.d.ts +0 -1
  667. package/dist/types/api/hooks/asset.d.ts.map +1 -1
  668. package/dist/types/api/hooks/audit.d.ts +0 -1
  669. package/dist/types/api/hooks/audit.d.ts.map +1 -1
  670. package/dist/types/api/hooks/auth.d.ts.map +1 -1
  671. package/dist/types/api/hooks/bitbucket.d.ts.map +1 -1
  672. package/dist/types/api/hooks/dictionary.d.ts +2 -3
  673. package/dist/types/api/hooks/dictionary.d.ts.map +1 -1
  674. package/dist/types/api/hooks/discussions.d.ts +0 -1
  675. package/dist/types/api/hooks/discussions.d.ts.map +1 -1
  676. package/dist/types/api/hooks/editor.d.ts.map +1 -1
  677. package/dist/types/api/hooks/environment.d.ts.map +1 -1
  678. package/dist/types/api/hooks/github.d.ts +0 -1
  679. package/dist/types/api/hooks/github.d.ts.map +1 -1
  680. package/dist/types/api/hooks/gitlab.d.ts.map +1 -1
  681. package/dist/types/api/hooks/newsletter.d.ts.map +1 -1
  682. package/dist/types/api/hooks/organization.d.ts +2 -2
  683. package/dist/types/api/hooks/organization.d.ts.map +1 -1
  684. package/dist/types/api/hooks/project.d.ts +0 -1
  685. package/dist/types/api/hooks/project.d.ts.map +1 -1
  686. package/dist/types/api/hooks/reviewer.d.ts +2 -3
  687. package/dist/types/api/hooks/reviewer.d.ts.map +1 -1
  688. package/dist/types/api/hooks/search.d.ts +0 -1
  689. package/dist/types/api/hooks/search.d.ts.map +1 -1
  690. package/dist/types/api/hooks/showcaseProject.d.ts +1 -2
  691. package/dist/types/api/hooks/showcaseProject.d.ts.map +1 -1
  692. package/dist/types/api/hooks/stripe.d.ts +0 -1
  693. package/dist/types/api/hooks/stripe.d.ts.map +1 -1
  694. package/dist/types/api/hooks/tag.d.ts +0 -1
  695. package/dist/types/api/hooks/tag.d.ts.map +1 -1
  696. package/dist/types/api/hooks/translate.d.ts.map +1 -1
  697. package/dist/types/api/hooks/user.d.ts +0 -1
  698. package/dist/types/api/hooks/user.d.ts.map +1 -1
  699. package/dist/types/api/hooks/utils.d.ts +1 -6
  700. package/dist/types/api/hooks/utils.d.ts.map +1 -1
  701. package/dist/types/api/index.d.ts +5 -3
  702. package/dist/types/api/useAuth/useAuth.d.ts +1 -5
  703. package/dist/types/api/useAuth/useAuth.d.ts.map +1 -1
  704. package/dist/types/api/useAuth/useOAuth2.d.ts +1 -2
  705. package/dist/types/api/useAuth/useOAuth2.d.ts.map +1 -1
  706. package/dist/types/api/useAuth/useSession.d.ts +7 -4
  707. package/dist/types/api/useAuth/useSession.d.ts.map +1 -1
  708. package/dist/types/api/useIntlayerAPI.d.ts +45 -291
  709. package/dist/types/api/useIntlayerAPI.d.ts.map +1 -1
  710. package/dist/types/api/useUser/index.d.ts +1 -3
  711. package/dist/types/api/useUser/index.d.ts.map +1 -1
  712. package/dist/types/components/Accordion/Accordion.d.ts +1 -1
  713. package/dist/types/components/Accordion/Accordion.d.ts.map +1 -1
  714. package/dist/types/components/Avatar/image.d.ts.map +1 -1
  715. package/dist/types/components/Avatar/index.d.ts +0 -1
  716. package/dist/types/components/Avatar/index.d.ts.map +1 -1
  717. package/dist/types/components/Badge/index.d.ts +25 -16
  718. package/dist/types/components/Badge/index.d.ts.map +1 -1
  719. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +1 -3
  720. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  721. package/dist/types/components/Breadcrumb/index.d.ts +4 -5
  722. package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
  723. package/dist/types/components/Browser/Browser.content.d.ts +13 -15
  724. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  725. package/dist/types/components/Browser/Browser.d.ts +1 -14
  726. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  727. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts.map +1 -1
  728. package/dist/types/components/Button/Button.d.ts +5 -7
  729. package/dist/types/components/Button/Button.d.ts.map +1 -1
  730. package/dist/types/components/Carousel/index.content.d.ts +3 -5
  731. package/dist/types/components/Carousel/index.content.d.ts.map +1 -1
  732. package/dist/types/components/Carousel/index.d.ts +0 -1
  733. package/dist/types/components/Carousel/index.d.ts.map +1 -1
  734. package/dist/types/components/ClickOutsideDiv/index.d.ts +0 -1
  735. package/dist/types/components/ClickOutsideDiv/index.d.ts.map +1 -1
  736. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +4 -6
  737. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  738. package/dist/types/components/Command/index.d.ts +21 -25
  739. package/dist/types/components/Command/index.d.ts.map +1 -1
  740. package/dist/types/components/Container/index.d.ts +10 -11
  741. package/dist/types/components/Container/index.d.ts.map +1 -1
  742. package/dist/types/components/ContentEditor/ContentEditor.d.ts +5 -3
  743. package/dist/types/components/ContentEditor/ContentEditor.d.ts.map +1 -1
  744. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts +10 -5
  745. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  746. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts +10 -5
  747. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts.map +1 -1
  748. package/dist/types/components/ContentSelector/ContentSelector.d.ts +0 -1
  749. package/dist/types/components/ContentSelector/ContentSelector.d.ts.map +1 -1
  750. package/dist/types/components/CopyButton/CopyButton.content.d.ts +1 -3
  751. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  752. package/dist/types/components/CopyButton/index.d.ts +1 -1
  753. package/dist/types/components/CopyButton/index.d.ts.map +1 -1
  754. package/dist/types/components/CopyToClipboard/index.d.ts +0 -1
  755. package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
  756. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts +0 -1
  757. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
  758. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts +0 -1
  759. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts.map +1 -1
  760. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts +0 -1
  761. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts.map +1 -1
  762. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts +0 -1
  763. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts.map +1 -1
  764. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -2
  765. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts.map +1 -1
  766. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -2
  767. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts.map +1 -1
  768. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts +0 -1
  769. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
  770. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -2
  771. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
  772. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -2
  773. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts.map +1 -1
  774. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -2
  775. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
  776. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts +0 -1
  777. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  778. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts +0 -1
  779. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts.map +1 -1
  780. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts +1 -2
  781. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts.map +1 -1
  782. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts +0 -1
  783. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts.map +1 -1
  784. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -2
  785. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts.map +1 -1
  786. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts +0 -1
  787. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
  788. package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts +0 -1
  789. package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts.map +1 -1
  790. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts +2 -6
  791. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts.map +1 -1
  792. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts +7 -5
  793. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  794. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/object.d.ts.map +1 -1
  795. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts +0 -1
  796. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  797. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +18 -20
  798. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  799. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +4 -6
  800. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  801. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts +2 -3
  802. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts.map +1 -1
  803. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts +0 -1
  804. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  805. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +52 -54
  806. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  807. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +16 -18
  808. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  809. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts +3 -4
  810. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts.map +1 -1
  811. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts +0 -1
  812. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  813. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts +0 -1
  814. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts.map +1 -1
  815. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts +0 -1
  816. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts.map +1 -1
  817. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts +1 -1
  818. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
  819. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts +0 -1
  820. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  821. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +10 -12
  822. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  823. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts +0 -1
  824. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  825. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts +0 -1
  826. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  827. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +16 -18
  828. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  829. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts +0 -1
  830. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts.map +1 -1
  831. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts +0 -1
  832. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  833. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +4 -6
  834. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  835. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts +1 -2
  836. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
  837. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts +0 -1
  838. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts.map +1 -1
  839. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +3 -5
  840. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts.map +1 -1
  841. package/dist/types/components/DictionaryFieldEditor/contentEditor.content.d.ts +3 -5
  842. package/dist/types/components/DictionaryFieldEditor/contentEditor.content.d.ts.map +1 -1
  843. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +2 -4
  844. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  845. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts +0 -1
  846. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
  847. package/dist/types/components/DictionaryFieldEditor/index.d.ts +1 -0
  848. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +16 -18
  849. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  850. package/dist/types/components/DropDown/index.d.ts +1 -1
  851. package/dist/types/components/DropDown/index.d.ts.map +1 -1
  852. package/dist/types/components/EditableField/EditableFieldInput.d.ts +4 -2
  853. package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  854. package/dist/types/components/EditableField/EditableFieldLayout.d.ts +0 -1
  855. package/dist/types/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  856. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts +4 -2
  857. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts.map +1 -1
  858. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts +7 -4
  859. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
  860. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +1 -3
  861. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts.map +1 -1
  862. package/dist/types/components/Flags/Flag.d.ts +0 -1
  863. package/dist/types/components/Flags/Flag.d.ts.map +1 -1
  864. package/dist/types/components/Flags/flags.d.ts +604 -604
  865. package/dist/types/components/Flags/flags.d.ts.map +1 -1
  866. package/dist/types/components/Footer/index.d.ts +13 -6
  867. package/dist/types/components/Footer/index.d.ts.map +1 -1
  868. package/dist/types/components/Form/Form.d.ts +2 -25
  869. package/dist/types/components/Form/Form.d.ts.map +1 -1
  870. package/dist/types/components/Form/FormBase.d.ts +3 -16
  871. package/dist/types/components/Form/FormBase.d.ts.map +1 -1
  872. package/dist/types/components/Form/FormControl.d.ts +0 -1
  873. package/dist/types/components/Form/FormControl.d.ts.map +1 -1
  874. package/dist/types/components/Form/FormDescription.d.ts +0 -1
  875. package/dist/types/components/Form/FormDescription.d.ts.map +1 -1
  876. package/dist/types/components/Form/FormField.d.ts +2 -7
  877. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  878. package/dist/types/components/Form/FormItem.d.ts +1 -3
  879. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  880. package/dist/types/components/Form/FormLabel.d.ts +0 -1
  881. package/dist/types/components/Form/FormLabel.d.ts.map +1 -1
  882. package/dist/types/components/Form/FormMessage.d.ts +0 -1
  883. package/dist/types/components/Form/FormMessage.d.ts.map +1 -1
  884. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts +1 -2
  885. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
  886. package/dist/types/components/Form/elements/CheckboxElement.d.ts +2 -2
  887. package/dist/types/components/Form/elements/CheckboxElement.d.ts.map +1 -1
  888. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +2 -4
  889. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  890. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +2 -4
  891. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  892. package/dist/types/components/Form/elements/FormElement.d.ts +2 -3
  893. package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
  894. package/dist/types/components/Form/elements/FormElementWrapper.d.ts +0 -1
  895. package/dist/types/components/Form/elements/FormElementWrapper.d.ts.map +1 -1
  896. package/dist/types/components/Form/elements/InputElement.d.ts +2 -2
  897. package/dist/types/components/Form/elements/InputElement.d.ts.map +1 -1
  898. package/dist/types/components/Form/elements/InputPasswordElement.d.ts +1 -2
  899. package/dist/types/components/Form/elements/InputPasswordElement.d.ts.map +1 -1
  900. package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -13
  901. package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  902. package/dist/types/components/Form/elements/OTPElement.d.ts +4 -16
  903. package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
  904. package/dist/types/components/Form/elements/SearchInputElement.d.ts +2 -2
  905. package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -1
  906. package/dist/types/components/Form/elements/SelectElement.d.ts +2 -13
  907. package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
  908. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +3 -13
  909. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
  910. package/dist/types/components/Form/elements/TextAreaElement.d.ts +1 -2
  911. package/dist/types/components/Form/elements/TextAreaElement.d.ts.map +1 -1
  912. package/dist/types/components/Form/index.d.ts +3 -1
  913. package/dist/types/components/Form/layout/FormItemLayout.d.ts +0 -1
  914. package/dist/types/components/Form/layout/FormItemLayout.d.ts.map +1 -1
  915. package/dist/types/components/Form/layout/FormLabelLayout.d.ts +0 -1
  916. package/dist/types/components/Form/layout/FormLabelLayout.d.ts.map +1 -1
  917. package/dist/types/components/Form/layout/RequiredStar.d.ts +0 -1
  918. package/dist/types/components/Form/layout/RequiredStar.d.ts.map +1 -1
  919. package/dist/types/components/HTMLRender/HTMLRender.d.ts +0 -1
  920. package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
  921. package/dist/types/components/Headers/index.d.ts +0 -1
  922. package/dist/types/components/Headers/index.d.ts.map +1 -1
  923. package/dist/types/components/HeightResizer/index.d.ts +0 -1
  924. package/dist/types/components/HeightResizer/index.d.ts.map +1 -1
  925. package/dist/types/components/HideShow/index.d.ts +0 -1
  926. package/dist/types/components/HideShow/index.d.ts.map +1 -1
  927. package/dist/types/components/IDE/Code.d.ts +2 -2
  928. package/dist/types/components/IDE/Code.d.ts.map +1 -1
  929. package/dist/types/components/IDE/CodeBlockClient.d.ts +0 -1
  930. package/dist/types/components/IDE/CodeBlockClient.d.ts.map +1 -1
  931. package/dist/types/components/IDE/CodeBlockHighlight.d.ts +6 -10
  932. package/dist/types/components/IDE/CodeBlockHighlight.d.ts.map +1 -1
  933. package/dist/types/components/IDE/CodeBlockServer.d.ts +0 -1
  934. package/dist/types/components/IDE/CodeBlockServer.d.ts.map +1 -1
  935. package/dist/types/components/IDE/CodeBlockShiki.d.ts +0 -1
  936. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  937. package/dist/types/components/IDE/CodeConditionalRenderer.d.ts +0 -1
  938. package/dist/types/components/IDE/CodeConditionalRenderer.d.ts.map +1 -1
  939. package/dist/types/components/IDE/CodeContext.d.ts +1 -3
  940. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  941. package/dist/types/components/IDE/CodeFormatSelector.d.ts +2 -2
  942. package/dist/types/components/IDE/CodeFormatSelector.d.ts.map +1 -1
  943. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts +0 -1
  944. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts.map +1 -1
  945. package/dist/types/components/IDE/CopyCode.d.ts +2 -2
  946. package/dist/types/components/IDE/CopyCode.d.ts.map +1 -1
  947. package/dist/types/components/IDE/FileList.d.ts +0 -1
  948. package/dist/types/components/IDE/FileList.d.ts.map +1 -1
  949. package/dist/types/components/IDE/FileTree.d.ts +0 -1
  950. package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
  951. package/dist/types/components/IDE/IDE.d.ts +0 -1
  952. package/dist/types/components/IDE/IDE.d.ts.map +1 -1
  953. package/dist/types/components/IDE/MarkDownRender.d.ts +0 -1
  954. package/dist/types/components/IDE/MarkDownRender.d.ts.map +1 -1
  955. package/dist/types/components/IDE/MonacoCode.d.ts +0 -1
  956. package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
  957. package/dist/types/components/IDE/PackageManagerSelector.d.ts +0 -1
  958. package/dist/types/components/IDE/PackageManagerSelector.d.ts.map +1 -1
  959. package/dist/types/components/IDE/code.content.d.ts +2 -4
  960. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  961. package/dist/types/components/IDE/codeTransformer.d.ts.map +1 -1
  962. package/dist/types/components/IDE/copyCode.content.d.ts +2 -4
  963. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  964. package/dist/types/components/IDE/createFileTree.d.ts.map +1 -1
  965. package/dist/types/components/IDE/index.d.ts +1 -1
  966. package/dist/types/components/IDE/selectors.content.d.ts +6 -8
  967. package/dist/types/components/IDE/selectors.content.d.ts.map +1 -1
  968. package/dist/types/components/InformationTag/index.d.ts +0 -1
  969. package/dist/types/components/InformationTag/index.d.ts.map +1 -1
  970. package/dist/types/components/Input/Checkbox.d.ts +4 -6
  971. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  972. package/dist/types/components/Input/Input.d.ts +3 -5
  973. package/dist/types/components/Input/Input.d.ts.map +1 -1
  974. package/dist/types/components/Input/InputPassword.d.ts +0 -1
  975. package/dist/types/components/Input/InputPassword.d.ts.map +1 -1
  976. package/dist/types/components/Input/OTPInput.d.ts +7 -17
  977. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  978. package/dist/types/components/Input/Radio.d.ts +4 -6
  979. package/dist/types/components/Input/Radio.d.ts.map +1 -1
  980. package/dist/types/components/Input/SearchInput.d.ts +1 -6
  981. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  982. package/dist/types/components/KeyboardScreenAdapter/index.d.ts +0 -1
  983. package/dist/types/components/KeyboardScreenAdapter/index.d.ts.map +1 -1
  984. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts +11 -6
  985. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts.map +1 -1
  986. package/dist/types/components/Label/index.d.ts +0 -1
  987. package/dist/types/components/Label/index.d.ts.map +1 -1
  988. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts +0 -1
  989. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts.map +1 -1
  990. package/dist/types/components/LanguageBackground/LanguageSection.d.ts +0 -1
  991. package/dist/types/components/LanguageBackground/LanguageSection.d.ts.map +1 -1
  992. package/dist/types/components/Link/Link.d.ts +7 -12
  993. package/dist/types/components/Link/Link.d.ts.map +1 -1
  994. package/dist/types/components/Loader/index.content.d.ts +1 -3
  995. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  996. package/dist/types/components/Loader/index.d.ts +3 -2
  997. package/dist/types/components/Loader/index.d.ts.map +1 -1
  998. package/dist/types/components/Loader/spinner.d.ts +3 -7
  999. package/dist/types/components/Loader/spinner.d.ts.map +1 -1
  1000. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts +0 -1
  1001. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
  1002. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts +0 -1
  1003. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts.map +1 -1
  1004. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +8 -10
  1005. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  1006. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts +0 -1
  1007. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
  1008. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +6 -8
  1009. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  1010. package/dist/types/components/Logo/Logo.d.ts +0 -1
  1011. package/dist/types/components/Logo/Logo.d.ts.map +1 -1
  1012. package/dist/types/components/Logo/LogoTextOnly.d.ts +0 -1
  1013. package/dist/types/components/Logo/LogoTextOnly.d.ts.map +1 -1
  1014. package/dist/types/components/Logo/LogoWithText.d.ts +0 -1
  1015. package/dist/types/components/Logo/LogoWithText.d.ts.map +1 -1
  1016. package/dist/types/components/Logo/LogoWithTextBelow.d.ts +0 -1
  1017. package/dist/types/components/Logo/LogoWithTextBelow.d.ts.map +1 -1
  1018. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts +0 -1
  1019. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts.map +1 -1
  1020. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts +65 -116
  1021. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  1022. package/dist/types/components/MarkDownRender/index.d.ts +1 -1
  1023. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +11 -6
  1024. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  1025. package/dist/types/components/MarkdownEditor/extensions.d.ts.map +1 -1
  1026. package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts +1 -6
  1027. package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts.map +1 -1
  1028. package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts +7 -10
  1029. package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts.map +1 -1
  1030. package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts +1 -5
  1031. package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts.map +1 -1
  1032. package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts +7 -12
  1033. package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts.map +1 -1
  1034. package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts +2 -1
  1035. package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts.map +1 -1
  1036. package/dist/types/components/MarkdownEditor/imageUpload.d.ts +6 -7
  1037. package/dist/types/components/MarkdownEditor/imageUpload.d.ts.map +1 -1
  1038. package/dist/types/components/MarkdownEditor/markdownEditor.content.d.ts +118 -61
  1039. package/dist/types/components/MarkdownEditor/markdownEditor.content.d.ts.map +1 -1
  1040. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts +0 -1
  1041. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts.map +1 -1
  1042. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts +0 -1
  1043. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts.map +1 -1
  1044. package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts +4 -9
  1045. package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts.map +1 -1
  1046. package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts +6 -10
  1047. package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts.map +1 -1
  1048. package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts +5 -2
  1049. package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts.map +1 -1
  1050. package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts +0 -1
  1051. package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts.map +1 -1
  1052. package/dist/types/components/MarkdownEditor/novel/extensions/custom-keymap.d.ts +0 -1
  1053. package/dist/types/components/MarkdownEditor/novel/extensions/custom-keymap.d.ts.map +1 -1
  1054. package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts +4 -1
  1055. package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts.map +1 -1
  1056. package/dist/types/components/MarkdownEditor/novel/extensions/index.d.ts +3 -8
  1057. package/dist/types/components/MarkdownEditor/novel/extensions/index.d.ts.map +1 -1
  1058. package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts +4 -5
  1059. package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts.map +1 -1
  1060. package/dist/types/components/MarkdownEditor/novel/extensions/updated-image.d.ts +1 -4
  1061. package/dist/types/components/MarkdownEditor/novel/extensions/updated-image.d.ts.map +1 -1
  1062. package/dist/types/components/MarkdownEditor/novel/index.d.ts +1 -0
  1063. package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts +2 -8
  1064. package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts.map +1 -1
  1065. package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts +0 -1
  1066. package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts.map +1 -1
  1067. package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts +0 -1
  1068. package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts.map +1 -1
  1069. package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts +0 -1
  1070. package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts.map +1 -1
  1071. package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts +0 -1
  1072. package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts.map +1 -1
  1073. package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts +1 -1
  1074. package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts.map +1 -1
  1075. package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts +1 -3
  1076. package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts.map +1 -1
  1077. package/dist/types/components/MarkdownEditor/slashCommand.d.ts +3 -5
  1078. package/dist/types/components/MarkdownEditor/slashCommand.d.ts.map +1 -1
  1079. package/dist/types/components/MaxHeightSmoother/index.d.ts +0 -1
  1080. package/dist/types/components/MaxHeightSmoother/index.d.ts.map +1 -1
  1081. package/dist/types/components/MaxWidthSmoother/index.d.ts +1 -11
  1082. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  1083. package/dist/types/components/Modal/Modal.d.ts +0 -1
  1084. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  1085. package/dist/types/components/Navbar/Burger.d.ts +1 -7
  1086. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  1087. package/dist/types/components/Navbar/DesktopNavbar.d.ts +9 -11
  1088. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  1089. package/dist/types/components/Navbar/MobileNavbar.d.ts +15 -17
  1090. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  1091. package/dist/types/components/Navbar/index.d.ts +21 -79
  1092. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  1093. package/dist/types/components/Navbar/useNavigation.d.ts +5 -2
  1094. package/dist/types/components/Navbar/useNavigation.d.ts.map +1 -1
  1095. package/dist/types/components/Pagination/NumberItemsSelector.d.ts +0 -1
  1096. package/dist/types/components/Pagination/NumberItemsSelector.d.ts.map +1 -1
  1097. package/dist/types/components/Pagination/Pagination.d.ts +4 -6
  1098. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  1099. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts +0 -1
  1100. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts.map +1 -1
  1101. package/dist/types/components/Pagination/pagination.content.d.ts +5 -7
  1102. package/dist/types/components/Pagination/pagination.content.d.ts.map +1 -1
  1103. package/dist/types/components/Pattern/DotPattern.d.ts +13 -7
  1104. package/dist/types/components/Pattern/DotPattern.d.ts.map +1 -1
  1105. package/dist/types/components/Pattern/GridDistortionPattern.d.ts +0 -1
  1106. package/dist/types/components/Pattern/GridDistortionPattern.d.ts.map +1 -1
  1107. package/dist/types/components/Pattern/GridPattern.d.ts +11 -6
  1108. package/dist/types/components/Pattern/GridPattern.d.ts.map +1 -1
  1109. package/dist/types/components/Pattern/SpotLight.d.ts +11 -6
  1110. package/dist/types/components/Pattern/SpotLight.d.ts.map +1 -1
  1111. package/dist/types/components/Popover/dynamic.d.ts +0 -1
  1112. package/dist/types/components/Popover/dynamic.d.ts.map +1 -1
  1113. package/dist/types/components/Popover/static.d.ts +15 -8
  1114. package/dist/types/components/Popover/static.d.ts.map +1 -1
  1115. package/dist/types/components/PressableSpan/PressableSpan.d.ts +0 -1
  1116. package/dist/types/components/PressableSpan/PressableSpan.d.ts.map +1 -1
  1117. package/dist/types/components/RightDrawer/RightDrawer.d.ts +5 -3
  1118. package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  1119. package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts.map +1 -1
  1120. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +2 -4
  1121. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -1
  1122. package/dist/types/components/RightDrawer/useRightDrawer.d.ts.map +1 -1
  1123. package/dist/types/components/Select/Multiselect.d.ts +0 -1
  1124. package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
  1125. package/dist/types/components/Select/Select.d.ts +19 -12
  1126. package/dist/types/components/Select/Select.d.ts.map +1 -1
  1127. package/dist/types/components/SocialNetworks/DiscordLogo.d.ts +0 -1
  1128. package/dist/types/components/SocialNetworks/DiscordLogo.d.ts.map +1 -1
  1129. package/dist/types/components/SocialNetworks/FacebookLogo.d.ts +0 -1
  1130. package/dist/types/components/SocialNetworks/FacebookLogo.d.ts.map +1 -1
  1131. package/dist/types/components/SocialNetworks/InstagramLogo.d.ts +0 -1
  1132. package/dist/types/components/SocialNetworks/InstagramLogo.d.ts.map +1 -1
  1133. package/dist/types/components/SocialNetworks/ProductHuntLogo.d.ts +0 -1
  1134. package/dist/types/components/SocialNetworks/ProductHuntLogo.d.ts.map +1 -1
  1135. package/dist/types/components/SocialNetworks/TiktokLogo.d.ts +0 -1
  1136. package/dist/types/components/SocialNetworks/TiktokLogo.d.ts.map +1 -1
  1137. package/dist/types/components/SocialNetworks/XLogo.d.ts +0 -1
  1138. package/dist/types/components/SocialNetworks/XLogo.d.ts.map +1 -1
  1139. package/dist/types/components/SocialNetworks/YoutubeLogo.d.ts +0 -1
  1140. package/dist/types/components/SocialNetworks/YoutubeLogo.d.ts.map +1 -1
  1141. package/dist/types/components/SocialNetworks/index.d.ts +7 -7
  1142. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  1143. package/dist/types/components/Steps/index.d.ts +0 -1
  1144. package/dist/types/components/Steps/index.d.ts.map +1 -1
  1145. package/dist/types/components/Steps/steps.content.d.ts +2 -4
  1146. package/dist/types/components/Steps/steps.content.d.ts.map +1 -1
  1147. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +7 -10
  1148. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
  1149. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +5 -8
  1150. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts.map +1 -1
  1151. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts +14 -15
  1152. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts.map +1 -1
  1153. package/dist/types/components/Tab/Tab.d.ts +28 -22
  1154. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  1155. package/dist/types/components/Tab/TabContext.d.ts +1 -3
  1156. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  1157. package/dist/types/components/TabSelector/TabSelector.d.ts +4 -15
  1158. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  1159. package/dist/types/components/Table/ExpandButton.d.ts +0 -1
  1160. package/dist/types/components/Table/ExpandButton.d.ts.map +1 -1
  1161. package/dist/types/components/Table/SmartTable.d.ts +0 -1
  1162. package/dist/types/components/Table/SmartTable.d.ts.map +1 -1
  1163. package/dist/types/components/Table/Table.d.ts +1 -3
  1164. package/dist/types/components/Table/Table.d.ts.map +1 -1
  1165. package/dist/types/components/Table/TableElements.d.ts +4 -18
  1166. package/dist/types/components/Table/TableElements.d.ts.map +1 -1
  1167. package/dist/types/components/Table/table.content.d.ts +2 -4
  1168. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  1169. package/dist/types/components/Table/useTableWidths.d.ts +0 -1
  1170. package/dist/types/components/Table/useTableWidths.d.ts.map +1 -1
  1171. package/dist/types/components/Tag/index.d.ts +6 -8
  1172. package/dist/types/components/Tag/index.d.ts.map +1 -1
  1173. package/dist/types/components/TechLogo/TechLogo.d.ts +0 -1
  1174. package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
  1175. package/dist/types/components/TechLogo/logos/Adonis.d.ts +0 -1
  1176. package/dist/types/components/TechLogo/logos/Adonis.d.ts.map +1 -1
  1177. package/dist/types/components/TechLogo/logos/Angular.d.ts +0 -1
  1178. package/dist/types/components/TechLogo/logos/Angular.d.ts.map +1 -1
  1179. package/dist/types/components/TechLogo/logos/Anthropic.d.ts +0 -1
  1180. package/dist/types/components/TechLogo/logos/Anthropic.d.ts.map +1 -1
  1181. package/dist/types/components/TechLogo/logos/Astro.d.ts +0 -1
  1182. package/dist/types/components/TechLogo/logos/Astro.d.ts.map +1 -1
  1183. package/dist/types/components/TechLogo/logos/Atlassian.d.ts +0 -1
  1184. package/dist/types/components/TechLogo/logos/Atlassian.d.ts.map +1 -1
  1185. package/dist/types/components/TechLogo/logos/Bitbucket.d.ts +0 -1
  1186. package/dist/types/components/TechLogo/logos/Bitbucket.d.ts.map +1 -1
  1187. package/dist/types/components/TechLogo/logos/ChatGPT.d.ts +0 -1
  1188. package/dist/types/components/TechLogo/logos/ChatGPT.d.ts.map +1 -1
  1189. package/dist/types/components/TechLogo/logos/Claude.d.ts +0 -1
  1190. package/dist/types/components/TechLogo/logos/Claude.d.ts.map +1 -1
  1191. package/dist/types/components/TechLogo/logos/DeepSeek.d.ts +0 -1
  1192. package/dist/types/components/TechLogo/logos/DeepSeek.d.ts.map +1 -1
  1193. package/dist/types/components/TechLogo/logos/Express.d.ts +0 -1
  1194. package/dist/types/components/TechLogo/logos/Express.d.ts.map +1 -1
  1195. package/dist/types/components/TechLogo/logos/Fastify.d.ts +0 -1
  1196. package/dist/types/components/TechLogo/logos/Fastify.d.ts.map +1 -1
  1197. package/dist/types/components/TechLogo/logos/Gemini.d.ts +0 -1
  1198. package/dist/types/components/TechLogo/logos/Gemini.d.ts.map +1 -1
  1199. package/dist/types/components/TechLogo/logos/GitHub.d.ts +0 -1
  1200. package/dist/types/components/TechLogo/logos/GitHub.d.ts.map +1 -1
  1201. package/dist/types/components/TechLogo/logos/GitLab.d.ts +0 -1
  1202. package/dist/types/components/TechLogo/logos/GitLab.d.ts.map +1 -1
  1203. package/dist/types/components/TechLogo/logos/Google.d.ts +0 -1
  1204. package/dist/types/components/TechLogo/logos/Google.d.ts.map +1 -1
  1205. package/dist/types/components/TechLogo/logos/GoogleAI.d.ts +0 -1
  1206. package/dist/types/components/TechLogo/logos/GoogleAI.d.ts.map +1 -1
  1207. package/dist/types/components/TechLogo/logos/Grok.d.ts +0 -1
  1208. package/dist/types/components/TechLogo/logos/Grok.d.ts.map +1 -1
  1209. package/dist/types/components/TechLogo/logos/Hono.d.ts +0 -1
  1210. package/dist/types/components/TechLogo/logos/Hono.d.ts.map +1 -1
  1211. package/dist/types/components/TechLogo/logos/LinkedIn.d.ts +0 -1
  1212. package/dist/types/components/TechLogo/logos/LinkedIn.d.ts.map +1 -1
  1213. package/dist/types/components/TechLogo/logos/Lit.d.ts +1 -3
  1214. package/dist/types/components/TechLogo/logos/Lit.d.ts.map +1 -1
  1215. package/dist/types/components/TechLogo/logos/Lynx.d.ts +0 -1
  1216. package/dist/types/components/TechLogo/logos/Lynx.d.ts.map +1 -1
  1217. package/dist/types/components/TechLogo/logos/Microsoft.d.ts +0 -1
  1218. package/dist/types/components/TechLogo/logos/Microsoft.d.ts.map +1 -1
  1219. package/dist/types/components/TechLogo/logos/Mistral.d.ts +0 -1
  1220. package/dist/types/components/TechLogo/logos/Mistral.d.ts.map +1 -1
  1221. package/dist/types/components/TechLogo/logos/NestJS.d.ts +0 -1
  1222. package/dist/types/components/TechLogo/logos/NestJS.d.ts.map +1 -1
  1223. package/dist/types/components/TechLogo/logos/Nextjs.d.ts +0 -1
  1224. package/dist/types/components/TechLogo/logos/Nextjs.d.ts.map +1 -1
  1225. package/dist/types/components/TechLogo/logos/Node.d.ts +0 -1
  1226. package/dist/types/components/TechLogo/logos/Node.d.ts.map +1 -1
  1227. package/dist/types/components/TechLogo/logos/Nuxt.d.ts +0 -1
  1228. package/dist/types/components/TechLogo/logos/Nuxt.d.ts.map +1 -1
  1229. package/dist/types/components/TechLogo/logos/Ollama.d.ts +0 -1
  1230. package/dist/types/components/TechLogo/logos/Ollama.d.ts.map +1 -1
  1231. package/dist/types/components/TechLogo/logos/OpenAI.d.ts +0 -1
  1232. package/dist/types/components/TechLogo/logos/OpenAI.d.ts.map +1 -1
  1233. package/dist/types/components/TechLogo/logos/Perplexity.d.ts +0 -1
  1234. package/dist/types/components/TechLogo/logos/Perplexity.d.ts.map +1 -1
  1235. package/dist/types/components/TechLogo/logos/Preact.d.ts +0 -1
  1236. package/dist/types/components/TechLogo/logos/Preact.d.ts.map +1 -1
  1237. package/dist/types/components/TechLogo/logos/Reactjs.d.ts +0 -1
  1238. package/dist/types/components/TechLogo/logos/Reactjs.d.ts.map +1 -1
  1239. package/dist/types/components/TechLogo/logos/Solid.d.ts +0 -1
  1240. package/dist/types/components/TechLogo/logos/Solid.d.ts.map +1 -1
  1241. package/dist/types/components/TechLogo/logos/Svelte.d.ts +0 -1
  1242. package/dist/types/components/TechLogo/logos/Svelte.d.ts.map +1 -1
  1243. package/dist/types/components/TechLogo/logos/Tanstack.d.ts +0 -1
  1244. package/dist/types/components/TechLogo/logos/Tanstack.d.ts.map +1 -1
  1245. package/dist/types/components/TechLogo/logos/Vanilla.d.ts +1 -3
  1246. package/dist/types/components/TechLogo/logos/Vanilla.d.ts.map +1 -1
  1247. package/dist/types/components/TechLogo/logos/Vitejs.d.ts +0 -1
  1248. package/dist/types/components/TechLogo/logos/Vitejs.d.ts.map +1 -1
  1249. package/dist/types/components/TechLogo/logos/Vuejs.d.ts +0 -1
  1250. package/dist/types/components/TechLogo/logos/Vuejs.d.ts.map +1 -1
  1251. package/dist/types/components/TechLogo/techLogos.d.ts +0 -2
  1252. package/dist/types/components/TechLogo/types.d.ts.map +1 -1
  1253. package/dist/types/components/Terminal/Terminal.d.ts +0 -1
  1254. package/dist/types/components/Terminal/Terminal.d.ts.map +1 -1
  1255. package/dist/types/components/Terminal/terminal.content.d.ts +2 -4
  1256. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  1257. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts +3 -2
  1258. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts.map +1 -1
  1259. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts +3 -2
  1260. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
  1261. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts +2 -7
  1262. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -1
  1263. package/dist/types/components/TextArea/TextArea.d.ts +5 -3
  1264. package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
  1265. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts +0 -1
  1266. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts.map +1 -1
  1267. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts +0 -1
  1268. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts.map +1 -1
  1269. package/dist/types/components/ThemeSwitcherDropDown/types.d.ts.map +1 -1
  1270. package/dist/types/components/Toaster/Toast.d.ts +1 -3
  1271. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  1272. package/dist/types/components/Toaster/Toaster.d.ts +1 -3
  1273. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  1274. package/dist/types/components/Toaster/useToast.d.ts +10 -15
  1275. package/dist/types/components/Toaster/useToast.d.ts.map +1 -1
  1276. package/dist/types/components/WithResizer/index.d.ts +15 -8
  1277. package/dist/types/components/WithResizer/index.d.ts.map +1 -1
  1278. package/dist/types/components/index.d.ts +46 -7
  1279. package/dist/types/hooks/index.d.ts +1 -1
  1280. package/dist/types/hooks/useDevice.d.ts.map +1 -1
  1281. package/dist/types/hooks/useGetElementById.d.ts.map +1 -1
  1282. package/dist/types/hooks/useGetElementOrWindow.d.ts.map +1 -1
  1283. package/dist/types/hooks/useHorizontalSwipe.d.ts +0 -1
  1284. package/dist/types/hooks/useHorizontalSwipe.d.ts.map +1 -1
  1285. package/dist/types/hooks/useIsDarkMode.d.ts.map +1 -1
  1286. package/dist/types/hooks/useIsMounted.d.ts.map +1 -1
  1287. package/dist/types/hooks/useItemSelector.d.ts +1 -6
  1288. package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
  1289. package/dist/types/hooks/useKeyboardDetector.d.ts.map +1 -1
  1290. package/dist/types/hooks/usePersistedStore.d.ts +0 -1
  1291. package/dist/types/hooks/usePersistedStore.d.ts.map +1 -1
  1292. package/dist/types/hooks/useScreenWidth.d.ts.map +1 -1
  1293. package/dist/types/hooks/useScrollBlockage/index.d.ts.map +1 -1
  1294. package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts.map +1 -1
  1295. package/dist/types/hooks/useScrollDetection.d.ts.map +1 -1
  1296. package/dist/types/hooks/useScrollY.d.ts.map +1 -1
  1297. package/dist/types/hooks/useSearch.d.ts.map +1 -1
  1298. package/dist/types/libs/auth.d.ts +1 -2
  1299. package/dist/types/libs/auth.d.ts.map +1 -1
  1300. package/dist/types/providers/ReactQueryProvider.d.ts +0 -1
  1301. package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
  1302. package/dist/types/routes.d.ts +175 -169
  1303. package/dist/types/routes.d.ts.map +1 -1
  1304. package/dist/types/structured-data/buildAuthorJsonLd.d.ts +1 -1
  1305. package/dist/types/structured-data/buildAuthorJsonLd.d.ts.map +1 -1
  1306. package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts +4 -7
  1307. package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts.map +1 -1
  1308. package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts +31 -39
  1309. package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts.map +1 -1
  1310. package/dist/types/structured-data/buildFAQPageJsonLd.d.ts +5 -7
  1311. package/dist/types/structured-data/buildFAQPageJsonLd.d.ts.map +1 -1
  1312. package/dist/types/structured-data/buildOrganizationJsonLd.d.ts +16 -17
  1313. package/dist/types/structured-data/buildOrganizationJsonLd.d.ts.map +1 -1
  1314. package/dist/types/structured-data/buildProductJsonLd.d.ts +13 -15
  1315. package/dist/types/structured-data/buildProductJsonLd.d.ts.map +1 -1
  1316. package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts +47 -35
  1317. package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts.map +1 -1
  1318. package/dist/types/structured-data/buildWebsiteJsonLd.d.ts +19 -20
  1319. package/dist/types/structured-data/buildWebsiteJsonLd.d.ts.map +1 -1
  1320. package/dist/types/tailwind.config.d.ts.map +1 -1
  1321. package/package.json +64 -66
  1322. package/src/components/MarkdownEditor/markdown-editor.css +2 -8
@@ -1 +1 @@
1
- {"version":3,"file":"EnumerationWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.tsx"],"sourcesContent":["import type { EnumerationContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype EnumerationWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: EnumerationContent<ContentNode>;\n};\n\nexport const EnumerationWrapper: FC<EnumerationWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n {Object.keys(section[NodeTypes.ENUMERATION]).map((key) => {\n const newKeyPathEl: KeyPath = {\n type: NodeTypes.ENUMERATION,\n key,\n };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section[NodeTypes.ENUMERATION][\n key as keyof (typeof section)[typeof NodeTypes.ENUMERATION]\n ]!;\n\n return (\n <>\n <span className=\"flex items-center font-bold\">{key}</span>\n <NodeWrapper\n {...props}\n key={key}\n keyPath={newKeyPath}\n section={subSection}\n />\n </>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;;AAWA,MAAa,sBAAmD,UAAU;CACxE,MAAM,EAAE,SAAS,YAAY;AAE7B,QACE,oBAAC,OAAD;EAAK,WAAU;YACZ,OAAO,KAAK,QAAQ,UAAU,aAAa,CAAC,KAAK,QAAQ;GACxD,MAAM,eAAwB;IAC5B,MAAM,UAAU;IAChB;IACD;GACD,MAAM,aAAwB,CAAC,GAAG,SAAS,aAAa;GAExD,MAAM,aACJ,QAAQ,UAAU,aAChB;AAGJ,UACE,8CACE,oBAAC,QAAD;IAAM,WAAU;cAA+B;IAAW,GAC1D,8BAAC,aAAD;IACE,GAAI;IACC;IACL,SAAS;IACT,SAAS;IACT,EACD;IAEL;EACE"}
1
+ {"version":3,"file":"EnumerationWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.tsx"],"sourcesContent":["import type { EnumerationContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype EnumerationWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: EnumerationContent<ContentNode>;\n};\n\nexport const EnumerationWrapper: FC<EnumerationWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n {Object.keys(section[NodeTypes.ENUMERATION]).map((key) => {\n const newKeyPathEl: KeyPath = {\n type: NodeTypes.ENUMERATION,\n key,\n };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section[NodeTypes.ENUMERATION][\n key as keyof (typeof section)[typeof NodeTypes.ENUMERATION]\n ]!;\n\n return (\n <>\n <span className=\"flex items-center font-bold\">{key}</span>\n <NodeWrapper\n {...props}\n key={key}\n keyPath={newKeyPath}\n section={subSection}\n />\n </>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;;AAWA,MAAa,sBAAmD,UAAU;CACxE,MAAM,EAAE,SAAS,YAAY;CAE7B,OACE,oBAAC,OAAD;EAAK,WAAU;YACZ,OAAO,KAAK,QAAQ,UAAU,YAAY,CAAC,CAAC,KAAK,QAAQ;GACxD,MAAM,eAAwB;IAC5B,MAAM,UAAU;IAChB;GACF;GACA,MAAM,aAAwB,CAAC,GAAG,SAAS,YAAY;GAEvD,MAAM,aACJ,QAAQ,UAAU,YAAY,CAC5B;GAGJ,OACE,8CACE,oBAAC,QAAD;IAAM,WAAU;cAA+B;GAAU,IACzD,8BAAC,aAAD;IACE,GAAI;IACC;IACL,SAAS;IACT,SAAS;GACV,EACD;EAEN,CAAC;CACE;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/FileWrapper.tsx"],"sourcesContent":["import { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport type { FileContent } from '@intlayer/core/transpiler';\nimport { useEditedContent } from '@intlayer/editor-react';\nimport type { LocalDictionaryId } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { StringWrapper, type StringWrapperProps } from './StringWrapper';\n\ntype FileWrapperProps = Omit<StringWrapperProps, 'section'> & {\n section: FileContent;\n};\n\nexport const FileWrapper: FC<FileWrapperProps> = (props) => {\n const { keyPath, section } = props;\n const { addEditedContent } = useEditedContent();\n const editedContentValue = getContentNodeByKeyPath(\n props.editedContent,\n keyPath\n ) as FileContent | undefined;\n\n const subSection = section[NodeTypes.FILE];\n const { content } = section;\n\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.FILE,\n },\n ];\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n <span className=\"text-neutral text-sm\">{subSection} </span>\n <StringWrapper\n {...props}\n keyPath={newKeyPath}\n section={content}\n editedContentValue={editedContentValue?.content}\n onContentChange={(content) => {\n addEditedContent(\n props.dictionary.localId as LocalDictionaryId,\n {\n ...section,\n content: content.newValue,\n } as FileContent,\n keyPath\n );\n }}\n />\n </div>\n );\n};\n"],"mappings":";;;;;;;AAaA,MAAa,eAAqC,UAAU;CAC1D,MAAM,EAAE,SAAS,YAAY;CAC7B,MAAM,EAAE,qBAAqB,kBAAkB;CAC/C,MAAM,qBAAqB,wBACzB,MAAM,eACN,QACD;CAED,MAAM,aAAa,QAAQ,UAAU;CACrC,MAAM,EAAE,YAAY;CAEpB,MAAM,aAAwB,CAC5B,GAAG,SACH,EACE,MAAM,UAAU,MACjB,CACF;AAED,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,QAAD;GAAM,WAAU;aAAhB,CAAwC,YAAW,IAAQ;MAC3D,oBAAC,eAAD;GACE,GAAI;GACJ,SAAS;GACT,SAAS;GACT,oBAAoB,oBAAoB;GACxC,kBAAkB,YAAY;AAC5B,qBACE,MAAM,WAAW,SACjB;KACE,GAAG;KACH,SAAS,QAAQ;KAClB,EACD,QACD;;GAEH,EACE"}
1
+ {"version":3,"file":"FileWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/FileWrapper.tsx"],"sourcesContent":["import { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport type { FileContent } from '@intlayer/core/transpiler';\nimport { useEditedContent } from '@intlayer/editor-react';\nimport type { LocalDictionaryId } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { StringWrapper, type StringWrapperProps } from './StringWrapper';\n\ntype FileWrapperProps = Omit<StringWrapperProps, 'section'> & {\n section: FileContent;\n};\n\nexport const FileWrapper: FC<FileWrapperProps> = (props) => {\n const { keyPath, section } = props;\n const { addEditedContent } = useEditedContent();\n const editedContentValue = getContentNodeByKeyPath(\n props.editedContent,\n keyPath\n ) as FileContent | undefined;\n\n const subSection = section[NodeTypes.FILE];\n const { content } = section;\n\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.FILE,\n },\n ];\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n <span className=\"text-neutral text-sm\">{subSection} </span>\n <StringWrapper\n {...props}\n keyPath={newKeyPath}\n section={content}\n editedContentValue={editedContentValue?.content}\n onContentChange={(content) => {\n addEditedContent(\n props.dictionary.localId as LocalDictionaryId,\n {\n ...section,\n content: content.newValue,\n } as FileContent,\n keyPath\n );\n }}\n />\n </div>\n );\n};\n"],"mappings":";;;;;;;AAaA,MAAa,eAAqC,UAAU;CAC1D,MAAM,EAAE,SAAS,YAAY;CAC7B,MAAM,EAAE,qBAAqB,iBAAiB;CAC9C,MAAM,qBAAqB,wBACzB,MAAM,eACN,OACF;CAEA,MAAM,aAAa,QAAQ,UAAU;CACrC,MAAM,EAAE,YAAY;CAEpB,MAAM,aAAwB,CAC5B,GAAG,SACH,EACE,MAAM,UAAU,KAClB,CACF;CAEA,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,QAAD;GAAM,WAAU;aAAhB,CAAwC,YAAW,GAAO;MAC1D,oBAAC,eAAD;GACE,GAAI;GACJ,SAAS;GACT,SAAS;GACT,oBAAoB,oBAAoB;GACxC,kBAAkB,YAAY;IAC5B,iBACE,MAAM,WAAW,SACjB;KACE,GAAG;KACH,SAAS,QAAQ;IACnB,GACA,OACF;GACF;EACD,EACE;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"HtmlWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/HtmlWrapper.tsx"],"sourcesContent":["import type { HTMLContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\n\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype HtmlWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: HTMLContent<ContentNode>;\n};\n\nexport const HtmlWrapper: FC<HtmlWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.HTML,\n },\n ];\n\n const subSection = section[NodeTypes.HTML] as ContentNode;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />\n </div>\n );\n};\n"],"mappings":";;;;;AAYA,MAAa,eAAqC,UAAU;CAC1D,MAAM,EAAE,SAAS,YAAY;CAE7B,MAAM,aAAwB,CAC5B,GAAG,SACH,EACE,MAAM,UAAU,MACjB,CACF;CAED,MAAM,aAAa,QAAQ,UAAU;AAErC,QACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,aAAD;GAAa,GAAI;GAAO,SAAS;GAAY,SAAS;GAAc;EAChE"}
1
+ {"version":3,"file":"HtmlWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/HtmlWrapper.tsx"],"sourcesContent":["import type { HTMLContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\n\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype HtmlWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: HTMLContent<ContentNode>;\n};\n\nexport const HtmlWrapper: FC<HtmlWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.HTML,\n },\n ];\n\n const subSection = section[NodeTypes.HTML] as ContentNode;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />\n </div>\n );\n};\n"],"mappings":";;;;;AAYA,MAAa,eAAqC,UAAU;CAC1D,MAAM,EAAE,SAAS,YAAY;CAE7B,MAAM,aAAwB,CAC5B,GAAG,SACH,EACE,MAAM,UAAU,KAClB,CACF;CAEA,MAAM,aAAa,QAAQ,UAAU;CAErC,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,aAAD;GAAa,GAAI;GAAO,SAAS;GAAY,SAAS;EAAa;CAChE;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"InsertionWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/InsertionWrapper.tsx"],"sourcesContent":["import type { InsertionContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype InsertionWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: InsertionContent<ContentNode>;\n};\n\nexport const InsertionWrapper: FC<InsertionWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.INSERTION,\n },\n ];\n\n const subSection = section[NodeTypes.INSERTION];\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />\n </div>\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,oBAA+C,UAAU;CACpE,MAAM,EAAE,SAAS,YAAY;CAE7B,MAAM,aAAwB,CAC5B,GAAG,SACH,EACE,MAAM,UAAU,WACjB,CACF;CAED,MAAM,aAAa,QAAQ,UAAU;AAErC,QACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,aAAD;GAAa,GAAI;GAAO,SAAS;GAAY,SAAS;GAAc;EAChE"}
1
+ {"version":3,"file":"InsertionWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/InsertionWrapper.tsx"],"sourcesContent":["import type { InsertionContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype InsertionWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: InsertionContent<ContentNode>;\n};\n\nexport const InsertionWrapper: FC<InsertionWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.INSERTION,\n },\n ];\n\n const subSection = section[NodeTypes.INSERTION];\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />\n </div>\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,oBAA+C,UAAU;CACpE,MAAM,EAAE,SAAS,YAAY;CAE7B,MAAM,aAAwB,CAC5B,GAAG,SACH,EACE,MAAM,UAAU,UAClB,CACF;CAEA,MAAM,aAAa,QAAQ,UAAU;CAErC,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,aAAD;GAAa,GAAI;GAAO,SAAS;GAAY,SAAS;EAAa;CAChE;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.tsx"],"sourcesContent":["import type { MarkdownContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype MarkdownWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: MarkdownContent<ContentNode>;\n};\n\nexport const MarkdownWrapper: FC<MarkdownWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.MARKDOWN,\n },\n ];\n\n const subSection = section[NodeTypes.MARKDOWN] as ContentNode;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />\n </div>\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,mBAA6C,UAAU;CAClE,MAAM,EAAE,SAAS,YAAY;CAE7B,MAAM,aAAwB,CAC5B,GAAG,SACH,EACE,MAAM,UAAU,UACjB,CACF;CAED,MAAM,aAAa,QAAQ,UAAU;AAErC,QACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,aAAD;GAAa,GAAI;GAAO,SAAS;GAAY,SAAS;GAAc;EAChE"}
1
+ {"version":3,"file":"MarkdownWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.tsx"],"sourcesContent":["import type { MarkdownContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype MarkdownWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: MarkdownContent<ContentNode>;\n};\n\nexport const MarkdownWrapper: FC<MarkdownWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.MARKDOWN,\n },\n ];\n\n const subSection = section[NodeTypes.MARKDOWN] as ContentNode;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />\n </div>\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,mBAA6C,UAAU;CAClE,MAAM,EAAE,SAAS,YAAY;CAE7B,MAAM,aAAwB,CAC5B,GAAG,SACH,EACE,MAAM,UAAU,SAClB,CACF;CAEA,MAAM,aAAa,QAAQ,UAAU;CAErC,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,aAAD;GAAa,GAAI;GAAO,SAAS;GAAY,SAAS;EAAa;CAChE;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"NestedObjectWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.tsx"],"sourcesContent":["import { camelCaseToSentence } from '@intlayer/config/client';\nimport { isSameKeyPath } from '@intlayer/core/utils';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\n\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport { type FC, memo, useMemo } from 'react';\nimport { ItemLayout } from '../ItemLayout';\nimport { NodeWrapper, type NodeWrapperProps, traceKeys } from './index';\n\ntype NestedObjectWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: Record<string, ContentNode>;\n};\n\nexport const NestedObjectWrapper: FC<NestedObjectWrapperProps> = memo(\n (props) => {\n const { keyPath, section, focusedKeyPath = [], onFocusKeyPath } = props;\n\n const sectionKeys = useMemo(\n () =>\n Object.keys(section ?? {}).filter((key) => !traceKeys.includes(key)),\n [section]\n );\n\n return sectionKeys.map((key) => {\n const newKeyPathEl: KeyPath = { key, type: NodeTypes.OBJECT };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const isSelected = isSameKeyPath(newKeyPath, focusedKeyPath);\n\n return (\n <ItemLayout\n level={keyPath.length}\n key={key}\n title={camelCaseToSentence(key)}\n description=\"\"\n isSelected={isSelected}\n onClick={(e) => {\n e.stopPropagation();\n\n if (isSelected) {\n onFocusKeyPath([]);\n } else {\n onFocusKeyPath(newKeyPath);\n }\n }}\n >\n <NodeWrapper {...props} keyPath={newKeyPath} section={section[key]} />\n </ItemLayout>\n );\n });\n }\n);\n"],"mappings":";;;;;;;;;AAcA,MAAa,sBAAoD,MAC9D,UAAU;CACT,MAAM,EAAE,SAAS,SAAS,iBAAiB,EAAE,EAAE,mBAAmB;AAQlE,QANoB,cAEhB,OAAO,KAAK,WAAW,EAAE,CAAC,CAAC,QAAQ,QAAQ,CAAC,UAAU,SAAS,IAAI,CAAC,EACtE,CAAC,QAAQ,CAGO,CAAC,KAAK,QAAQ;EAC9B,MAAM,eAAwB;GAAE;GAAK,MAAM,UAAU;GAAQ;EAC7D,MAAM,aAAwB,CAAC,GAAG,SAAS,aAAa;EAExD,MAAM,aAAa,cAAc,YAAY,eAAe;AAE5D,SACE,oBAAC,YAAD;GACE,OAAO,QAAQ;GAEf,OAAO,oBAAoB,IAAI;GAC/B,aAAY;GACA;GACZ,UAAU,MAAM;AACd,MAAE,iBAAiB;AAEnB,QAAI,WACF,gBAAe,EAAE,CAAC;QAElB,gBAAe,WAAW;;aAI9B,oBAAC,aAAD;IAAa,GAAI;IAAO,SAAS;IAAY,SAAS,QAAQ;IAAQ;GAC3D,EAfN,IAeM;GAEf;EAEL"}
1
+ {"version":3,"file":"NestedObjectWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.tsx"],"sourcesContent":["import { camelCaseToSentence } from '@intlayer/config/client';\nimport { isSameKeyPath } from '@intlayer/core/utils';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\n\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport { type FC, memo, useMemo } from 'react';\nimport { ItemLayout } from '../ItemLayout';\nimport { NodeWrapper, type NodeWrapperProps, traceKeys } from './index';\n\ntype NestedObjectWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: Record<string, ContentNode>;\n};\n\nexport const NestedObjectWrapper: FC<NestedObjectWrapperProps> = memo(\n (props) => {\n const { keyPath, section, focusedKeyPath = [], onFocusKeyPath } = props;\n\n const sectionKeys = useMemo(\n () =>\n Object.keys(section ?? {}).filter((key) => !traceKeys.includes(key)),\n [section]\n );\n\n return sectionKeys.map((key) => {\n const newKeyPathEl: KeyPath = { key, type: NodeTypes.OBJECT };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const isSelected = isSameKeyPath(newKeyPath, focusedKeyPath);\n\n return (\n <ItemLayout\n level={keyPath.length}\n key={key}\n title={camelCaseToSentence(key)}\n description=\"\"\n isSelected={isSelected}\n onClick={(e) => {\n e.stopPropagation();\n\n if (isSelected) {\n onFocusKeyPath([]);\n } else {\n onFocusKeyPath(newKeyPath);\n }\n }}\n >\n <NodeWrapper {...props} keyPath={newKeyPath} section={section[key]} />\n </ItemLayout>\n );\n });\n }\n);\n"],"mappings":";;;;;;;;;AAcA,MAAa,sBAAoD,MAC9D,UAAU;CACT,MAAM,EAAE,SAAS,SAAS,iBAAiB,CAAC,GAAG,mBAAmB;CAQlE,OANoB,cAEhB,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,UAAU,SAAS,GAAG,CAAC,GACrE,CAAC,OAAO,CAGO,CAAC,CAAC,KAAK,QAAQ;EAC9B,MAAM,eAAwB;GAAE;GAAK,MAAM,UAAU;EAAO;EAC5D,MAAM,aAAwB,CAAC,GAAG,SAAS,YAAY;EAEvD,MAAM,aAAa,cAAc,YAAY,cAAc;EAE3D,OACE,oBAAC,YAAD;GACE,OAAO,QAAQ;GAEf,OAAO,oBAAoB,GAAG;GAC9B,aAAY;GACA;GACZ,UAAU,MAAM;IACd,EAAE,gBAAgB;IAElB,IAAI,YACF,eAAe,CAAC,CAAC;SAEjB,eAAe,UAAU;GAE7B;aAEA,oBAAC,aAAD;IAAa,GAAI;IAAO,SAAS;IAAY,SAAS,QAAQ;GAAO;EAC3D,GAfL,GAeK;CAEhB,CAAC;AACH,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"NumberWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/NumberWrapper.tsx"],"sourcesContent":["import { EditableFieldInput } from '@components/EditableField';\nimport { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport { useEditorLocale } from '@intlayer/editor-react';\nimport { cn } from '@utils/cn';\nimport type { FC } from 'react';\nimport type { NodeWrapperProps } from './index';\n\nexport type NumberWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: number;\n};\n\nexport const NumberWrapper: FC<NumberWrapperProps> = ({\n keyPath,\n section,\n editedContent,\n onContentChange,\n onFocusKeyPath,\n}) => {\n const currentLocale = useEditorLocale();\n const editedContentValue = getContentNodeByKeyPath(\n editedContent,\n keyPath,\n currentLocale\n );\n\n if (\n editedContentValue !== undefined &&\n typeof editedContentValue !== 'number'\n ) {\n return (\n <>\n Error loading section - Edited content incoherence with the original\n content format\n </>\n );\n }\n\n const level = keyPath.length;\n const content = String(editedContentValue ?? section);\n\n return (\n <button\n type=\"button\"\n className={cn(\n 'w-full rounded-md p-2 text-left transition',\n 'hover:bg-card/30 [&:has(.section:hover)]:bg-transparent',\n level === 2 && 'hover:bg-card/30',\n level >= 3 && ''\n )}\n onClick={(e) => {\n e.stopPropagation();\n onFocusKeyPath(keyPath);\n }}\n >\n <EditableFieldInput\n aria-label=\"Editable number field\"\n type=\"number\"\n defaultValue={content}\n onSave={(newValue) => onContentChange({ keyPath, newValue })}\n onCancel={() => null}\n />\n </button>\n );\n};\n"],"mappings":";;;;;;;AAWA,MAAa,iBAAyC,EACpD,SACA,SACA,eACA,iBACA,qBACI;CAEJ,MAAM,qBAAqB,wBACzB,eACA,SAHoB,iBAIP,CACd;AAED,KACE,uBAAuB,UACvB,OAAO,uBAAuB,SAE9B,QACE,0CAAE,uFAGC;CAIP,MAAM,QAAQ,QAAQ;CACtB,MAAM,UAAU,OAAO,sBAAsB,QAAQ;AAErD,QACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAW,GACT,8CACA,2DACA,UAAU,KAAK,oBACf,SAAS,KAAK,GACf;EACD,UAAU,MAAM;AACd,KAAE,iBAAiB;AACnB,kBAAe,QAAQ;;YAGzB,oBAAC,oBAAD;GACE,cAAW;GACX,MAAK;GACL,cAAc;GACd,SAAS,aAAa,gBAAgB;IAAE;IAAS;IAAU,CAAC;GAC5D,gBAAgB;GAChB;EACK"}
1
+ {"version":3,"file":"NumberWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/NumberWrapper.tsx"],"sourcesContent":["import { EditableFieldInput } from '@components/EditableField';\nimport { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport { useEditorLocale } from '@intlayer/editor-react';\nimport { cn } from '@utils/cn';\nimport type { FC } from 'react';\nimport type { NodeWrapperProps } from './index';\n\nexport type NumberWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: number;\n};\n\nexport const NumberWrapper: FC<NumberWrapperProps> = ({\n keyPath,\n section,\n editedContent,\n onContentChange,\n onFocusKeyPath,\n}) => {\n const currentLocale = useEditorLocale();\n const editedContentValue = getContentNodeByKeyPath(\n editedContent,\n keyPath,\n currentLocale\n );\n\n if (\n editedContentValue !== undefined &&\n typeof editedContentValue !== 'number'\n ) {\n return (\n <>\n Error loading section - Edited content incoherence with the original\n content format\n </>\n );\n }\n\n const level = keyPath.length;\n const content = String(editedContentValue ?? section);\n\n return (\n <button\n type=\"button\"\n className={cn(\n 'w-full rounded-md p-2 text-left transition',\n 'hover:bg-card/30 [&:has(.section:hover)]:bg-transparent',\n level === 2 && 'hover:bg-card/30',\n level >= 3 && ''\n )}\n onClick={(e) => {\n e.stopPropagation();\n onFocusKeyPath(keyPath);\n }}\n >\n <EditableFieldInput\n aria-label=\"Editable number field\"\n type=\"number\"\n defaultValue={content}\n onSave={(newValue) => onContentChange({ keyPath, newValue })}\n onCancel={() => null}\n />\n </button>\n );\n};\n"],"mappings":";;;;;;;AAWA,MAAa,iBAAyC,EACpD,SACA,SACA,eACA,iBACA,qBACI;CAEJ,MAAM,qBAAqB,wBACzB,eACA,SAHoB,gBAIR,CACd;CAEA,IACE,uBAAuB,UACvB,OAAO,uBAAuB,UAE9B,OACE,0CAAE,sFAGA;CAIN,MAAM,QAAQ,QAAQ;CACtB,MAAM,UAAU,OAAO,sBAAsB,OAAO;CAEpD,OACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAW,GACT,8CACA,2DACA,UAAU,KAAK,oBACf,SAAS,KAAK,EAChB;EACA,UAAU,MAAM;GACd,EAAE,gBAAgB;GAClB,eAAe,OAAO;EACxB;YAEA,oBAAC,oBAAD;GACE,cAAW;GACX,MAAK;GACL,cAAc;GACd,SAAS,aAAa,gBAAgB;IAAE;IAAS;GAAS,CAAC;GAC3D,gBAAgB;EACjB;CACK;AAEZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"PluralWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/PluralWrapper.tsx"],"sourcesContent":["import type { PluralContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps, traceKeys } from './index';\n\ntype PluralWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: PluralContent<ContentNode>;\n};\n\nexport const PluralWrapper: FC<PluralWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n {Object.keys(section)\n .filter((key) => !traceKeys.includes(key))\n .map((key) => {\n const newKeyPathEl: KeyPath = {\n type: NodeTypes.PLURAL,\n key,\n };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section[NodeTypes.PLURAL][\n key as keyof (typeof section)[typeof NodeTypes.PLURAL]\n ]!;\n\n return (\n <>\n <span className=\"flex items-center font-bold\">{key}</span>\n <NodeWrapper\n {...props}\n key={key}\n keyPath={newKeyPath}\n section={subSection}\n />\n </>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;;AAWA,MAAa,iBAAyC,UAAU;CAC9D,MAAM,EAAE,SAAS,YAAY;AAE7B,QACE,oBAAC,OAAD;EAAK,WAAU;YACZ,OAAO,KAAK,QAAQ,CAClB,QAAQ,QAAQ,CAAC,UAAU,SAAS,IAAI,CAAC,CACzC,KAAK,QAAQ;GACZ,MAAM,eAAwB;IAC5B,MAAM,UAAU;IAChB;IACD;GACD,MAAM,aAAwB,CAAC,GAAG,SAAS,aAAa;GAExD,MAAM,aACJ,QAAQ,UAAU,QAChB;AAGJ,UACE,8CACE,oBAAC,QAAD;IAAM,WAAU;cAA+B;IAAW,GAC1D,8BAAC,aAAD;IACE,GAAI;IACC;IACL,SAAS;IACT,SAAS;IACT,EACD;IAEL;EACA"}
1
+ {"version":3,"file":"PluralWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/PluralWrapper.tsx"],"sourcesContent":["import type { PluralContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps, traceKeys } from './index';\n\ntype PluralWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: PluralContent<ContentNode>;\n};\n\nexport const PluralWrapper: FC<PluralWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n {Object.keys(section)\n .filter((key) => !traceKeys.includes(key))\n .map((key) => {\n const newKeyPathEl: KeyPath = {\n type: NodeTypes.PLURAL,\n key,\n };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section[NodeTypes.PLURAL][\n key as keyof (typeof section)[typeof NodeTypes.PLURAL]\n ]!;\n\n return (\n <>\n <span className=\"flex items-center font-bold\">{key}</span>\n <NodeWrapper\n {...props}\n key={key}\n keyPath={newKeyPath}\n section={subSection}\n />\n </>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;;AAWA,MAAa,iBAAyC,UAAU;CAC9D,MAAM,EAAE,SAAS,YAAY;CAE7B,OACE,oBAAC,OAAD;EAAK,WAAU;YACZ,OAAO,KAAK,OAAO,CAAC,CAClB,QAAQ,QAAQ,CAAC,UAAU,SAAS,GAAG,CAAC,CAAC,CACzC,KAAK,QAAQ;GACZ,MAAM,eAAwB;IAC5B,MAAM,UAAU;IAChB;GACF;GACA,MAAM,aAAwB,CAAC,GAAG,SAAS,YAAY;GAEvD,MAAM,aACJ,QAAQ,UAAU,OAAO,CACvB;GAGJ,OACE,8CACE,oBAAC,QAAD;IAAM,WAAU;cAA+B;GAAU,IACzD,8BAAC,aAAD;IACE,GAAI;IACC;IACL,SAAS;IACT,SAAS;GACV,EACD;EAEN,CAAC;CACA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"StringWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/StringWrapper.tsx"],"sourcesContent":["import { EditableFieldTextArea } from '@components/EditableField';\nimport { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport { useEditorLocale } from '@intlayer/editor-react';\nimport { cn } from '@utils/cn';\nimport type { FC } from 'react';\nimport type { NodeWrapperProps } from './index';\n\nexport type StringWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: string;\n editedContentValue?: string;\n};\n\nexport const StringWrapper: FC<StringWrapperProps> = ({\n keyPath,\n section,\n editedContent,\n editedContentValue: editedContentValueProp,\n onContentChange,\n onFocusKeyPath,\n renderSection,\n}) => {\n const currentLocale = useEditorLocale();\n const editedContentValue =\n editedContentValueProp ??\n getContentNodeByKeyPath(editedContent, keyPath, currentLocale);\n\n if (editedContentValue && typeof editedContentValue !== 'string') {\n return (\n <>\n Error loading section - Edited content Incoherence with the original\n content format\n </>\n );\n }\n\n const level = keyPath.length;\n\n const content = String(editedContentValue ?? section);\n\n return (\n <button\n type=\"button\"\n className={cn(\n 'w-full rounded-md p-2 text-left transition',\n 'hover:bg-card/30 [&:has(.section:hover)]:bg-transparent',\n level === 2 && 'hover:bg-card/30',\n level >= 3 && ''\n )}\n onClick={(e) => {\n e.stopPropagation();\n onFocusKeyPath(keyPath);\n }}\n >\n {typeof renderSection === 'function' ? (\n renderSection(content)\n ) : (\n <EditableFieldTextArea\n aria-label=\"Editable field\"\n defaultValue={content}\n onSave={(newValue) => onContentChange({ keyPath, newValue })}\n onCancel={() => null}\n />\n )}\n </button>\n );\n};\n"],"mappings":";;;;;;;AAYA,MAAa,iBAAyC,EACpD,SACA,SACA,eACA,oBAAoB,wBACpB,iBACA,gBACA,oBACI;CACJ,MAAM,gBAAgB,iBAAiB;CACvC,MAAM,qBACJ,0BACA,wBAAwB,eAAe,SAAS,cAAc;AAEhE,KAAI,sBAAsB,OAAO,uBAAuB,SACtD,QACE,0CAAE,uFAGC;CAIP,MAAM,QAAQ,QAAQ;CAEtB,MAAM,UAAU,OAAO,sBAAsB,QAAQ;AAErD,QACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAW,GACT,8CACA,2DACA,UAAU,KAAK,oBACf,SAAS,KAAK,GACf;EACD,UAAU,MAAM;AACd,KAAE,iBAAiB;AACnB,kBAAe,QAAQ;;YAGxB,OAAO,kBAAkB,aACxB,cAAc,QAAQ,GAEtB,oBAAC,uBAAD;GACE,cAAW;GACX,cAAc;GACd,SAAS,aAAa,gBAAgB;IAAE;IAAS;IAAU,CAAC;GAC5D,gBAAgB;GAChB;EAEG"}
1
+ {"version":3,"file":"StringWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/StringWrapper.tsx"],"sourcesContent":["import { EditableFieldTextArea } from '@components/EditableField';\nimport { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport { useEditorLocale } from '@intlayer/editor-react';\nimport { cn } from '@utils/cn';\nimport type { FC } from 'react';\nimport type { NodeWrapperProps } from './index';\n\nexport type StringWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: string;\n editedContentValue?: string;\n};\n\nexport const StringWrapper: FC<StringWrapperProps> = ({\n keyPath,\n section,\n editedContent,\n editedContentValue: editedContentValueProp,\n onContentChange,\n onFocusKeyPath,\n renderSection,\n}) => {\n const currentLocale = useEditorLocale();\n const editedContentValue =\n editedContentValueProp ??\n getContentNodeByKeyPath(editedContent, keyPath, currentLocale);\n\n if (editedContentValue && typeof editedContentValue !== 'string') {\n return (\n <>\n Error loading section - Edited content Incoherence with the original\n content format\n </>\n );\n }\n\n const level = keyPath.length;\n\n const content = String(editedContentValue ?? section);\n\n return (\n <button\n type=\"button\"\n className={cn(\n 'w-full rounded-md p-2 text-left transition',\n 'hover:bg-card/30 [&:has(.section:hover)]:bg-transparent',\n level === 2 && 'hover:bg-card/30',\n level >= 3 && ''\n )}\n onClick={(e) => {\n e.stopPropagation();\n onFocusKeyPath(keyPath);\n }}\n >\n {typeof renderSection === 'function' ? (\n renderSection(content)\n ) : (\n <EditableFieldTextArea\n aria-label=\"Editable field\"\n defaultValue={content}\n onSave={(newValue) => onContentChange({ keyPath, newValue })}\n onCancel={() => null}\n />\n )}\n </button>\n );\n};\n"],"mappings":";;;;;;;AAYA,MAAa,iBAAyC,EACpD,SACA,SACA,eACA,oBAAoB,wBACpB,iBACA,gBACA,oBACI;CACJ,MAAM,gBAAgB,gBAAgB;CACtC,MAAM,qBACJ,0BACA,wBAAwB,eAAe,SAAS,aAAa;CAE/D,IAAI,sBAAsB,OAAO,uBAAuB,UACtD,OACE,0CAAE,sFAGA;CAIN,MAAM,QAAQ,QAAQ;CAEtB,MAAM,UAAU,OAAO,sBAAsB,OAAO;CAEpD,OACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAW,GACT,8CACA,2DACA,UAAU,KAAK,oBACf,SAAS,KAAK,EAChB;EACA,UAAU,MAAM;GACd,EAAE,gBAAgB;GAClB,eAAe,OAAO;EACxB;YAEC,OAAO,kBAAkB,aACxB,cAAc,OAAO,IAErB,oBAAC,uBAAD;GACE,cAAW;GACX,cAAc;GACd,SAAS,aAAa,gBAAgB;IAAE;IAAS;GAAS,CAAC;GAC3D,gBAAgB;EACjB;CAEG;AAEZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/TranslationWrapper.tsx"],"sourcesContent":["import type { TranslationContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype TranslationWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: TranslationContent<ContentNode>;\n};\n\nexport const TranslationWrapper: FC<TranslationWrapperProps> = (props) => {\n const { keyPath, section, locale } = props;\n\n const newKeyPathEl: KeyPath = {\n type: NodeTypes.TRANSLATION,\n key: locale,\n };\n\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section[NodeTypes.TRANSLATION][\n locale as unknown as keyof (typeof section)[typeof NodeTypes.TRANSLATION]\n ]!;\n\n return <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />;\n};\n"],"mappings":";;;;;AAWA,MAAa,sBAAmD,UAAU;CACxE,MAAM,EAAE,SAAS,SAAS,WAAW;CAErC,MAAM,eAAwB;EAC5B,MAAM,UAAU;EAChB,KAAK;EACN;CAED,MAAM,aAAwB,CAAC,GAAG,SAAS,aAAa;CAExD,MAAM,aACJ,QAAQ,UAAU,aAChB;AAGJ,QAAO,oBAAC,aAAD;EAAa,GAAI;EAAO,SAAS;EAAY,SAAS;EAAc"}
1
+ {"version":3,"file":"TranslationWrapper.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/TranslationWrapper.tsx"],"sourcesContent":["import type { TranslationContent } from '@intlayer/core/transpiler';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype TranslationWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: TranslationContent<ContentNode>;\n};\n\nexport const TranslationWrapper: FC<TranslationWrapperProps> = (props) => {\n const { keyPath, section, locale } = props;\n\n const newKeyPathEl: KeyPath = {\n type: NodeTypes.TRANSLATION,\n key: locale,\n };\n\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section[NodeTypes.TRANSLATION][\n locale as unknown as keyof (typeof section)[typeof NodeTypes.TRANSLATION]\n ]!;\n\n return <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />;\n};\n"],"mappings":";;;;;AAWA,MAAa,sBAAmD,UAAU;CACxE,MAAM,EAAE,SAAS,SAAS,WAAW;CAErC,MAAM,eAAwB;EAC5B,MAAM,UAAU;EAChB,KAAK;CACP;CAEA,MAAM,aAAwB,CAAC,GAAG,SAAS,YAAY;CAEvD,MAAM,aACJ,QAAQ,UAAU,YAAY,CAC5B;CAGJ,OAAO,oBAAC,aAAD;EAAa,GAAI;EAAO,SAAS;EAAY,SAAS;CAAa;AAC5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n getContentNodeByKeyPath,\n getNodeType,\n} from '@intlayer/core/dictionaryManipulator';\nimport type {\n ConditionContent,\n EnumerationContent,\n FileContent,\n HTMLContent,\n InsertionContent,\n MarkdownContent,\n PluralContent,\n TranslationContent,\n} from '@intlayer/core/transpiler';\nimport { useEditorLocale } from '@intlayer/editor-react';\nimport type { Locale } from '@intlayer/types/allLocales';\nimport type { ContentNode, Dictionary } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport { type FC, memo, type ReactNode, useMemo } from 'react';\nimport { ArrayWrapper } from './ArrayWrapper';\nimport { BooleanWrapper } from './BooleanWrapper';\nimport { ConditionWrapper } from './ConditionWrapper';\nimport { EnumerationWrapper } from './EnumerationWrapper';\nimport { FileWrapper } from './FileWrapper';\nimport { HtmlWrapper } from './HtmlWrapper';\nimport { InsertionWrapper } from './InsertionWrapper';\nimport { MarkdownWrapper } from './MarkdownWrapper';\nimport { NestedObjectWrapper } from './NestedObjectWrapper';\nimport { NumberWrapper } from './NumberWrapper';\nimport { PluralWrapper } from './PluralWrapper';\nimport { StringWrapper } from './StringWrapper';\nimport { TranslationWrapper } from './TranslationWrapper';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\nexport type NodeWrapperProps = {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n section: ContentNode;\n onContentChange: (content: { keyPath: KeyPath[]; newValue: string }) => void;\n locale: Locale;\n editedContent: ContentNode;\n focusedKeyPath: KeyPath[] | undefined;\n onFocusKeyPath: (keyPath: KeyPath[]) => void;\n onClickEdit?: (keyPath: KeyPath[]) => void;\n renderSection?: (content: string) => ReactNode;\n};\n\nexport const NodeWrapper: FC<NodeWrapperProps> = memo((props) => {\n const currentLocale = useEditorLocale();\n const section = useMemo(() => {\n const editedContentValue = getContentNodeByKeyPath(\n props.editedContent,\n props.keyPath,\n currentLocale\n );\n return editedContentValue ?? props.section;\n }, [props.editedContent, props.keyPath, props.section]);\n\n const nodeType = useMemo(() => getNodeType(section), [section]);\n\n if (typeof section === 'object') {\n if (nodeType === NodeTypes.REACT_NODE) {\n return (\n <span className=\"text-neutral text-xs\">React node not editable</span>\n );\n }\n\n if (nodeType === NodeTypes.NESTED) {\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n [Nested] Dictionary\n </div>\n );\n }\n\n if (nodeType === NodeTypes.MARKDOWN) {\n return (\n <MarkdownWrapper\n {...props}\n section={section as MarkdownContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.HTML) {\n return (\n <HtmlWrapper {...props} section={section as HTMLContent<ContentNode>} />\n );\n }\n\n if (nodeType === NodeTypes.TRANSLATION) {\n return (\n <TranslationWrapper\n {...props}\n section={section as TranslationContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.ENUMERATION) {\n return (\n <EnumerationWrapper\n {...props}\n section={section as EnumerationContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.PLURAL) {\n return (\n <PluralWrapper\n {...props}\n section={section as PluralContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.CONDITION) {\n return (\n <ConditionWrapper\n {...props}\n section={section as ConditionContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.INSERTION) {\n return (\n <InsertionWrapper\n {...props}\n section={section as InsertionContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.ARRAY) {\n return (\n <ArrayWrapper\n {...props}\n section={section as unknown as ContentNode[]}\n />\n );\n }\n\n if (nodeType === NodeTypes.FILE) {\n return <FileWrapper {...props} section={section as FileContent} />;\n }\n\n return (\n <NestedObjectWrapper\n {...props}\n section={section as unknown as Record<string, ContentNode>}\n />\n );\n }\n\n if (typeof section === 'string') {\n return <StringWrapper {...props} section={section} />;\n }\n\n if (typeof section === 'number') {\n return <NumberWrapper {...props} section={section} />;\n }\n\n if (typeof section === 'boolean') {\n return <BooleanWrapper {...props} section={section} />;\n }\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAa,YAAsB;CAAC;CAAY;CAAM;CAAW;AAejE,MAAa,cAAoC,MAAM,UAAU;CAC/D,MAAM,gBAAgB,iBAAiB;CACvC,MAAM,UAAU,cAAc;AAM5B,SAL2B,wBACzB,MAAM,eACN,MAAM,SACN,cAEuB,IAAI,MAAM;IAClC;EAAC,MAAM;EAAe,MAAM;EAAS,MAAM;EAAQ,CAAC;CAEvD,MAAM,WAAW,cAAc,YAAY,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAE/D,KAAI,OAAO,YAAY,UAAU;AAC/B,MAAI,aAAa,UAAU,WACzB,QACE,oBAAC,QAAD;GAAM,WAAU;aAAuB;GAA8B;AAIzE,MAAI,aAAa,UAAU,OACzB,QACE,oBAAC,OAAD;GAAK,WAAU;aAAuC;GAEhD;AAIV,MAAI,aAAa,UAAU,SACzB,QACE,oBAAC,iBAAD;GACE,GAAI;GACK;GACT;AAIN,MAAI,aAAa,UAAU,KACzB,QACE,oBAAC,aAAD;GAAa,GAAI;GAAgB;GAAuC;AAI5E,MAAI,aAAa,UAAU,YACzB,QACE,oBAAC,oBAAD;GACE,GAAI;GACK;GACT;AAIN,MAAI,aAAa,UAAU,YACzB,QACE,oBAAC,oBAAD;GACE,GAAI;GACK;GACT;AAIN,MAAI,aAAa,UAAU,OACzB,QACE,oBAAC,eAAD;GACE,GAAI;GACK;GACT;AAIN,MAAI,aAAa,UAAU,UACzB,QACE,oBAAC,kBAAD;GACE,GAAI;GACK;GACT;AAIN,MAAI,aAAa,UAAU,UACzB,QACE,oBAAC,kBAAD;GACE,GAAI;GACK;GACT;AAIN,MAAI,aAAa,UAAU,MACzB,QACE,oBAAC,cAAD;GACE,GAAI;GACK;GACT;AAIN,MAAI,aAAa,UAAU,KACzB,QAAO,oBAAC,aAAD;GAAa,GAAI;GAAgB;GAA0B;AAGpE,SACE,oBAAC,qBAAD;GACE,GAAI;GACK;GACT;;AAIN,KAAI,OAAO,YAAY,SACrB,QAAO,oBAAC,eAAD;EAAe,GAAI;EAAgB;EAAW;AAGvD,KAAI,OAAO,YAAY,SACrB,QAAO,oBAAC,eAAD;EAAe,GAAI;EAAgB;EAAW;AAGvD,KAAI,OAAO,YAAY,UACrB,QAAO,oBAAC,gBAAD;EAAgB,GAAI;EAAgB;EAAW;EAExD"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../src/components/DictionaryEditor/NodeWrapper/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n getContentNodeByKeyPath,\n getNodeType,\n} from '@intlayer/core/dictionaryManipulator';\nimport type {\n ConditionContent,\n EnumerationContent,\n FileContent,\n HTMLContent,\n InsertionContent,\n MarkdownContent,\n PluralContent,\n TranslationContent,\n} from '@intlayer/core/transpiler';\nimport { useEditorLocale } from '@intlayer/editor-react';\nimport type { Locale } from '@intlayer/types/allLocales';\nimport type { ContentNode, Dictionary } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport { type FC, memo, type ReactNode, useMemo } from 'react';\nimport { ArrayWrapper } from './ArrayWrapper';\nimport { BooleanWrapper } from './BooleanWrapper';\nimport { ConditionWrapper } from './ConditionWrapper';\nimport { EnumerationWrapper } from './EnumerationWrapper';\nimport { FileWrapper } from './FileWrapper';\nimport { HtmlWrapper } from './HtmlWrapper';\nimport { InsertionWrapper } from './InsertionWrapper';\nimport { MarkdownWrapper } from './MarkdownWrapper';\nimport { NestedObjectWrapper } from './NestedObjectWrapper';\nimport { NumberWrapper } from './NumberWrapper';\nimport { PluralWrapper } from './PluralWrapper';\nimport { StringWrapper } from './StringWrapper';\nimport { TranslationWrapper } from './TranslationWrapper';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\nexport type NodeWrapperProps = {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n section: ContentNode;\n onContentChange: (content: { keyPath: KeyPath[]; newValue: string }) => void;\n locale: Locale;\n editedContent: ContentNode;\n focusedKeyPath: KeyPath[] | undefined;\n onFocusKeyPath: (keyPath: KeyPath[]) => void;\n onClickEdit?: (keyPath: KeyPath[]) => void;\n renderSection?: (content: string) => ReactNode;\n};\n\nexport const NodeWrapper: FC<NodeWrapperProps> = memo((props) => {\n const currentLocale = useEditorLocale();\n const section = useMemo(() => {\n const editedContentValue = getContentNodeByKeyPath(\n props.editedContent,\n props.keyPath,\n currentLocale\n );\n return editedContentValue ?? props.section;\n }, [props.editedContent, props.keyPath, props.section]);\n\n const nodeType = useMemo(() => getNodeType(section), [section]);\n\n if (typeof section === 'object') {\n if (nodeType === NodeTypes.REACT_NODE) {\n return (\n <span className=\"text-neutral text-xs\">React node not editable</span>\n );\n }\n\n if (nodeType === NodeTypes.NESTED) {\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n [Nested] Dictionary\n </div>\n );\n }\n\n if (nodeType === NodeTypes.MARKDOWN) {\n return (\n <MarkdownWrapper\n {...props}\n section={section as MarkdownContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.HTML) {\n return (\n <HtmlWrapper {...props} section={section as HTMLContent<ContentNode>} />\n );\n }\n\n if (nodeType === NodeTypes.TRANSLATION) {\n return (\n <TranslationWrapper\n {...props}\n section={section as TranslationContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.ENUMERATION) {\n return (\n <EnumerationWrapper\n {...props}\n section={section as EnumerationContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.PLURAL) {\n return (\n <PluralWrapper\n {...props}\n section={section as PluralContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.CONDITION) {\n return (\n <ConditionWrapper\n {...props}\n section={section as ConditionContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.INSERTION) {\n return (\n <InsertionWrapper\n {...props}\n section={section as InsertionContent<ContentNode>}\n />\n );\n }\n\n if (nodeType === NodeTypes.ARRAY) {\n return (\n <ArrayWrapper\n {...props}\n section={section as unknown as ContentNode[]}\n />\n );\n }\n\n if (nodeType === NodeTypes.FILE) {\n return <FileWrapper {...props} section={section as FileContent} />;\n }\n\n return (\n <NestedObjectWrapper\n {...props}\n section={section as unknown as Record<string, ContentNode>}\n />\n );\n }\n\n if (typeof section === 'string') {\n return <StringWrapper {...props} section={section} />;\n }\n\n if (typeof section === 'number') {\n return <NumberWrapper {...props} section={section} />;\n }\n\n if (typeof section === 'boolean') {\n return <BooleanWrapper {...props} section={section} />;\n }\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAa,YAAsB;CAAC;CAAY;CAAM;AAAU;AAehE,MAAa,cAAoC,MAAM,UAAU;CAC/D,MAAM,gBAAgB,gBAAgB;CACtC,MAAM,UAAU,cAAc;EAM5B,OAL2B,wBACzB,MAAM,eACN,MAAM,SACN,aAEsB,KAAK,MAAM;CACrC,GAAG;EAAC,MAAM;EAAe,MAAM;EAAS,MAAM;CAAO,CAAC;CAEtD,MAAM,WAAW,cAAc,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC;CAE9D,IAAI,OAAO,YAAY,UAAU;EAC/B,IAAI,aAAa,UAAU,YACzB,OACE,oBAAC,QAAD;GAAM,WAAU;aAAuB;EAA6B;EAIxE,IAAI,aAAa,UAAU,QACzB,OACE,oBAAC,OAAD;GAAK,WAAU;aAAuC;EAEjD;EAIT,IAAI,aAAa,UAAU,UACzB,OACE,oBAAC,iBAAD;GACE,GAAI;GACK;EACV;EAIL,IAAI,aAAa,UAAU,MACzB,OACE,oBAAC,aAAD;GAAa,GAAI;GAAgB;EAAsC;EAI3E,IAAI,aAAa,UAAU,aACzB,OACE,oBAAC,oBAAD;GACE,GAAI;GACK;EACV;EAIL,IAAI,aAAa,UAAU,aACzB,OACE,oBAAC,oBAAD;GACE,GAAI;GACK;EACV;EAIL,IAAI,aAAa,UAAU,QACzB,OACE,oBAAC,eAAD;GACE,GAAI;GACK;EACV;EAIL,IAAI,aAAa,UAAU,WACzB,OACE,oBAAC,kBAAD;GACE,GAAI;GACK;EACV;EAIL,IAAI,aAAa,UAAU,WACzB,OACE,oBAAC,kBAAD;GACE,GAAI;GACK;EACV;EAIL,IAAI,aAAa,UAAU,OACzB,OACE,oBAAC,cAAD;GACE,GAAI;GACK;EACV;EAIL,IAAI,aAAa,UAAU,MACzB,OAAO,oBAAC,aAAD;GAAa,GAAI;GAAgB;EAAyB;EAGnE,OACE,oBAAC,qBAAD;GACE,GAAI;GACK;EACV;CAEL;CAEA,IAAI,OAAO,YAAY,UACrB,OAAO,oBAAC,eAAD;EAAe,GAAI;EAAgB;CAAU;CAGtD,IAAI,OAAO,YAAY,UACrB,OAAO,oBAAC,eAAD;EAAe,GAAI;EAAgB;CAAU;CAGtD,IAAI,OAAO,YAAY,WACrB,OAAO,oBAAC,gBAAD;EAAgB,GAAI;EAAgB;CAAU;AAEzD,CAAC"}
@@ -26,7 +26,7 @@ const ContentEditor = ({ dictionary, isDarkMode }) => {
26
26
  const [activeDictionary, setActiveDictionary] = useState(dictionary);
27
27
  useEffect(() => {
28
28
  setActiveDictionary(dictionary);
29
- }, [dictionary.localId]);
29
+ }, [dictionary]);
30
30
  const hasQualifier = dictionary.item !== void 0 || dictionary.variant !== void 0;
31
31
  const { data: siblingsData } = useGetDictionaries({ keys: [dictionary.key] }, { enabled: hasQualifier && !!dictionary.key });
32
32
  const allSiblings = useMemo(() => siblingsData?.data ?? [], [siblingsData]);
@@ -1 +1 @@
1
- {"version":3,"file":"ContentEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/ContentEditor.tsx"],"sourcesContent":["'use client';\n\nimport { useGetDictionaries } from '@api/index';\nimport { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport {\n useEditedContent,\n useEditorLocale,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport type { Dictionary, LocalDictionaryId } from '@intlayer/types/dictionary';\nimport {\n type FC,\n useCallback,\n useDeferredValue,\n useEffect,\n useMemo,\n useState,\n useTransition,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Container } from '../Container';\nimport { LocaleSwitcherContent } from '../LocaleSwitcherContentDropDown';\nimport { Pagination } from '../Pagination';\nimport { TextEditorContainer } from './ContentEditorView/TextEditor';\nimport { getIsEditableSection } from './getIsEditableSection';\nimport { KeyPathBreadcrumb } from './KeyPathBreadcrumb';\nimport { NavigationViewNode } from './NavigationView/NavigationViewNode';\n\ntype NodeEditorProps = {\n dictionary: Dictionary;\n isDarkMode?: boolean;\n};\n\n/** Render a variant (named string or structured object) for display. */\nconst formatVariant = (\n variant: string | Record<string, string | number> | undefined\n): string =>\n variant !== null && typeof variant === 'object'\n ? JSON.stringify(variant)\n : (variant ?? '');\n\nexport const ContentEditor: FC<NodeEditorProps> = ({\n dictionary,\n isDarkMode,\n}) => {\n const { itemPagination, variantSwitcher } = useIntlayer('content-editor');\n const { editedContent } = useEditedContent();\n const {\n focusedContent,\n setFocusedContentKeyPath: _setFocusedContentKeyPath,\n } = useFocusUnmergedDictionary();\n const [, startTransition] = useTransition();\n const setFocusedContentKeyPath: typeof _setFocusedContentKeyPath = (\n keyPath\n ) => startTransition(() => _setFocusedContentKeyPath(keyPath));\n\n const [activeDictionary, setActiveDictionary] =\n useState<Dictionary>(dictionary);\n\n useEffect(() => {\n setActiveDictionary(dictionary);\n }, [dictionary.localId]);\n\n const hasQualifier =\n dictionary.item !== undefined || dictionary.variant !== undefined;\n\n const { data: siblingsData } = useGetDictionaries(\n { keys: [dictionary.key] },\n { enabled: hasQualifier && !!dictionary.key }\n );\n\n const allSiblings = useMemo<Dictionary[]>(\n () => (siblingsData?.data ?? []) as unknown as Dictionary[],\n [siblingsData]\n );\n\n const itemDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.item === undefined) return [];\n return allSiblings\n .filter((d) => d.item !== undefined)\n .sort((a, b) => (a.item ?? 0) - (b.item ?? 0));\n }, [dictionary, allSiblings]);\n\n const variantDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.variant === undefined) return [];\n return allSiblings.filter((d) => d.variant !== undefined);\n }, [dictionary, allSiblings]);\n\n const switchSibling = useCallback(\n (sibling: Dictionary) => {\n setActiveDictionary(sibling);\n setFocusedContentKeyPath([]);\n },\n [setFocusedContentKeyPath]\n );\n\n const { content, key, localId } = activeDictionary;\n const focusedKeyPath = focusedContent?.keyPath;\n const section =\n typeof editedContent?.[localId as LocalDictionaryId]?.content ===\n 'undefined'\n ? content\n : editedContent?.[localId as LocalDictionaryId]?.content;\n\n const currentLocale = useEditorLocale();\n const focusedSection = getContentNodeByKeyPath(\n section,\n focusedKeyPath ?? [],\n currentLocale\n );\n\n const deferredKeyPath = useDeferredValue(focusedKeyPath);\n const deferredSection = useDeferredValue(focusedSection);\n const isStale = deferredSection !== focusedSection;\n\n const isEditableBaseSection = getIsEditableSection(section);\n const isEditableFocusedSection = getIsEditableSection(deferredSection);\n\n useEffect(() => {\n if (typeof focusedSection === 'undefined') {\n setFocusedContentKeyPath(focusedContent?.keyPath?.slice(0, -1) ?? []);\n }\n }, []);\n\n const currentItemIndex = itemDicts.findIndex(\n (dictionary) => dictionary.localId === activeDictionary.localId\n );\n const currentVariant = activeDictionary.variant;\n\n return (\n <div>\n {/* Qualifier navigation controls */}\n {hasQualifier && (\n <div className=\"mb-4 flex flex-wrap items-center gap-4\">\n {itemDicts.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {itemPagination.label}\n </span>\n <Pagination\n currentPage={currentItemIndex >= 0 ? currentItemIndex + 1 : 1}\n totalPages={itemDicts.length}\n onPageChange={(page) => {\n const target = itemDicts[page - 1];\n if (target) switchSibling(target);\n }}\n size=\"sm\"\n />\n </div>\n )}\n\n {variantDicts.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {variantSwitcher.label}:\n </span>\n {variantDicts.map((sibling) => {\n const isActive = sibling.localId === activeDictionary.localId;\n return (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => !isActive && switchSibling(sibling)}\n className={`rounded-lg px-3 py-1 text-xs transition-colors ${\n isActive\n ? 'bg-text font-semibold text-text-opposite'\n : 'cursor-pointer border border-border hover:bg-text/10'\n }`}\n >\n {formatVariant(sibling.variant)}\n </button>\n );\n })}\n {currentVariant !== undefined &&\n !variantDicts.some((d) => d.localId === dictionary.localId) && (\n <span className=\"rounded-lg bg-text px-3 py-1 font-semibold text-text-opposite text-xs\">\n {formatVariant(currentVariant)}\n </span>\n )}\n </div>\n )}\n </div>\n )}\n\n <div className=\"mb-6 flex items-center justify-between gap-2\">\n <KeyPathBreadcrumb\n dictionaryKey={key}\n keyPath={focusedKeyPath ?? []}\n onClickKeyPath={setFocusedContentKeyPath}\n />\n <div className=\"flex items-center gap-2\">\n <LocaleSwitcherContent />\n </div>\n </div>\n <div className=\"flex flex-1 gap-2 overflow-visible max-md:flex-col\">\n {typeof section === 'object' &&\n section &&\n !isEditableBaseSection &&\n Object.keys(section).length > 0 && (\n <Container\n border\n background=\"none\"\n className=\"top-10 flex h-full flex-col items-start gap-0.5 overflow-auto p-2 md:sticky md:max-w-[50%]\"\n roundedSize=\"2xl\"\n transparency=\"xs\"\n >\n <NavigationViewNode\n keyPath={[]}\n section={section}\n dictionary={activeDictionary}\n />\n </Container>\n )}\n {(isEditableFocusedSection || (deferredKeyPath ?? []).length > 0) && (\n <div\n className={\n isStale\n ? 'pointer-events-none flex-1 opacity-50 transition-opacity'\n : 'flex-1 transition-opacity'\n }\n >\n <TextEditorContainer\n keyPath={deferredKeyPath ?? []}\n section={deferredSection}\n dictionary={activeDictionary}\n isDarkMode={isDarkMode}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ContentEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/ContentEditor.tsx"],"sourcesContent":["'use client';\n\nimport { useGetDictionaries } from '@api/index';\nimport { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport {\n useEditedContent,\n useEditorLocale,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport type { Dictionary, LocalDictionaryId } from '@intlayer/types/dictionary';\nimport {\n type FC,\n useCallback,\n useDeferredValue,\n useEffect,\n useMemo,\n useState,\n useTransition,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Container } from '../Container';\nimport { LocaleSwitcherContent } from '../LocaleSwitcherContentDropDown';\nimport { Pagination } from '../Pagination';\nimport { TextEditorContainer } from './ContentEditorView/TextEditor';\nimport { getIsEditableSection } from './getIsEditableSection';\nimport { KeyPathBreadcrumb } from './KeyPathBreadcrumb';\nimport { NavigationViewNode } from './NavigationView/NavigationViewNode';\n\ntype NodeEditorProps = {\n dictionary: Dictionary;\n isDarkMode?: boolean;\n};\n\n/** Render a variant (named string or structured object) for display. */\nconst formatVariant = (\n variant: string | Record<string, string | number> | undefined\n): string =>\n variant !== null && typeof variant === 'object'\n ? JSON.stringify(variant)\n : (variant ?? '');\n\nexport const ContentEditor: FC<NodeEditorProps> = ({\n dictionary,\n isDarkMode,\n}) => {\n const { itemPagination, variantSwitcher } = useIntlayer('content-editor');\n const { editedContent } = useEditedContent();\n const {\n focusedContent,\n setFocusedContentKeyPath: _setFocusedContentKeyPath,\n } = useFocusUnmergedDictionary();\n const [, startTransition] = useTransition();\n const setFocusedContentKeyPath: typeof _setFocusedContentKeyPath = (\n keyPath\n ) => startTransition(() => _setFocusedContentKeyPath(keyPath));\n\n const [activeDictionary, setActiveDictionary] =\n useState<Dictionary>(dictionary);\n\n // Re-sync the locally tracked dictionary whenever the incoming prop changes\n // identity — not only when its `localId` changes. After a save, the query\n // refetches and hands back the same `localId` with fresh content; keying the\n // effect on `localId` alone left `activeDictionary` (the render source) stale\n // until a full page reload. The prop reference is stable across unrelated\n // re-renders (query data / store entry), so sibling switches made via\n // `switchSibling` are preserved.\n useEffect(() => {\n setActiveDictionary(dictionary);\n }, [dictionary]);\n\n const hasQualifier =\n dictionary.item !== undefined || dictionary.variant !== undefined;\n\n const { data: siblingsData } = useGetDictionaries(\n { keys: [dictionary.key] },\n { enabled: hasQualifier && !!dictionary.key }\n );\n\n const allSiblings = useMemo<Dictionary[]>(\n () => (siblingsData?.data ?? []) as unknown as Dictionary[],\n [siblingsData]\n );\n\n const itemDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.item === undefined) return [];\n return allSiblings\n .filter((d) => d.item !== undefined)\n .sort((a, b) => (a.item ?? 0) - (b.item ?? 0));\n }, [dictionary, allSiblings]);\n\n const variantDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.variant === undefined) return [];\n return allSiblings.filter((d) => d.variant !== undefined);\n }, [dictionary, allSiblings]);\n\n const switchSibling = useCallback(\n (sibling: Dictionary) => {\n setActiveDictionary(sibling);\n setFocusedContentKeyPath([]);\n },\n [setFocusedContentKeyPath]\n );\n\n const { content, key, localId } = activeDictionary;\n const focusedKeyPath = focusedContent?.keyPath;\n const section =\n typeof editedContent?.[localId as LocalDictionaryId]?.content ===\n 'undefined'\n ? content\n : editedContent?.[localId as LocalDictionaryId]?.content;\n\n const currentLocale = useEditorLocale();\n const focusedSection = getContentNodeByKeyPath(\n section,\n focusedKeyPath ?? [],\n currentLocale\n );\n\n const deferredKeyPath = useDeferredValue(focusedKeyPath);\n const deferredSection = useDeferredValue(focusedSection);\n const isStale = deferredSection !== focusedSection;\n\n const isEditableBaseSection = getIsEditableSection(section);\n const isEditableFocusedSection = getIsEditableSection(deferredSection);\n\n useEffect(() => {\n if (typeof focusedSection === 'undefined') {\n setFocusedContentKeyPath(focusedContent?.keyPath?.slice(0, -1) ?? []);\n }\n }, []);\n\n const currentItemIndex = itemDicts.findIndex(\n (dictionary) => dictionary.localId === activeDictionary.localId\n );\n const currentVariant = activeDictionary.variant;\n\n return (\n <div>\n {/* Qualifier navigation controls */}\n {hasQualifier && (\n <div className=\"mb-4 flex flex-wrap items-center gap-4\">\n {itemDicts.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {itemPagination.label}\n </span>\n <Pagination\n currentPage={currentItemIndex >= 0 ? currentItemIndex + 1 : 1}\n totalPages={itemDicts.length}\n onPageChange={(page) => {\n const target = itemDicts[page - 1];\n if (target) switchSibling(target);\n }}\n size=\"sm\"\n />\n </div>\n )}\n\n {variantDicts.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {variantSwitcher.label}:\n </span>\n {variantDicts.map((sibling) => {\n const isActive = sibling.localId === activeDictionary.localId;\n return (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => !isActive && switchSibling(sibling)}\n className={`rounded-lg px-3 py-1 text-xs transition-colors ${\n isActive\n ? 'bg-text font-semibold text-text-opposite'\n : 'cursor-pointer border border-border hover:bg-text/10'\n }`}\n >\n {formatVariant(sibling.variant)}\n </button>\n );\n })}\n {currentVariant !== undefined &&\n !variantDicts.some((d) => d.localId === dictionary.localId) && (\n <span className=\"rounded-lg bg-text px-3 py-1 font-semibold text-text-opposite text-xs\">\n {formatVariant(currentVariant)}\n </span>\n )}\n </div>\n )}\n </div>\n )}\n\n <div className=\"mb-6 flex items-center justify-between gap-2\">\n <KeyPathBreadcrumb\n dictionaryKey={key}\n keyPath={focusedKeyPath ?? []}\n onClickKeyPath={setFocusedContentKeyPath}\n />\n <div className=\"flex items-center gap-2\">\n <LocaleSwitcherContent />\n </div>\n </div>\n <div className=\"flex flex-1 gap-2 overflow-visible max-md:flex-col\">\n {typeof section === 'object' &&\n section &&\n !isEditableBaseSection &&\n Object.keys(section).length > 0 && (\n <Container\n border\n background=\"none\"\n className=\"top-10 flex h-full flex-col items-start gap-0.5 overflow-auto p-2 md:sticky md:max-w-[50%]\"\n roundedSize=\"2xl\"\n transparency=\"xs\"\n >\n <NavigationViewNode\n keyPath={[]}\n section={section}\n dictionary={activeDictionary}\n />\n </Container>\n )}\n {(isEditableFocusedSection || (deferredKeyPath ?? []).length > 0) && (\n <div\n className={\n isStale\n ? 'pointer-events-none flex-1 opacity-50 transition-opacity'\n : 'flex-1 transition-opacity'\n }\n >\n <TextEditorContainer\n keyPath={deferredKeyPath ?? []}\n section={deferredSection}\n dictionary={activeDictionary}\n isDarkMode={isDarkMode}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SafeHtmlRenderer.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const SafeHtmlRenderer = ({ rawContent }: { rawContent: string }) => {\n const [cleanHtml, setCleanHtml] = useState<string>('');\n\n useEffect(() => {\n import('dompurify').then(({ default: domPurify }) => {\n // Executes only in the browser using the native DOM. jsdom is never invoked.\n setCleanHtml(domPurify.sanitize(rawContent));\n });\n }, [rawContent]);\n\n if (!cleanHtml) return <div />;\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: sanitize\n return <div dangerouslySetInnerHTML={{ __html: cleanHtml }} />;\n};\n"],"mappings":";;;;;;AAIA,MAAa,oBAAoB,EAAE,iBAAyC;CAC1E,MAAM,CAAC,WAAW,gBAAgB,SAAiB,GAAG;AAEtD,iBAAgB;AACd,SAAO,aAAa,MAAM,EAAE,SAAS,gBAAgB;AAEnD,gBAAa,UAAU,SAAS,WAAW,CAAC;IAC5C;IACD,CAAC,WAAW,CAAC;AAEhB,KAAI,CAAC,UAAW,QAAO,oBAAC,OAAD,EAAO;AAG9B,QAAO,oBAAC,OAAD,EAAK,yBAAyB,EAAE,QAAQ,WAAW,EAAI"}
1
+ {"version":3,"file":"SafeHtmlRenderer.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const SafeHtmlRenderer = ({ rawContent }: { rawContent: string }) => {\n const [cleanHtml, setCleanHtml] = useState<string>('');\n\n useEffect(() => {\n import('dompurify').then(({ default: domPurify }) => {\n // Executes only in the browser using the native DOM. jsdom is never invoked.\n setCleanHtml(domPurify.sanitize(rawContent));\n });\n }, [rawContent]);\n\n if (!cleanHtml) return <div />;\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: sanitize\n return <div dangerouslySetInnerHTML={{ __html: cleanHtml }} />;\n};\n"],"mappings":";;;;;;AAIA,MAAa,oBAAoB,EAAE,iBAAyC;CAC1E,MAAM,CAAC,WAAW,gBAAgB,SAAiB,EAAE;CAErD,gBAAgB;EACd,OAAO,YAAY,CAAC,MAAM,EAAE,SAAS,gBAAgB;GAEnD,aAAa,UAAU,SAAS,UAAU,CAAC;EAC7C,CAAC;CACH,GAAG,CAAC,UAAU,CAAC;CAEf,IAAI,CAAC,WAAW,OAAO,oBAAC,OAAD,CAAM;CAG7B,OAAO,oBAAC,OAAD,EAAK,yBAAyB,EAAE,QAAQ,UAAU,EAAI;AAC/D"}
@@ -516,6 +516,27 @@ const MarkdownTextEditor = ({ section, keyPath, dictionary, isDarkMode }) => {
516
516
  ];
517
517
  const childKeyPath = [...keyPath, { type: NodeTypes.MARKDOWN }];
518
518
  const content = section[NodeTypes.MARKDOWN] ?? "";
519
+ /**
520
+ * WYSIWYG editor rendered on every markdown string leaf. When the markdown
521
+ * node wraps another node (e.g. `md(t({ ... }))`), the recursive editor
522
+ * walks the inner structure and calls this renderer once per string leaf,
523
+ * so each locale/branch gets its own rich-text surface writing back to its
524
+ * own key path.
525
+ */
526
+ const renderMarkdownEditor = (leafContent, leafKeyPath) => /* @__PURE__ */ jsx(Suspense, {
527
+ fallback: /* @__PURE__ */ jsx(Loader, {}),
528
+ children: /* @__PURE__ */ jsx(LazyMarkdownEditor, {
529
+ defaultValue: leafContent,
530
+ onChange: (markdown) => addEditedContent(dictionary.localId, markdown, leafKeyPath)
531
+ }, JSON.stringify(leafKeyPath))
532
+ });
533
+ const renderMarkdownPreview = (leafContent) => /* @__PURE__ */ jsx(Suspense, {
534
+ fallback: /* @__PURE__ */ jsx(Loader, {}),
535
+ children: /* @__PURE__ */ jsx(LazyMarkdownRenderer, {
536
+ isDarkMode,
537
+ children: leafContent
538
+ })
539
+ });
519
540
  return /* @__PURE__ */ jsxs("div", {
520
541
  className: "flex w-full flex-col justify-center gap-6 p-2",
521
542
  children: [/* @__PURE__ */ jsx(SwitchSelector, {
@@ -525,30 +546,11 @@ const MarkdownTextEditor = ({ section, keyPath, dictionary, isDarkMode }) => {
525
546
  color: "text",
526
547
  size: "sm",
527
548
  className: "ml-auto"
528
- }), mode === 0 && typeof content === "string" ? /* @__PURE__ */ jsx(Container, {
529
- border: true,
530
- background: "none",
531
- roundedSize: "2xl",
532
- padding: "lg",
533
- className: "w-full",
534
- children: /* @__PURE__ */ jsx(Suspense, {
535
- fallback: /* @__PURE__ */ jsx(Loader, {}),
536
- children: /* @__PURE__ */ jsx(LazyMarkdownEditor, {
537
- defaultValue: content,
538
- onChange: (markdown) => addEditedContent(dictionary.localId, markdown, childKeyPath)
539
- }, JSON.stringify(childKeyPath))
540
- })
541
- }) : /* @__PURE__ */ jsx(TextEditorContainer, {
549
+ }), /* @__PURE__ */ jsx(TextEditorContainer, {
542
550
  section: content,
543
551
  keyPath: childKeyPath,
544
552
  dictionary,
545
- renderSection: mode === 2 ? (content) => /* @__PURE__ */ jsx(Suspense, {
546
- fallback: /* @__PURE__ */ jsx(Loader, {}),
547
- children: /* @__PURE__ */ jsx(LazyMarkdownRenderer, {
548
- isDarkMode,
549
- children: content
550
- })
551
- }) : void 0
553
+ renderSection: mode === 0 ? renderMarkdownEditor : mode === 2 ? renderMarkdownPreview : void 0
552
554
  })]
553
555
  });
554
556
  };
@@ -711,7 +713,7 @@ const TextEditor = memo(function TextEditor({ section, keyPath, dictionary, rend
711
713
  });
712
714
  if (nodeType === NodeTypes.TEXT) return /* @__PURE__ */ jsx("div", {
713
715
  className: "w-full p-2",
714
- children: typeof renderSection === "function" ? renderSection(section) : /* @__PURE__ */ jsx(ContentEditorTextArea, {
716
+ children: typeof renderSection === "function" ? renderSection(section, keyPath) : /* @__PURE__ */ jsx(ContentEditorTextArea, {
715
717
  variant: "default",
716
718
  "aria-label": "Edit field",
717
719
  keyPath,
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.mjs","names":["ContentEditorTextAreaBase","ContentEditorInputBase"],"sources":["../../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport { useAuditContentDeclarationField } from '@api/index';\nimport { Accordion } from '@components/Accordion';\nimport { Button } from '@components/Button';\nimport { Container } from '@components/Container';\nimport {\n ContentEditorInput as ContentEditorInputBase,\n type ContentEditorInputProps as ContentEditorInputPropsBase,\n} from '@components/ContentEditor/ContentEditorInput';\nimport {\n ContentEditorTextArea as ContentEditorTextAreaBase,\n type ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n} from '@components/ContentEditor/ContentEditorTextArea';\nimport { renameKey } from '@components/DictionaryFieldEditor/ContentEditorView/object';\nimport { Label } from '@components/Label';\nimport { Loader } from '@components/Loader';\nimport { useLocaleSwitcherContent } from '@components/LocaleSwitcherContentDropDown';\nimport {\n SwitchSelector,\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n} from '@components/SwitchSelector';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getEmptyNode,\n getNodeType,\n} from '@intlayer/core/dictionaryManipulator';\nimport { getLocaleName } from '@intlayer/core/localization';\nimport type {\n ConditionContent,\n EnumerationContent,\n FileContent,\n GenderContent,\n HTMLContent,\n InsertionContent,\n MarkdownContent,\n PluralContent,\n TranslationContent,\n} from '@intlayer/core/transpiler';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport type { ContentNode, Dictionary } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport { Plus, Trash, WandSparkles } from 'lucide-react';\nimport {\n type FC,\n Fragment,\n lazy,\n memo,\n type ReactNode,\n Suspense,\n useState,\n} from 'react';\nimport { useIntlayer, useLocale } from 'react-intlayer';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { SafeHtmlRenderer } from './SafeHtmlRenderer';\n\nconst LazyMarkdownRenderer = lazy(() =>\n import('@components/MarkDownRender').then((m) => ({\n default: m.MarkdownRenderer,\n }))\n);\n\n// Lazy-loaded so the Tiptap/Novel editor bundle is only fetched when a markdown\n// field is actually edited.\nconst LazyMarkdownEditor = lazy(() =>\n import('@components/MarkdownEditor').then((m) => ({\n default: m.MarkdownEditor,\n }))\n);\n\n// Renders children only after the accordion is first opened (mount-once pattern).\n// Prevents deeply nested sub-trees from mounting on initial render.\ntype CollapsibleEditorProps = TextEditorProps & { label: string };\nconst CollapsibleEditor = memo<CollapsibleEditorProps>(\n function CollapsibleEditor({ label, ...editorProps }) {\n const [hasOpened, setHasOpened] = useState(false);\n return (\n <Accordion\n header={label}\n label={label}\n onToggle={(isOpen) => {\n if (isOpen && !hasOpened) setHasOpened(true);\n }}\n >\n {hasOpened ? <TextEditor {...editorProps} /> : null}\n </Accordion>\n );\n }\n);\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 { mutate: auditContentDeclarationField, isPending: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.localId!, 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 {\n fileContent: JSON.stringify({\n ...dictionary,\n ...(editedContent?.[dictionary.localId!] ?? {}),\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 },\n {\n onSuccess: (response) => {\n if (!response?.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(\n dictionary.localId!,\n editedContent,\n keyPath\n );\n } catch (error) {\n console.error(error);\n }\n },\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.localId!, 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) =>\n addEditedContent(dictionary.localId!, value, keyPath)\n }\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 } = useLocaleSwitcherContent();\n\n const content: any = (section as TranslationContent<string>)[\n NodeTypes.TRANSLATION\n ];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {selectedLocales.map((translationKey) => {\n const uniqueKey = `${JSON.stringify(keyPath)}-translation-${translationKey}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 w-full p-2 text-xs\">\n <td className=\"flex w-full\">\n {getLocaleName(translationKey, locale)}\n </td>\n </tr>\n <tr className=\"flex\">\n <td className=\"flex w-full\">\n <TextEditorContainer\n section={\n content[translationKey] ??\n getEmptyNode(content[defaultLocale])\n }\n keyPath={[\n ...keyPath,\n { type: NodeTypes.TRANSLATION, key: translationKey },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\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 } =\n useIntlayer('navigation-view');\n\n const content = (section as EnumerationContent<string>)[\n NodeTypes.ENUMERATION\n ];\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>)[NodeTypes.ENUMERATION]\n ).map((enumKey) => {\n const childrenKeyPath = [\n ...keyPath,\n { type: NodeTypes.ENUMERATION, key: enumKey },\n ] as KeyPath[];\n const uniqueKey = `${JSON.stringify(keyPath)}-enumeration-${enumKey}`;\n\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 w-full\">\n <td className=\"flex w-full\">\n <div className=\"flex flex-1\">\n <Button\n label={removeEnumeration.label.value}\n variant=\"hoverable\"\n size=\"sm\"\n color=\"error\"\n className=\"ml-auto text-neutral hover:text-error\"\n Icon={Trash}\n onClick={() =>\n addEditedContent(\n dictionary.localId!,\n undefined,\n childrenKeyPath\n )\n }\n >\n {removeEnumeration.text}\n </Button>\n </div>\n </td>\n </tr>\n <tr className=\"w-full p-2\">\n <td className=\"flex w-full\">\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeTypes.ENUMERATION];\n\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeTypes.ENUMERATION]: newValueContent,\n };\n\n console.log('newValue', newValue);\n\n addEditedContent(\n dictionary.localId!,\n newValue,\n keyPath\n );\n }}\n />\n </td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex 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 </td>\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.localId!,\n getEmptyNode(content[firstKey]) ?? '',\n [...keyPath, { type: NodeTypes.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>)[NodeTypes.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 const uniqueKey = `${JSON.stringify(keyPath)}-condition-${condKey}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 block w-full p-2 text-xs\">\n <td className=\"flex w-full\">{String(condKey)}</td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex 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: NodeTypes.CONDITION,\n key: condKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\n })}\n </tbody>\n </table>\n );\n};\n\nconst GenderTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const content = (section as GenderContent<string>)[NodeTypes.GENDER];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {['male', 'female', 'fallback'].map((condKey) => {\n const uniqueKey = `${JSON.stringify(keyPath)}-gender-${condKey}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 block w-full p-2 text-xs\">\n <td className=\"flex w-full\">{String(condKey)}</td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex w-full\">\n <TextEditorContainer\n section={\n content[condKey as keyof typeof content] ??\n getEmptyNode(content.male)\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeTypes.GENDER,\n key: condKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\n })}\n </tbody>\n </table>\n );\n};\n\nconst PLURAL_CATEGORIES = ['zero', 'one', 'two', 'few', 'many', 'other'];\n\nconst PluralTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const content = (section as PluralContent<string>)[NodeTypes.PLURAL];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {PLURAL_CATEGORIES.map((pluralKey) => {\n const uniqueKey = `${JSON.stringify(keyPath)}-plural-${pluralKey}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 block w-full p-2 text-xs\">\n <td className=\"flex w-full\">{pluralKey}</td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex w-full\">\n <TextEditorContainer\n section={\n content[pluralKey as keyof typeof content] ??\n getEmptyNode(content.other)\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeTypes.PLURAL,\n key: pluralKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\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 } = useIntlayer('navigation-view');\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 const uniqueKey = `${JSON.stringify(keyPath)}-array-${index}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 w-full p-2\">\n <td className=\"flex w-full\">\n <div className=\"flex w-full items-center justify-between gap-2\">\n <span className=\"text-xs\">{String(index)}</span>\n <Button\n label={removeElement.label.value}\n variant=\"hoverable\"\n size=\"sm\"\n color=\"error\"\n className=\"ml-auto text-neutral hover:text-error\"\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.ARRAY,\n key: index, // Fixed: Use index instead of length\n },\n ];\n addEditedContent(\n dictionary.localId!,\n undefined,\n newKeyPath\n );\n }}\n Icon={Trash}\n >\n {removeElement.text}\n </Button>\n </div>\n </td>\n </tr>\n\n <tr className=\"block w-full\">\n <td className=\"flex w-full\">\n <TextEditorContainer\n section={\n subSection ??\n getEmptyNode((section as unknown as ContentNode[])[0])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeTypes.ARRAY,\n key: index,\n },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\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: NodeTypes.ARRAY,\n key: (section as unknown as ContentNode[]).length, // Keeps length for adding new items\n },\n ];\n addEditedContent(\n dictionary.localId!,\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 const typedSection = section as unknown as Record<string, ContentNode>;\n const firstKey = Object.keys(typedSection)[0] as keyof typeof section;\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex flex-col gap-2\">\n {Object.keys(typedSection).map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeTypes.OBJECT, key },\n ];\n const subSection =\n typedSection[key as keyof typeof section] ??\n getEmptyNode(typedSection[firstKey]);\n const uniqueKey = `${JSON.stringify(keyPath)}-object-${key}`;\n // Collapse any object/array (typed or plain) — only true primitives render inline.\n // getIsEditableSection can't be used here: it inspects getNodeChildren(), which for\n // translation nodes returns the first locale value (a string), causing translation\n // subtrees to be mistakenly treated as leaves and mounted all at once.\n const isLeaf = subSection === null || typeof subSection !== 'object';\n\n if (isLeaf) {\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 p-2 text-xs\">\n <td className=\"flex w-full\">{String(key)}</td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex w-full\">\n <TextEditor\n section={subSection}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\n }\n\n return (\n <tr\n key={uniqueKey}\n className=\"block w-full border-neutral/10 border-t py-1\"\n >\n <td className=\"flex w-full\">\n <CollapsibleEditor\n label={camelCaseToSentence(key)}\n section={subSection}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n};\n\nenum MarkdownViewMode {\n Edit,\n Raw,\n Preview,\n}\n\nenum HtmlViewMode {\n Edit,\n Preview,\n}\n\nconst HtmlTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const [mode, setMode] = useState(HtmlViewMode.Edit);\n const toggleContent = [\n {\n content: 'Edit',\n value: HtmlViewMode.Edit,\n },\n {\n content: 'Preview',\n value: HtmlViewMode.Preview,\n },\n ] as SwitchSelectorChoices<HtmlViewMode>;\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeTypes.HTML }];\n\n const content = (section as HTMLContent<ContentNode>)[\n NodeTypes.HTML\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 === HtmlViewMode.Preview\n ? (rawContent) => <SafeHtmlRenderer rawContent={rawContent} />\n : undefined\n }\n />\n </div>\n );\n};\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n}) => {\n const [mode, setMode] = useState(MarkdownViewMode.Edit);\n const { addEditedContent } = useEditedContent();\n const toggleContent = [\n {\n content: 'Edit',\n value: MarkdownViewMode.Edit,\n },\n {\n content: 'Raw',\n value: MarkdownViewMode.Raw,\n },\n {\n content: 'Preview',\n value: MarkdownViewMode.Preview,\n },\n ] as SwitchSelectorChoices<MarkdownViewMode>;\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeTypes.MARKDOWN }];\n\n const content = ((section as MarkdownContent<ContentNode>)[\n NodeTypes.MARKDOWN\n ] ?? '') as ContentNode;\n\n // The WYSIWYG editor only handles a plain markdown string. When the markdown\n // node wraps another node (e.g. `md(t({ ... }))`), fall back to the recursive\n // editor so the inner translation/nested structure stays editable.\n const isStringLeaf = typeof content === 'string';\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 {mode === MarkdownViewMode.Edit && isStringLeaf ? (\n <Container\n border\n background=\"none\"\n roundedSize=\"2xl\"\n padding=\"lg\"\n className=\"w-full\"\n >\n <Suspense fallback={<Loader />}>\n <LazyMarkdownEditor\n key={JSON.stringify(childKeyPath)}\n defaultValue={content}\n onChange={(markdown) =>\n addEditedContent(dictionary.localId!, markdown, childKeyPath)\n }\n />\n </Suspense>\n </Container>\n ) : (\n <TextEditorContainer\n section={content}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={\n mode === MarkdownViewMode.Preview\n ? (content) => (\n <Suspense fallback={<Loader />}>\n <LazyMarkdownRenderer isDarkMode={isDarkMode}>\n {content}\n </LazyMarkdownRenderer>\n </Suspense>\n )\n : undefined\n }\n />\n )}\n </div>\n );\n};\n\nconst InsertionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeTypes.INSERTION }];\n\n const content = (section as InsertionContent<ContentNode>)[\n NodeTypes.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: NodeTypes.FILE }];\n\n const fileUrl = (section as FileContent)[NodeTypes.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 any)[NodeTypes.NESTED];\n const childrenKeyPath = [...keyPath, { type: NodeTypes.NESTED }] as KeyPath[];\n\n return (\n <div className=\"flex w-full flex-col gap-4 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.localId!,\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.localId!,\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 = memo<TextEditorProps>(function TextEditor({\n section,\n keyPath,\n dictionary,\n renderSection,\n isDarkMode,\n}) {\n const { tsxNotEditable } = useIntlayer('navigation-view');\n const nodeType = getNodeType(section);\n\n if (nodeType === NodeTypes.REACT_NODE) {\n return (\n <div className=\"flex w-full flex-col gap-2\">\n <span>(React Node)</span>\n <span className=\"flex text-neutral text-xs\">{tsxNotEditable}</span>\n </div>\n );\n }\n\n if (nodeType === NodeTypes.NESTED) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.TRANSLATION) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.ENUMERATION) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.CONDITION) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.GENDER) {\n return (\n <GenderTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.PLURAL) {\n return (\n <PluralTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.INSERTION) {\n return (\n <InsertionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.MARKDOWN) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n isDarkMode={isDarkMode}\n />\n );\n }\n\n if (nodeType === NodeTypes.HTML) {\n return (\n <HtmlTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.FILE) {\n return (\n <FileTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.ARRAY) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.OBJECT) {\n return (\n <ObjectTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.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 === NodeTypes.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 === NodeTypes.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 = memo<TextEditorProps>(\n function TextEditorContainer(props) {\n return (\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=\"2xl\"\n >\n <TextEditor {...props} />\n </Container>\n );\n }\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"TextEditor.mjs","names":["ContentEditorTextAreaBase","ContentEditorInputBase"],"sources":["../../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport { useAuditContentDeclarationField } from '@api/index';\nimport { Accordion } from '@components/Accordion';\nimport { Button } from '@components/Button';\nimport { Container } from '@components/Container';\nimport {\n ContentEditorInput as ContentEditorInputBase,\n type ContentEditorInputProps as ContentEditorInputPropsBase,\n} from '@components/ContentEditor/ContentEditorInput';\nimport {\n ContentEditorTextArea as ContentEditorTextAreaBase,\n type ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n} from '@components/ContentEditor/ContentEditorTextArea';\nimport { renameKey } from '@components/DictionaryFieldEditor/ContentEditorView/object';\nimport { Label } from '@components/Label';\nimport { Loader } from '@components/Loader';\nimport { useLocaleSwitcherContent } from '@components/LocaleSwitcherContentDropDown';\nimport {\n SwitchSelector,\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n} from '@components/SwitchSelector';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getEmptyNode,\n getNodeType,\n} from '@intlayer/core/dictionaryManipulator';\nimport { getLocaleName } from '@intlayer/core/localization';\nimport type {\n ConditionContent,\n EnumerationContent,\n FileContent,\n GenderContent,\n HTMLContent,\n InsertionContent,\n MarkdownContent,\n PluralContent,\n TranslationContent,\n} from '@intlayer/core/transpiler';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport type { ContentNode, Dictionary } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport { Plus, Trash, WandSparkles } from 'lucide-react';\nimport {\n type FC,\n Fragment,\n lazy,\n memo,\n type ReactNode,\n Suspense,\n useState,\n} from 'react';\nimport { useIntlayer, useLocale } from 'react-intlayer';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { SafeHtmlRenderer } from './SafeHtmlRenderer';\n\nconst LazyMarkdownRenderer = lazy(() =>\n import('@components/MarkDownRender').then((m) => ({\n default: m.MarkdownRenderer,\n }))\n);\n\n// Lazy-loaded so the Tiptap/Novel editor bundle is only fetched when a markdown\n// field is actually edited.\nconst LazyMarkdownEditor = lazy(() =>\n import('@components/MarkdownEditor').then((m) => ({\n default: m.MarkdownEditor,\n }))\n);\n\n// Renders children only after the accordion is first opened (mount-once pattern).\n// Prevents deeply nested sub-trees from mounting on initial render.\ntype CollapsibleEditorProps = TextEditorProps & { label: string };\nconst CollapsibleEditor = memo<CollapsibleEditorProps>(\n function CollapsibleEditor({ label, ...editorProps }) {\n const [hasOpened, setHasOpened] = useState(false);\n return (\n <Accordion\n header={label}\n label={label}\n onToggle={(isOpen) => {\n if (isOpen && !hasOpened) setHasOpened(true);\n }}\n >\n {hasOpened ? <TextEditor {...editorProps} /> : null}\n </Accordion>\n );\n }\n);\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 { mutate: auditContentDeclarationField, isPending: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.localId!, 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 {\n fileContent: JSON.stringify({\n ...dictionary,\n ...(editedContent?.[dictionary.localId!] ?? {}),\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 },\n {\n onSuccess: (response) => {\n if (!response?.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(\n dictionary.localId!,\n editedContent,\n keyPath\n );\n } catch (error) {\n console.error(error);\n }\n },\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.localId!, 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) =>\n addEditedContent(dictionary.localId!, value, keyPath)\n }\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 /**\n * Custom renderer for string leaves. Receives the leaf content and its full\n * key path so the renderer can write edits back to the right location.\n */\n renderSection?: (content: string, keyPath: KeyPath[]) => 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 } = useLocaleSwitcherContent();\n\n const content: any = (section as TranslationContent<string>)[\n NodeTypes.TRANSLATION\n ];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {selectedLocales.map((translationKey) => {\n const uniqueKey = `${JSON.stringify(keyPath)}-translation-${translationKey}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 w-full p-2 text-xs\">\n <td className=\"flex w-full\">\n {getLocaleName(translationKey, locale)}\n </td>\n </tr>\n <tr className=\"flex\">\n <td className=\"flex w-full\">\n <TextEditorContainer\n section={\n content[translationKey] ??\n getEmptyNode(content[defaultLocale])\n }\n keyPath={[\n ...keyPath,\n { type: NodeTypes.TRANSLATION, key: translationKey },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\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 } =\n useIntlayer('navigation-view');\n\n const content = (section as EnumerationContent<string>)[\n NodeTypes.ENUMERATION\n ];\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>)[NodeTypes.ENUMERATION]\n ).map((enumKey) => {\n const childrenKeyPath = [\n ...keyPath,\n { type: NodeTypes.ENUMERATION, key: enumKey },\n ] as KeyPath[];\n const uniqueKey = `${JSON.stringify(keyPath)}-enumeration-${enumKey}`;\n\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 w-full\">\n <td className=\"flex w-full\">\n <div className=\"flex flex-1\">\n <Button\n label={removeEnumeration.label.value}\n variant=\"hoverable\"\n size=\"sm\"\n color=\"error\"\n className=\"ml-auto text-neutral hover:text-error\"\n Icon={Trash}\n onClick={() =>\n addEditedContent(\n dictionary.localId!,\n undefined,\n childrenKeyPath\n )\n }\n >\n {removeEnumeration.text}\n </Button>\n </div>\n </td>\n </tr>\n <tr className=\"w-full p-2\">\n <td className=\"flex w-full\">\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeTypes.ENUMERATION];\n\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeTypes.ENUMERATION]: newValueContent,\n };\n\n console.log('newValue', newValue);\n\n addEditedContent(\n dictionary.localId!,\n newValue,\n keyPath\n );\n }}\n />\n </td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex 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 </td>\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.localId!,\n getEmptyNode(content[firstKey]) ?? '',\n [...keyPath, { type: NodeTypes.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>)[NodeTypes.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 const uniqueKey = `${JSON.stringify(keyPath)}-condition-${condKey}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 block w-full p-2 text-xs\">\n <td className=\"flex w-full\">{String(condKey)}</td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex 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: NodeTypes.CONDITION,\n key: condKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\n })}\n </tbody>\n </table>\n );\n};\n\nconst GenderTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const content = (section as GenderContent<string>)[NodeTypes.GENDER];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {['male', 'female', 'fallback'].map((condKey) => {\n const uniqueKey = `${JSON.stringify(keyPath)}-gender-${condKey}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 block w-full p-2 text-xs\">\n <td className=\"flex w-full\">{String(condKey)}</td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex w-full\">\n <TextEditorContainer\n section={\n content[condKey as keyof typeof content] ??\n getEmptyNode(content.male)\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeTypes.GENDER,\n key: condKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\n })}\n </tbody>\n </table>\n );\n};\n\nconst PLURAL_CATEGORIES = ['zero', 'one', 'two', 'few', 'many', 'other'];\n\nconst PluralTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n renderSection,\n}) => {\n const content = (section as PluralContent<string>)[NodeTypes.PLURAL];\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex w-full flex-col gap-2\">\n {PLURAL_CATEGORIES.map((pluralKey) => {\n const uniqueKey = `${JSON.stringify(keyPath)}-plural-${pluralKey}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 block w-full p-2 text-xs\">\n <td className=\"flex w-full\">{pluralKey}</td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex w-full\">\n <TextEditorContainer\n section={\n content[pluralKey as keyof typeof content] ??\n getEmptyNode(content.other)\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeTypes.PLURAL,\n key: pluralKey,\n } as KeyPath,\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\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 } = useIntlayer('navigation-view');\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 const uniqueKey = `${JSON.stringify(keyPath)}-array-${index}`;\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 w-full p-2\">\n <td className=\"flex w-full\">\n <div className=\"flex w-full items-center justify-between gap-2\">\n <span className=\"text-xs\">{String(index)}</span>\n <Button\n label={removeElement.label.value}\n variant=\"hoverable\"\n size=\"sm\"\n color=\"error\"\n className=\"ml-auto text-neutral hover:text-error\"\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.ARRAY,\n key: index, // Fixed: Use index instead of length\n },\n ];\n addEditedContent(\n dictionary.localId!,\n undefined,\n newKeyPath\n );\n }}\n Icon={Trash}\n >\n {removeElement.text}\n </Button>\n </div>\n </td>\n </tr>\n\n <tr className=\"block w-full\">\n <td className=\"flex w-full\">\n <TextEditorContainer\n section={\n subSection ??\n getEmptyNode((section as unknown as ContentNode[])[0])\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeTypes.ARRAY,\n key: index,\n },\n ]}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\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: NodeTypes.ARRAY,\n key: (section as unknown as ContentNode[]).length, // Keeps length for adding new items\n },\n ];\n addEditedContent(\n dictionary.localId!,\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 const typedSection = section as unknown as Record<string, ContentNode>;\n const firstKey = Object.keys(typedSection)[0] as keyof typeof section;\n\n return (\n <table className=\"w-full\">\n <tbody className=\"flex flex-col gap-2\">\n {Object.keys(typedSection).map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeTypes.OBJECT, key },\n ];\n const subSection =\n typedSection[key as keyof typeof section] ??\n getEmptyNode(typedSection[firstKey]);\n const uniqueKey = `${JSON.stringify(keyPath)}-object-${key}`;\n // Collapse any object/array (typed or plain) — only true primitives render inline.\n // getIsEditableSection can't be used here: it inspects getNodeChildren(), which for\n // translation nodes returns the first locale value (a string), causing translation\n // subtrees to be mistakenly treated as leaves and mounted all at once.\n const isLeaf = subSection === null || typeof subSection !== 'object';\n\n if (isLeaf) {\n return (\n <Fragment key={uniqueKey}>\n <tr className=\"mt-2 p-2 text-xs\">\n <td className=\"flex w-full\">{String(key)}</td>\n </tr>\n <tr className=\"block w-full\">\n <td className=\"flex w-full\">\n <TextEditor\n section={subSection}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n </Fragment>\n );\n }\n\n return (\n <tr\n key={uniqueKey}\n className=\"block w-full border-neutral/10 border-t py-1\"\n >\n <td className=\"flex w-full\">\n <CollapsibleEditor\n label={camelCaseToSentence(key)}\n section={subSection}\n keyPath={childKeyPath}\n dictionary={dictionary}\n renderSection={renderSection}\n />\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n};\n\nenum MarkdownViewMode {\n Edit,\n Raw,\n Preview,\n}\n\nenum HtmlViewMode {\n Edit,\n Preview,\n}\n\nconst HtmlTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const [mode, setMode] = useState(HtmlViewMode.Edit);\n const toggleContent = [\n {\n content: 'Edit',\n value: HtmlViewMode.Edit,\n },\n {\n content: 'Preview',\n value: HtmlViewMode.Preview,\n },\n ] as SwitchSelectorChoices<HtmlViewMode>;\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeTypes.HTML }];\n\n const content = (section as HTMLContent<ContentNode>)[\n NodeTypes.HTML\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 === HtmlViewMode.Preview\n ? (rawContent) => <SafeHtmlRenderer rawContent={rawContent} />\n : undefined\n }\n />\n </div>\n );\n};\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n}) => {\n const [mode, setMode] = useState(MarkdownViewMode.Edit);\n const { addEditedContent } = useEditedContent();\n const toggleContent = [\n {\n content: 'Edit',\n value: MarkdownViewMode.Edit,\n },\n {\n content: 'Raw',\n value: MarkdownViewMode.Raw,\n },\n {\n content: 'Preview',\n value: MarkdownViewMode.Preview,\n },\n ] as SwitchSelectorChoices<MarkdownViewMode>;\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeTypes.MARKDOWN }];\n\n const content = ((section as MarkdownContent<ContentNode>)[\n NodeTypes.MARKDOWN\n ] ?? '') as ContentNode;\n\n /**\n * WYSIWYG editor rendered on every markdown string leaf. When the markdown\n * node wraps another node (e.g. `md(t({ ... }))`), the recursive editor\n * walks the inner structure and calls this renderer once per string leaf,\n * so each locale/branch gets its own rich-text surface writing back to its\n * own key path.\n */\n const renderMarkdownEditor = (\n leafContent: string,\n leafKeyPath: KeyPath[]\n ): ReactNode => (\n <Suspense fallback={<Loader />}>\n <LazyMarkdownEditor\n key={JSON.stringify(leafKeyPath)}\n defaultValue={leafContent}\n onChange={(markdown) =>\n addEditedContent(dictionary.localId!, markdown, leafKeyPath)\n }\n />\n </Suspense>\n );\n\n const renderMarkdownPreview = (leafContent: string): ReactNode => (\n <Suspense fallback={<Loader />}>\n <LazyMarkdownRenderer isDarkMode={isDarkMode}>\n {leafContent}\n </LazyMarkdownRenderer>\n </Suspense>\n );\n\n const renderSectionByMode: TextEditorProps['renderSection'] =\n mode === MarkdownViewMode.Edit\n ? renderMarkdownEditor\n : mode === MarkdownViewMode.Preview\n ? renderMarkdownPreview\n : undefined;\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={renderSectionByMode}\n />\n </div>\n );\n};\n\nconst InsertionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n ...props\n}) => {\n const childKeyPath: KeyPath[] = [...keyPath, { type: NodeTypes.INSERTION }];\n\n const content = (section as InsertionContent<ContentNode>)[\n NodeTypes.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: NodeTypes.FILE }];\n\n const fileUrl = (section as FileContent)[NodeTypes.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 any)[NodeTypes.NESTED];\n const childrenKeyPath = [...keyPath, { type: NodeTypes.NESTED }] as KeyPath[];\n\n return (\n <div className=\"flex w-full flex-col gap-4 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.localId!,\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.localId!,\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 = memo<TextEditorProps>(function TextEditor({\n section,\n keyPath,\n dictionary,\n renderSection,\n isDarkMode,\n}) {\n const { tsxNotEditable } = useIntlayer('navigation-view');\n const nodeType = getNodeType(section);\n\n if (nodeType === NodeTypes.REACT_NODE) {\n return (\n <div className=\"flex w-full flex-col gap-2\">\n <span>(React Node)</span>\n <span className=\"flex text-neutral text-xs\">{tsxNotEditable}</span>\n </div>\n );\n }\n\n if (nodeType === NodeTypes.NESTED) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.TRANSLATION) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.ENUMERATION) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.CONDITION) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.GENDER) {\n return (\n <GenderTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.PLURAL) {\n return (\n <PluralTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.INSERTION) {\n return (\n <InsertionTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.MARKDOWN) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n isDarkMode={isDarkMode}\n />\n );\n }\n\n if (nodeType === NodeTypes.HTML) {\n return (\n <HtmlTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.FILE) {\n return (\n <FileTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.ARRAY) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.OBJECT) {\n return (\n <ObjectTextEditor\n dictionary={dictionary}\n renderSection={renderSection}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeTypes.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 === NodeTypes.TEXT) {\n return (\n <div className=\"w-full p-2\">\n {typeof renderSection === 'function' ? (\n renderSection(section as string, keyPath)\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 === NodeTypes.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 = memo<TextEditorProps>(\n function TextEditorContainer(props) {\n return (\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=\"2xl\"\n >\n <TextEditor {...props} />\n </Container>\n );\n }\n);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"object.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/ContentEditorView/object.ts"],"sourcesContent":["/**\n * Rename a key in an object by keeping the element order\n *\n * @param obj The original object\n * @param oldKey The key in the object that needs to be renamed\n * @param newKey The new key name to replace the old key\n * @returns A new object with the renamed key\n */\nexport const renameKey = <T extends object>(\n obj: T,\n oldKey: keyof T,\n newKey: string\n): T => {\n // Create a shallow copy of the original object to avoid mutating it\n const newObj: T = { ...obj };\n\n // Iterate over all keys of the original object\n for (const key of Object.keys(obj)) {\n // Check if the current key is the one that needs to be renamed\n if (key === (oldKey as string)) {\n // Assign the value of the old key to the new key in newObj\n newObj[newKey as keyof T] = obj[oldKey];\n // Optionally, delete the old key from newObj if you don't want both keys\n delete newObj[oldKey];\n } else {\n // For all other keys, ensure they are copied over correctly\n newObj[key as keyof T] = obj[key as keyof T];\n }\n }\n // Return the new object with the renamed key\n return newObj;\n};\n\n/**\n * Remove a key from an object\n *\n * @param obj The original object\n * @param key The key in the object that needs to be removed\n * @returns A new object without the specified key\n */\nexport const removeKey = <T extends object>(obj: T, key: keyof T): T => {\n // Create a shallow copy of the original object to avoid mutating it\n const newObj: T = { ...obj };\n\n // Delete the key from the object\n delete newObj[key];\n\n return newObj;\n};\n"],"mappings":";;;;;;;;;AAQA,MAAa,aACX,KACA,QACA,WACM;CAEN,MAAM,SAAY,EAAE,GAAG,KAAK;AAG5B,MAAK,MAAM,OAAO,OAAO,KAAK,IAAI,CAEhC,KAAI,QAAS,QAAmB;AAE9B,SAAO,UAAqB,IAAI;AAEhC,SAAO,OAAO;OAGd,QAAO,OAAkB,IAAI;AAIjC,QAAO;;;;;;;;;AAUT,MAAa,aAA+B,KAAQ,QAAoB;CAEtE,MAAM,SAAY,EAAE,GAAG,KAAK;AAG5B,QAAO,OAAO;AAEd,QAAO"}
1
+ {"version":3,"file":"object.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/ContentEditorView/object.ts"],"sourcesContent":["/**\n * Rename a key in an object by keeping the element order\n *\n * @param obj The original object\n * @param oldKey The key in the object that needs to be renamed\n * @param newKey The new key name to replace the old key\n * @returns A new object with the renamed key\n */\nexport const renameKey = <T extends object>(\n obj: T,\n oldKey: keyof T,\n newKey: string\n): T => {\n // Create a shallow copy of the original object to avoid mutating it\n const newObj: T = { ...obj };\n\n // Iterate over all keys of the original object\n for (const key of Object.keys(obj)) {\n // Check if the current key is the one that needs to be renamed\n if (key === (oldKey as string)) {\n // Assign the value of the old key to the new key in newObj\n newObj[newKey as keyof T] = obj[oldKey];\n // Optionally, delete the old key from newObj if you don't want both keys\n delete newObj[oldKey];\n } else {\n // For all other keys, ensure they are copied over correctly\n newObj[key as keyof T] = obj[key as keyof T];\n }\n }\n // Return the new object with the renamed key\n return newObj;\n};\n\n/**\n * Remove a key from an object\n *\n * @param obj The original object\n * @param key The key in the object that needs to be removed\n * @returns A new object without the specified key\n */\nexport const removeKey = <T extends object>(obj: T, key: keyof T): T => {\n // Create a shallow copy of the original object to avoid mutating it\n const newObj: T = { ...obj };\n\n // Delete the key from the object\n delete newObj[key];\n\n return newObj;\n};\n"],"mappings":";;;;;;;;;AAQA,MAAa,aACX,KACA,QACA,WACM;CAEN,MAAM,SAAY,EAAE,GAAG,IAAI;CAG3B,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG,GAE/B,IAAI,QAAS,QAAmB;EAE9B,OAAO,UAAqB,IAAI;EAEhC,OAAO,OAAO;CAChB,OAEE,OAAO,OAAkB,IAAI;CAIjC,OAAO;AACT;;;;;;;;AASA,MAAa,aAA+B,KAAQ,QAAoB;CAEtE,MAAM,SAAY,EAAE,GAAG,IAAI;CAG3B,OAAO,OAAO;CAEd,OAAO;AACT"}