@intlayer/design-system 8.9.7 → 8.10.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (756) hide show
  1. package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
  2. package/dist/esm/components/Avatar/image.mjs.map +1 -1
  3. package/dist/esm/components/Avatar/index.mjs +5 -5
  4. package/dist/esm/components/Avatar/index.mjs.map +1 -1
  5. package/dist/esm/components/Badge/index.mjs.map +1 -1
  6. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs.map +1 -1
  7. package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
  8. package/dist/esm/components/Browser/Browser.content.mjs +120 -0
  9. package/dist/esm/components/Browser/Browser.content.mjs.map +1 -1
  10. package/dist/esm/components/Browser/Browser.mjs +131 -9
  11. package/dist/esm/components/Browser/Browser.mjs.map +1 -1
  12. package/dist/esm/components/Browser/extractUrlFromSitemap.mjs +44 -0
  13. package/dist/esm/components/Browser/extractUrlFromSitemap.mjs.map +1 -0
  14. package/dist/esm/components/Button/Button.mjs +7 -4
  15. package/dist/esm/components/Button/Button.mjs.map +1 -1
  16. package/dist/esm/components/Carousel/index.content.mjs.map +1 -1
  17. package/dist/esm/components/Carousel/index.mjs.map +1 -1
  18. package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
  19. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -1
  20. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
  21. package/dist/esm/components/Command/index.mjs.map +1 -1
  22. package/dist/esm/components/Container/index.mjs +1 -1
  23. package/dist/esm/components/Container/index.mjs.map +1 -1
  24. package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
  25. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  26. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
  27. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
  28. package/dist/esm/components/ContentSelector/ContentSelector.mjs.map +1 -1
  29. package/dist/esm/components/CopyButton/CopyButton.content.mjs.map +1 -1
  30. package/dist/esm/components/CopyButton/index.mjs.map +1 -1
  31. package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
  32. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  33. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
  34. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
  35. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs.map +1 -1
  36. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs.map +1 -1
  37. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs.map +1 -1
  38. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs.map +1 -1
  39. package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs.map +1 -1
  40. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs.map +1 -1
  41. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs.map +1 -1
  42. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
  43. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs.map +1 -1
  44. package/dist/esm/components/DictionaryEditor/NodeWrapper/PluralWrapper.mjs.map +1 -1
  45. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
  46. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs.map +1 -1
  47. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs.map +1 -1
  48. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  49. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.mjs.map +1 -1
  50. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +51 -3
  51. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  52. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/object.mjs.map +1 -1
  53. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
  54. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  55. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  56. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs.map +1 -1
  57. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
  58. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +3 -3
  59. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  60. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  61. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
  62. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
  63. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +1 -1
  64. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  65. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
  66. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs.map +1 -1
  67. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs +1 -1
  68. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
  69. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +4 -4
  70. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  71. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
  72. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  73. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +2 -2
  74. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  75. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  76. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  77. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -1
  78. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  79. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
  80. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
  81. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs.map +1 -1
  82. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs.map +1 -1
  83. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
  84. package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs.map +1 -1
  85. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
  86. package/dist/esm/components/DropDown/index.mjs.map +1 -1
  87. package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
  88. package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  89. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  90. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
  91. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -1
  92. package/dist/esm/components/Flags/Flag.mjs.map +1 -1
  93. package/dist/esm/components/Flags/ae.mjs.map +1 -1
  94. package/dist/esm/components/Flags/af.mjs.map +1 -1
  95. package/dist/esm/components/Flags/al.mjs.map +1 -1
  96. package/dist/esm/components/Flags/am.mjs.map +1 -1
  97. package/dist/esm/components/Flags/ar.mjs.map +1 -1
  98. package/dist/esm/components/Flags/at.mjs.map +1 -1
  99. package/dist/esm/components/Flags/au.mjs.map +1 -1
  100. package/dist/esm/components/Flags/az.mjs.map +1 -1
  101. package/dist/esm/components/Flags/ba.mjs.map +1 -1
  102. package/dist/esm/components/Flags/bd.mjs.map +1 -1
  103. package/dist/esm/components/Flags/be.mjs.map +1 -1
  104. package/dist/esm/components/Flags/bg.mjs.map +1 -1
  105. package/dist/esm/components/Flags/bh.mjs.map +1 -1
  106. package/dist/esm/components/Flags/bn.mjs.map +1 -1
  107. package/dist/esm/components/Flags/bo.mjs.map +1 -1
  108. package/dist/esm/components/Flags/br.mjs.map +1 -1
  109. package/dist/esm/components/Flags/bw.mjs.map +1 -1
  110. package/dist/esm/components/Flags/by.mjs.map +1 -1
  111. package/dist/esm/components/Flags/bz.mjs.map +1 -1
  112. package/dist/esm/components/Flags/ca.mjs.map +1 -1
  113. package/dist/esm/components/Flags/ch.mjs.map +1 -1
  114. package/dist/esm/components/Flags/cl.mjs.map +1 -1
  115. package/dist/esm/components/Flags/cn.mjs.map +1 -1
  116. package/dist/esm/components/Flags/co.mjs.map +1 -1
  117. package/dist/esm/components/Flags/cr.mjs.map +1 -1
  118. package/dist/esm/components/Flags/cu.mjs.map +1 -1
  119. package/dist/esm/components/Flags/cv.mjs.map +1 -1
  120. package/dist/esm/components/Flags/cz.mjs.map +1 -1
  121. package/dist/esm/components/Flags/de.mjs.map +1 -1
  122. package/dist/esm/components/Flags/dj.mjs.map +1 -1
  123. package/dist/esm/components/Flags/dk.mjs.map +1 -1
  124. package/dist/esm/components/Flags/do.mjs.map +1 -1
  125. package/dist/esm/components/Flags/dz.mjs.map +1 -1
  126. package/dist/esm/components/Flags/ec.mjs.map +1 -1
  127. package/dist/esm/components/Flags/ee.mjs.map +1 -1
  128. package/dist/esm/components/Flags/eg.mjs.map +1 -1
  129. package/dist/esm/components/Flags/es-ct.mjs.map +1 -1
  130. package/dist/esm/components/Flags/es-ga.mjs.map +1 -1
  131. package/dist/esm/components/Flags/es-pv.mjs.map +1 -1
  132. package/dist/esm/components/Flags/es.mjs.map +1 -1
  133. package/dist/esm/components/Flags/et.mjs.map +1 -1
  134. package/dist/esm/components/Flags/fi.mjs.map +1 -1
  135. package/dist/esm/components/Flags/flags.mjs.map +1 -1
  136. package/dist/esm/components/Flags/fo.mjs.map +1 -1
  137. package/dist/esm/components/Flags/fr.mjs.map +1 -1
  138. package/dist/esm/components/Flags/gb-wls.mjs.map +1 -1
  139. package/dist/esm/components/Flags/gb.mjs.map +1 -1
  140. package/dist/esm/components/Flags/ge.mjs.map +1 -1
  141. package/dist/esm/components/Flags/gh.mjs.map +1 -1
  142. package/dist/esm/components/Flags/gr.mjs.map +1 -1
  143. package/dist/esm/components/Flags/gt.mjs.map +1 -1
  144. package/dist/esm/components/Flags/gw.mjs.map +1 -1
  145. package/dist/esm/components/Flags/hk.mjs.map +1 -1
  146. package/dist/esm/components/Flags/hn.mjs.map +1 -1
  147. package/dist/esm/components/Flags/hr.mjs.map +1 -1
  148. package/dist/esm/components/Flags/hu.mjs.map +1 -1
  149. package/dist/esm/components/Flags/id.mjs.map +1 -1
  150. package/dist/esm/components/Flags/ie.mjs.map +1 -1
  151. package/dist/esm/components/Flags/il.mjs.map +1 -1
  152. package/dist/esm/components/Flags/in.mjs.map +1 -1
  153. package/dist/esm/components/Flags/iq.mjs.map +1 -1
  154. package/dist/esm/components/Flags/ir.mjs.map +1 -1
  155. package/dist/esm/components/Flags/is.mjs.map +1 -1
  156. package/dist/esm/components/Flags/it.mjs.map +1 -1
  157. package/dist/esm/components/Flags/jm.mjs.map +1 -1
  158. package/dist/esm/components/Flags/jo.mjs.map +1 -1
  159. package/dist/esm/components/Flags/jp.mjs.map +1 -1
  160. package/dist/esm/components/Flags/ke.mjs.map +1 -1
  161. package/dist/esm/components/Flags/kg.mjs.map +1 -1
  162. package/dist/esm/components/Flags/kh.mjs.map +1 -1
  163. package/dist/esm/components/Flags/km.mjs.map +1 -1
  164. package/dist/esm/components/Flags/kr.mjs.map +1 -1
  165. package/dist/esm/components/Flags/kw.mjs.map +1 -1
  166. package/dist/esm/components/Flags/kz.mjs.map +1 -1
  167. package/dist/esm/components/Flags/la.mjs.map +1 -1
  168. package/dist/esm/components/Flags/lb.mjs.map +1 -1
  169. package/dist/esm/components/Flags/li.mjs.map +1 -1
  170. package/dist/esm/components/Flags/lk.mjs.map +1 -1
  171. package/dist/esm/components/Flags/lt.mjs.map +1 -1
  172. package/dist/esm/components/Flags/lu.mjs.map +1 -1
  173. package/dist/esm/components/Flags/lv.mjs.map +1 -1
  174. package/dist/esm/components/Flags/ly.mjs.map +1 -1
  175. package/dist/esm/components/Flags/ma.mjs.map +1 -1
  176. package/dist/esm/components/Flags/mc.mjs.map +1 -1
  177. package/dist/esm/components/Flags/md.mjs.map +1 -1
  178. package/dist/esm/components/Flags/mk.mjs.map +1 -1
  179. package/dist/esm/components/Flags/mm.mjs.map +1 -1
  180. package/dist/esm/components/Flags/mn.mjs.map +1 -1
  181. package/dist/esm/components/Flags/mo.mjs.map +1 -1
  182. package/dist/esm/components/Flags/mr.mjs.map +1 -1
  183. package/dist/esm/components/Flags/mt.mjs.map +1 -1
  184. package/dist/esm/components/Flags/mv.mjs.map +1 -1
  185. package/dist/esm/components/Flags/mx.mjs.map +1 -1
  186. package/dist/esm/components/Flags/my.mjs.map +1 -1
  187. package/dist/esm/components/Flags/mz.mjs.map +1 -1
  188. package/dist/esm/components/Flags/ng.mjs.map +1 -1
  189. package/dist/esm/components/Flags/ni.mjs.map +1 -1
  190. package/dist/esm/components/Flags/nl.mjs.map +1 -1
  191. package/dist/esm/components/Flags/no.mjs.map +1 -1
  192. package/dist/esm/components/Flags/np.mjs.map +1 -1
  193. package/dist/esm/components/Flags/nz.mjs.map +1 -1
  194. package/dist/esm/components/Flags/om.mjs.map +1 -1
  195. package/dist/esm/components/Flags/pa.mjs.map +1 -1
  196. package/dist/esm/components/Flags/pe.mjs.map +1 -1
  197. package/dist/esm/components/Flags/ph.mjs.map +1 -1
  198. package/dist/esm/components/Flags/pk.mjs.map +1 -1
  199. package/dist/esm/components/Flags/pl.mjs.map +1 -1
  200. package/dist/esm/components/Flags/pr.mjs.map +1 -1
  201. package/dist/esm/components/Flags/ps.mjs.map +1 -1
  202. package/dist/esm/components/Flags/pt.mjs.map +1 -1
  203. package/dist/esm/components/Flags/py.mjs.map +1 -1
  204. package/dist/esm/components/Flags/qa.mjs.map +1 -1
  205. package/dist/esm/components/Flags/ro.mjs.map +1 -1
  206. package/dist/esm/components/Flags/rs.mjs.map +1 -1
  207. package/dist/esm/components/Flags/ru.mjs.map +1 -1
  208. package/dist/esm/components/Flags/sa.mjs.map +1 -1
  209. package/dist/esm/components/Flags/sd.mjs.map +1 -1
  210. package/dist/esm/components/Flags/se.mjs.map +1 -1
  211. package/dist/esm/components/Flags/sg.mjs.map +1 -1
  212. package/dist/esm/components/Flags/si.mjs.map +1 -1
  213. package/dist/esm/components/Flags/sk.mjs.map +1 -1
  214. package/dist/esm/components/Flags/so.mjs.map +1 -1
  215. package/dist/esm/components/Flags/st.mjs.map +1 -1
  216. package/dist/esm/components/Flags/sv.mjs.map +1 -1
  217. package/dist/esm/components/Flags/sy.mjs.map +1 -1
  218. package/dist/esm/components/Flags/td.mjs.map +1 -1
  219. package/dist/esm/components/Flags/th.mjs.map +1 -1
  220. package/dist/esm/components/Flags/tl.mjs.map +1 -1
  221. package/dist/esm/components/Flags/tn.mjs.map +1 -1
  222. package/dist/esm/components/Flags/tr.mjs.map +1 -1
  223. package/dist/esm/components/Flags/tt.mjs.map +1 -1
  224. package/dist/esm/components/Flags/tw.mjs.map +1 -1
  225. package/dist/esm/components/Flags/tz.mjs.map +1 -1
  226. package/dist/esm/components/Flags/ua.mjs.map +1 -1
  227. package/dist/esm/components/Flags/ug.mjs.map +1 -1
  228. package/dist/esm/components/Flags/us.mjs.map +1 -1
  229. package/dist/esm/components/Flags/uy.mjs.map +1 -1
  230. package/dist/esm/components/Flags/uz.mjs.map +1 -1
  231. package/dist/esm/components/Flags/ve.mjs.map +1 -1
  232. package/dist/esm/components/Flags/vn.mjs.map +1 -1
  233. package/dist/esm/components/Flags/xx.mjs.map +1 -1
  234. package/dist/esm/components/Flags/ye.mjs.map +1 -1
  235. package/dist/esm/components/Flags/za.mjs.map +1 -1
  236. package/dist/esm/components/Flags/zw.mjs.map +1 -1
  237. package/dist/esm/components/Footer/index.mjs.map +1 -1
  238. package/dist/esm/components/Form/FormBase.mjs.map +1 -1
  239. package/dist/esm/components/Form/FormControl.mjs.map +1 -1
  240. package/dist/esm/components/Form/FormDescription.mjs.map +1 -1
  241. package/dist/esm/components/Form/FormField.mjs.map +1 -1
  242. package/dist/esm/components/Form/FormItem.mjs.map +1 -1
  243. package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
  244. package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
  245. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
  246. package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
  247. package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs.map +1 -1
  248. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs.map +1 -1
  249. package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
  250. package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
  251. package/dist/esm/components/Form/elements/InputElement.mjs.map +1 -1
  252. package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
  253. package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
  254. package/dist/esm/components/Form/elements/OTPElement.mjs +1 -1
  255. package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -1
  256. package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -1
  257. package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
  258. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
  259. package/dist/esm/components/Form/elements/TextAreaElement.mjs.map +1 -1
  260. package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
  261. package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
  262. package/dist/esm/components/Form/layout/RequiredStar.mjs.map +1 -1
  263. package/dist/esm/components/HTMLRender/HTMLRender.mjs.map +1 -1
  264. package/dist/esm/components/Headers/index.mjs.map +1 -1
  265. package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
  266. package/dist/esm/components/HideShow/index.mjs.map +1 -1
  267. package/dist/esm/components/IDE/Code.mjs.map +1 -1
  268. package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
  269. package/dist/esm/components/IDE/CodeBlockHighlight.mjs.map +1 -1
  270. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  271. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  272. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
  273. package/dist/esm/components/IDE/CodeContext.mjs.map +1 -1
  274. package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
  275. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
  276. package/dist/esm/components/IDE/CopyCode.mjs.map +1 -1
  277. package/dist/esm/components/IDE/FileList.mjs.map +1 -1
  278. package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
  279. package/dist/esm/components/IDE/IDE.mjs.map +1 -1
  280. package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
  281. package/dist/esm/components/IDE/MonacoCode.mjs.map +1 -1
  282. package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
  283. package/dist/esm/components/IDE/code.content.mjs.map +1 -1
  284. package/dist/esm/components/IDE/codeTransformer.mjs.map +1 -1
  285. package/dist/esm/components/IDE/copyCode.content.mjs.map +1 -1
  286. package/dist/esm/components/IDE/createFileTree.mjs.map +1 -1
  287. package/dist/esm/components/IDE/selectors.content.mjs.map +1 -1
  288. package/dist/esm/components/InformationTag/index.mjs.map +1 -1
  289. package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
  290. package/dist/esm/components/Input/Input.mjs.map +1 -1
  291. package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
  292. package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
  293. package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
  294. package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
  295. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
  296. package/dist/esm/components/Label/index.mjs.map +1 -1
  297. package/dist/esm/components/LanguageBackground/index.mjs.map +1 -1
  298. package/dist/esm/components/Link/Link.mjs +3 -2
  299. package/dist/esm/components/Link/Link.mjs.map +1 -1
  300. package/dist/esm/components/Loader/index.content.mjs.map +1 -1
  301. package/dist/esm/components/Loader/index.mjs.map +1 -1
  302. package/dist/esm/components/Loader/spinner.mjs.map +1 -1
  303. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +2 -2
  304. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  305. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs +8 -1
  306. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs.map +1 -1
  307. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
  308. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -1
  309. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  310. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
  311. package/dist/esm/components/Logo/Logo.mjs.map +1 -1
  312. package/dist/esm/components/Logo/LogoTextOnly.mjs.map +1 -1
  313. package/dist/esm/components/Logo/LogoWithText.mjs.map +1 -1
  314. package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
  315. package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs.map +1 -1
  316. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  317. package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
  318. package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
  319. package/dist/esm/components/Modal/Modal.mjs +2 -2
  320. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  321. package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
  322. package/dist/esm/components/Navbar/DesktopNavbar.mjs.map +1 -1
  323. package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -1
  324. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  325. package/dist/esm/components/Navbar/index.mjs.map +1 -1
  326. package/dist/esm/components/Navbar/useNavigation.mjs.map +1 -1
  327. package/dist/esm/components/Pagination/NumberItemsSelector.mjs.map +1 -1
  328. package/dist/esm/components/Pagination/Pagination.mjs +1 -1
  329. package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
  330. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
  331. package/dist/esm/components/Pagination/pagination.content.mjs.map +1 -1
  332. package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
  333. package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
  334. package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
  335. package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
  336. package/dist/esm/components/Popover/static.mjs.map +1 -1
  337. package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
  338. package/dist/esm/components/RightDrawer/RightDrawer.mjs +3 -3
  339. package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
  340. package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs.map +1 -1
  341. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -1
  342. package/dist/esm/components/RightDrawer/useRightDrawer.mjs.map +1 -1
  343. package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
  344. package/dist/esm/components/Select/Select.mjs.map +1 -1
  345. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs.map +1 -1
  346. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs.map +1 -1
  347. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs.map +1 -1
  348. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs.map +1 -1
  349. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs.map +1 -1
  350. package/dist/esm/components/SocialNetworks/XLogo.mjs.map +1 -1
  351. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs.map +1 -1
  352. package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
  353. package/dist/esm/components/SwitchSelector/SwitchSelector.mjs +2 -0
  354. package/dist/esm/components/SwitchSelector/SwitchSelector.mjs.map +1 -1
  355. package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs.map +1 -1
  356. package/dist/esm/components/SwitchSelector/useSwitchSelector.mjs.map +1 -1
  357. package/dist/esm/components/Tab/Tab.mjs +1 -1
  358. package/dist/esm/components/Tab/Tab.mjs.map +1 -1
  359. package/dist/esm/components/Tab/TabContext.mjs.map +1 -1
  360. package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
  361. package/dist/esm/components/Table/ExpandButton.mjs.map +1 -1
  362. package/dist/esm/components/Table/SmartTable.mjs.map +1 -1
  363. package/dist/esm/components/Table/Table.mjs.map +1 -1
  364. package/dist/esm/components/Table/TableElements.mjs.map +1 -1
  365. package/dist/esm/components/Table/table.content.mjs.map +1 -1
  366. package/dist/esm/components/Table/useTableWidths.mjs.map +1 -1
  367. package/dist/esm/components/Tag/index.mjs.map +1 -1
  368. package/dist/esm/components/TechLogo/TechLogo.mjs.map +1 -1
  369. package/dist/esm/components/TechLogo/logos/Adonis.mjs.map +1 -1
  370. package/dist/esm/components/TechLogo/logos/Angular.mjs.map +1 -1
  371. package/dist/esm/components/TechLogo/logos/Anthropic.mjs.map +1 -1
  372. package/dist/esm/components/TechLogo/logos/Astro.mjs.map +1 -1
  373. package/dist/esm/components/TechLogo/logos/Atlassian.mjs.map +1 -1
  374. package/dist/esm/components/TechLogo/logos/Bitbucket.mjs.map +1 -1
  375. package/dist/esm/components/TechLogo/logos/ChatGPT.mjs.map +1 -1
  376. package/dist/esm/components/TechLogo/logos/Claude.mjs.map +1 -1
  377. package/dist/esm/components/TechLogo/logos/DeepSeek.mjs.map +1 -1
  378. package/dist/esm/components/TechLogo/logos/Express.mjs.map +1 -1
  379. package/dist/esm/components/TechLogo/logos/Fastify.mjs.map +1 -1
  380. package/dist/esm/components/TechLogo/logos/Gemini.mjs.map +1 -1
  381. package/dist/esm/components/TechLogo/logos/GitHub.mjs.map +1 -1
  382. package/dist/esm/components/TechLogo/logos/GitLab.mjs.map +1 -1
  383. package/dist/esm/components/TechLogo/logos/Google.mjs.map +1 -1
  384. package/dist/esm/components/TechLogo/logos/GoogleAI.mjs.map +1 -1
  385. package/dist/esm/components/TechLogo/logos/Grok.mjs.map +1 -1
  386. package/dist/esm/components/TechLogo/logos/Hono.mjs.map +1 -1
  387. package/dist/esm/components/TechLogo/logos/LinkedIn.mjs.map +1 -1
  388. package/dist/esm/components/TechLogo/logos/Lit.mjs.map +1 -1
  389. package/dist/esm/components/TechLogo/logos/Lynx.mjs.map +1 -1
  390. package/dist/esm/components/TechLogo/logos/Microsoft.mjs.map +1 -1
  391. package/dist/esm/components/TechLogo/logos/Mistral.mjs.map +1 -1
  392. package/dist/esm/components/TechLogo/logos/NestJS.mjs.map +1 -1
  393. package/dist/esm/components/TechLogo/logos/Nextjs.mjs.map +1 -1
  394. package/dist/esm/components/TechLogo/logos/Node.mjs.map +1 -1
  395. package/dist/esm/components/TechLogo/logos/Nuxt.mjs.map +1 -1
  396. package/dist/esm/components/TechLogo/logos/Ollama.mjs.map +1 -1
  397. package/dist/esm/components/TechLogo/logos/OpenAI.mjs.map +1 -1
  398. package/dist/esm/components/TechLogo/logos/Perplexity.mjs.map +1 -1
  399. package/dist/esm/components/TechLogo/logos/Preact.mjs.map +1 -1
  400. package/dist/esm/components/TechLogo/logos/Reactjs.mjs.map +1 -1
  401. package/dist/esm/components/TechLogo/logos/Solid.mjs.map +1 -1
  402. package/dist/esm/components/TechLogo/logos/Svelte.mjs.map +1 -1
  403. package/dist/esm/components/TechLogo/logos/Tanstack.mjs.map +1 -1
  404. package/dist/esm/components/TechLogo/logos/Vanilla.mjs.map +1 -1
  405. package/dist/esm/components/TechLogo/logos/Vitejs.mjs.map +1 -1
  406. package/dist/esm/components/TechLogo/logos/Vuejs.mjs.map +1 -1
  407. package/dist/esm/components/TechLogo/types.mjs.map +1 -1
  408. package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
  409. package/dist/esm/components/Terminal/terminal.content.mjs.map +1 -1
  410. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
  411. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  412. package/dist/esm/components/TextArea/ContentEditableTextArea.mjs.map +1 -1
  413. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  414. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  415. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
  416. package/dist/esm/components/ThemeSwitcherDropDown/types.mjs.map +1 -1
  417. package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
  418. package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
  419. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  420. package/dist/esm/components/WithResizer/index.mjs +27 -10
  421. package/dist/esm/components/WithResizer/index.mjs.map +1 -1
  422. package/dist/esm/components/index.mjs +2 -2
  423. package/dist/esm/hooks/index.mjs +11 -11
  424. package/dist/esm/hooks/reactQuery.mjs +9 -1
  425. package/dist/esm/hooks/reactQuery.mjs.map +1 -1
  426. package/dist/esm/hooks/useAuth/useAuth.mjs.map +1 -1
  427. package/dist/esm/hooks/useAuth/useOAuth2.mjs.map +1 -1
  428. package/dist/esm/hooks/useAuth/useSession.mjs.map +1 -1
  429. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  430. package/dist/esm/hooks/useGetElementById.mjs.map +1 -1
  431. package/dist/esm/hooks/useGetElementOrWindow.mjs.map +1 -1
  432. package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
  433. package/dist/esm/hooks/useIntlayerAPI.mjs.map +1 -1
  434. package/dist/esm/hooks/useIsDarkMode.mjs.map +1 -1
  435. package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
  436. package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
  437. package/dist/esm/hooks/useKeyboardDetector.mjs.map +1 -1
  438. package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
  439. package/dist/esm/hooks/useScreenWidth.mjs.map +1 -1
  440. package/dist/esm/hooks/useScrollBlockage/index.mjs.map +1 -1
  441. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs.map +1 -1
  442. package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
  443. package/dist/esm/hooks/useScrollY.mjs.map +1 -1
  444. package/dist/esm/hooks/useSearch.mjs.map +1 -1
  445. package/dist/esm/hooks/useUser/index.mjs.map +1 -1
  446. package/dist/esm/libs/auth.mjs.map +1 -1
  447. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  448. package/dist/esm/tailwind.config.mjs.map +1 -1
  449. package/dist/esm/utils/cn.mjs.map +1 -1
  450. package/dist/types/components/Accordion/Accordion.d.ts.map +1 -1
  451. package/dist/types/components/Avatar/image.d.ts.map +1 -1
  452. package/dist/types/components/Avatar/index.d.ts +2 -0
  453. package/dist/types/components/Avatar/index.d.ts.map +1 -1
  454. package/dist/types/components/Badge/index.d.ts +2 -3
  455. package/dist/types/components/Badge/index.d.ts.map +1 -1
  456. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +1 -3
  457. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  458. package/dist/types/components/Breadcrumb/index.d.ts +1 -2
  459. package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
  460. package/dist/types/components/Browser/Browser.content.d.ts +127 -9
  461. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  462. package/dist/types/components/Browser/Browser.d.ts +1 -2
  463. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  464. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts +5 -0
  465. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts.map +1 -0
  466. package/dist/types/components/Button/Button.d.ts +7 -7
  467. package/dist/types/components/Button/Button.d.ts.map +1 -1
  468. package/dist/types/components/Carousel/index.content.d.ts +3 -5
  469. package/dist/types/components/Carousel/index.content.d.ts.map +1 -1
  470. package/dist/types/components/Carousel/index.d.ts.map +1 -1
  471. package/dist/types/components/ClickOutsideDiv/index.d.ts.map +1 -1
  472. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +3 -4
  473. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  474. package/dist/types/components/Command/index.d.ts +15 -17
  475. package/dist/types/components/Command/index.d.ts.map +1 -1
  476. package/dist/types/components/Container/index.d.ts +8 -9
  477. package/dist/types/components/Container/index.d.ts.map +1 -1
  478. package/dist/types/components/ContentEditor/ContentEditor.d.ts.map +1 -1
  479. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  480. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts.map +1 -1
  481. package/dist/types/components/ContentSelector/ContentSelector.d.ts +1 -1
  482. package/dist/types/components/ContentSelector/ContentSelector.d.ts.map +1 -1
  483. package/dist/types/components/CopyButton/CopyButton.content.d.ts +1 -3
  484. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  485. package/dist/types/components/CopyButton/index.d.ts.map +1 -1
  486. package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
  487. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
  488. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts.map +1 -1
  489. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts.map +1 -1
  490. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts.map +1 -1
  491. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -1
  492. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts.map +1 -1
  493. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -1
  494. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts.map +1 -1
  495. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
  496. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -1
  497. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
  498. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -1
  499. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts.map +1 -1
  500. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -1
  501. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
  502. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  503. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts.map +1 -1
  504. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts +1 -1
  505. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts.map +1 -1
  506. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts.map +1 -1
  507. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -1
  508. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts.map +1 -1
  509. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
  510. package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts.map +1 -1
  511. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts +1 -3
  512. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts.map +1 -1
  513. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts +2 -3
  514. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  515. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  516. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +6 -8
  517. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  518. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +4 -6
  519. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  520. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  521. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +27 -29
  522. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  523. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +16 -18
  524. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  525. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  526. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts.map +1 -1
  527. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts.map +1 -1
  528. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
  529. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  530. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +10 -12
  531. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  532. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  533. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  534. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +16 -18
  535. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  536. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts.map +1 -1
  537. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  538. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +4 -6
  539. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  540. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
  541. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts.map +1 -1
  542. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +3 -5
  543. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts.map +1 -1
  544. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +2 -4
  545. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  546. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
  547. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +16 -18
  548. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  549. package/dist/types/components/DropDown/index.d.ts.map +1 -1
  550. package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  551. package/dist/types/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  552. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts.map +1 -1
  553. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
  554. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +1 -3
  555. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts.map +1 -1
  556. package/dist/types/components/Flags/Flag.d.ts.map +1 -1
  557. package/dist/types/components/Flags/flags.d.ts.map +1 -1
  558. package/dist/types/components/Footer/index.d.ts.map +1 -1
  559. package/dist/types/components/Form/Form.d.ts.map +1 -1
  560. package/dist/types/components/Form/FormBase.d.ts +2 -4
  561. package/dist/types/components/Form/FormBase.d.ts.map +1 -1
  562. package/dist/types/components/Form/FormField.d.ts +2 -4
  563. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  564. package/dist/types/components/Form/FormItem.d.ts +1 -2
  565. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  566. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
  567. package/dist/types/components/Form/elements/CheckboxElement.d.ts.map +1 -1
  568. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +1 -2
  569. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  570. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +1 -2
  571. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  572. package/dist/types/components/Form/elements/FormElement.d.ts +1 -2
  573. package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
  574. package/dist/types/components/Form/elements/FormElementWrapper.d.ts.map +1 -1
  575. package/dist/types/components/Form/elements/InputElement.d.ts.map +1 -1
  576. package/dist/types/components/Form/elements/InputPasswordElement.d.ts.map +1 -1
  577. package/dist/types/components/Form/elements/MultiselectElement.d.ts +1 -2
  578. package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  579. package/dist/types/components/Form/elements/OTPElement.d.ts +1 -2
  580. package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
  581. package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -1
  582. package/dist/types/components/Form/elements/SelectElement.d.ts +1 -2
  583. package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
  584. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +1 -2
  585. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
  586. package/dist/types/components/Form/elements/TextAreaElement.d.ts.map +1 -1
  587. package/dist/types/components/Form/layout/FormItemLayout.d.ts.map +1 -1
  588. package/dist/types/components/Form/layout/FormLabelLayout.d.ts.map +1 -1
  589. package/dist/types/components/Form/layout/RequiredStar.d.ts.map +1 -1
  590. package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
  591. package/dist/types/components/Headers/index.d.ts.map +1 -1
  592. package/dist/types/components/HeightResizer/index.d.ts.map +1 -1
  593. package/dist/types/components/HideShow/index.d.ts.map +1 -1
  594. package/dist/types/components/IDE/Code.d.ts.map +1 -1
  595. package/dist/types/components/IDE/CodeBlockClient.d.ts.map +1 -1
  596. package/dist/types/components/IDE/CodeBlockHighlight.d.ts +1 -2
  597. package/dist/types/components/IDE/CodeBlockHighlight.d.ts.map +1 -1
  598. package/dist/types/components/IDE/CodeBlockServer.d.ts.map +1 -1
  599. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  600. package/dist/types/components/IDE/CodeContext.d.ts +1 -2
  601. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  602. package/dist/types/components/IDE/CodeFormatSelector.d.ts.map +1 -1
  603. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts.map +1 -1
  604. package/dist/types/components/IDE/CopyCode.d.ts.map +1 -1
  605. package/dist/types/components/IDE/FileList.d.ts.map +1 -1
  606. package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
  607. package/dist/types/components/IDE/IDE.d.ts.map +1 -1
  608. package/dist/types/components/IDE/MarkDownRender.d.ts.map +1 -1
  609. package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
  610. package/dist/types/components/IDE/PackageManagerSelector.d.ts.map +1 -1
  611. package/dist/types/components/IDE/code.content.d.ts +2 -4
  612. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  613. package/dist/types/components/IDE/codeTransformer.d.ts.map +1 -1
  614. package/dist/types/components/IDE/copyCode.content.d.ts +2 -4
  615. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  616. package/dist/types/components/IDE/createFileTree.d.ts.map +1 -1
  617. package/dist/types/components/IDE/index.d.ts +1 -1
  618. package/dist/types/components/IDE/selectors.content.d.ts +6 -8
  619. package/dist/types/components/IDE/selectors.content.d.ts.map +1 -1
  620. package/dist/types/components/InformationTag/index.d.ts.map +1 -1
  621. package/dist/types/components/Input/Checkbox.d.ts +2 -3
  622. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  623. package/dist/types/components/Input/Input.d.ts +1 -2
  624. package/dist/types/components/Input/Input.d.ts.map +1 -1
  625. package/dist/types/components/Input/InputPassword.d.ts.map +1 -1
  626. package/dist/types/components/Input/OTPInput.d.ts +3 -6
  627. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  628. package/dist/types/components/Input/SearchInput.d.ts +1 -2
  629. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  630. package/dist/types/components/KeyboardScreenAdapter/index.d.ts.map +1 -1
  631. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts.map +1 -1
  632. package/dist/types/components/Label/index.d.ts.map +1 -1
  633. package/dist/types/components/LanguageBackground/index.d.ts.map +1 -1
  634. package/dist/types/components/Link/Link.d.ts +4 -5
  635. package/dist/types/components/Link/Link.d.ts.map +1 -1
  636. package/dist/types/components/Loader/index.content.d.ts +1 -3
  637. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  638. package/dist/types/components/Loader/index.d.ts.map +1 -1
  639. package/dist/types/components/Loader/spinner.d.ts +1 -2
  640. package/dist/types/components/Loader/spinner.d.ts.map +1 -1
  641. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
  642. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts.map +1 -1
  643. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +8 -10
  644. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  645. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
  646. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +6 -8
  647. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  648. package/dist/types/components/Logo/Logo.d.ts.map +1 -1
  649. package/dist/types/components/Logo/LogoWithTextBelow.d.ts.map +1 -1
  650. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts.map +1 -1
  651. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts +44 -45
  652. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  653. package/dist/types/components/MaxHeightSmoother/index.d.ts.map +1 -1
  654. package/dist/types/components/MaxWidthSmoother/index.d.ts +1 -2
  655. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  656. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  657. package/dist/types/components/Navbar/Burger.d.ts +1 -2
  658. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  659. package/dist/types/components/Navbar/DesktopNavbar.d.ts +1 -2
  660. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  661. package/dist/types/components/Navbar/MobileNavbar.d.ts +1 -2
  662. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  663. package/dist/types/components/Navbar/index.d.ts +1 -2
  664. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  665. package/dist/types/components/Navbar/useNavigation.d.ts.map +1 -1
  666. package/dist/types/components/Pagination/NumberItemsSelector.d.ts.map +1 -1
  667. package/dist/types/components/Pagination/Pagination.d.ts +2 -3
  668. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  669. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts.map +1 -1
  670. package/dist/types/components/Pagination/pagination.content.d.ts +5 -7
  671. package/dist/types/components/Pagination/pagination.content.d.ts.map +1 -1
  672. package/dist/types/components/Pattern/DotPattern.d.ts.map +1 -1
  673. package/dist/types/components/Pattern/GridPattern.d.ts.map +1 -1
  674. package/dist/types/components/Pattern/SpotLight.d.ts.map +1 -1
  675. package/dist/types/components/Popover/dynamic.d.ts.map +1 -1
  676. package/dist/types/components/Popover/static.d.ts +3 -2
  677. package/dist/types/components/Popover/static.d.ts.map +1 -1
  678. package/dist/types/components/PressableSpan/PressableSpan.d.ts.map +1 -1
  679. package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  680. package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts.map +1 -1
  681. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +2 -4
  682. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -1
  683. package/dist/types/components/RightDrawer/useRightDrawer.d.ts.map +1 -1
  684. package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
  685. package/dist/types/components/Select/Select.d.ts +2 -3
  686. package/dist/types/components/Select/Select.d.ts.map +1 -1
  687. package/dist/types/components/SocialNetworks/index.d.ts +1 -2
  688. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  689. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +8 -9
  690. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
  691. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +4 -6
  692. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts.map +1 -1
  693. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts +3 -4
  694. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts.map +1 -1
  695. package/dist/types/components/Tab/Tab.d.ts +3 -5
  696. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  697. package/dist/types/components/Tab/TabContext.d.ts +1 -2
  698. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  699. package/dist/types/components/TabSelector/TabSelector.d.ts +3 -5
  700. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  701. package/dist/types/components/Table/ExpandButton.d.ts.map +1 -1
  702. package/dist/types/components/Table/SmartTable.d.ts.map +1 -1
  703. package/dist/types/components/Table/Table.d.ts +1 -2
  704. package/dist/types/components/Table/Table.d.ts.map +1 -1
  705. package/dist/types/components/Table/TableElements.d.ts +4 -5
  706. package/dist/types/components/Table/TableElements.d.ts.map +1 -1
  707. package/dist/types/components/Table/table.content.d.ts +2 -4
  708. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  709. package/dist/types/components/Tag/index.d.ts +3 -4
  710. package/dist/types/components/Tag/index.d.ts.map +1 -1
  711. package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
  712. package/dist/types/components/TechLogo/logos/Lit.d.ts +1 -2
  713. package/dist/types/components/TechLogo/logos/Lit.d.ts.map +1 -1
  714. package/dist/types/components/TechLogo/logos/Vanilla.d.ts +1 -2
  715. package/dist/types/components/TechLogo/logos/Vanilla.d.ts.map +1 -1
  716. package/dist/types/components/Terminal/Terminal.d.ts.map +1 -1
  717. package/dist/types/components/Terminal/terminal.content.d.ts +2 -4
  718. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  719. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts.map +1 -1
  720. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
  721. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts +1 -2
  722. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -1
  723. package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
  724. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts.map +1 -1
  725. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts.map +1 -1
  726. package/dist/types/components/Toaster/Toast.d.ts +1 -2
  727. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  728. package/dist/types/components/Toaster/Toaster.d.ts +1 -3
  729. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  730. package/dist/types/components/Toaster/useToast.d.ts.map +1 -1
  731. package/dist/types/components/WithResizer/index.d.ts +5 -1
  732. package/dist/types/components/WithResizer/index.d.ts.map +1 -1
  733. package/dist/types/components/index.d.ts +1 -1
  734. package/dist/types/hooks/index.d.ts +2 -2
  735. package/dist/types/hooks/reactQuery.d.ts +2 -1
  736. package/dist/types/hooks/reactQuery.d.ts.map +1 -1
  737. package/dist/types/hooks/useAuth/useOAuth2.d.ts.map +1 -1
  738. package/dist/types/hooks/useDevice.d.ts.map +1 -1
  739. package/dist/types/hooks/useGetElementById.d.ts.map +1 -1
  740. package/dist/types/hooks/useGetElementOrWindow.d.ts.map +1 -1
  741. package/dist/types/hooks/useHorizontalSwipe.d.ts.map +1 -1
  742. package/dist/types/hooks/useIntlayerAPI.d.ts.map +1 -1
  743. package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
  744. package/dist/types/hooks/useScrollBlockage/index.d.ts.map +1 -1
  745. package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts.map +1 -1
  746. package/dist/types/hooks/useScrollDetection.d.ts.map +1 -1
  747. package/dist/types/hooks/useScrollY.d.ts.map +1 -1
  748. package/dist/types/hooks/useSearch.d.ts.map +1 -1
  749. package/dist/types/hooks/useUser/index.d.ts +1 -3
  750. package/dist/types/hooks/useUser/index.d.ts.map +1 -1
  751. package/dist/types/libs/auth.d.ts.map +1 -1
  752. package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
  753. package/dist/types/routes.d.ts.map +1 -1
  754. package/dist/types/utils/cn.d.ts.map +1 -1
  755. package/package.json +17 -17
  756. package/tailwind.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DictionaryFieldEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx"],"sourcesContent":["'use client';\n\nimport { Container } from '@components/Container';\nimport { CopyToClipboard } from '@components/CopyToClipboard';\nimport {\n useConfiguration,\n useDictionariesRecordActions,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport { ArrowLeft } from 'lucide-react';\nimport { type FC, useEffect, useState } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button, ButtonColor, ButtonVariant } from '../Button';\nimport { LocaleSwitcherContentProvider } from '../LocaleSwitcherContentDropDown';\nimport { TabSelector, TabSelectorColor } from '../TabSelector';\nimport { ContentEditor } from './ContentEditor';\nimport { DictionaryDetailsForm } from './DictionaryDetails/DictionaryDetailsForm';\nimport { JSONEditor } from './JSONEditor';\nimport { SaveForm } from './SaveForm/SaveForm';\nimport { StructureEditor } from './StructureEditor';\n\ntype DictionaryFieldEditorProps = {\n dictionary: Dictionary;\n onClickDictionaryList?: () => void;\n onDelete?: () => void;\n onSave?: () => void;\n isDarkMode?: boolean;\n mode: ('local' | 'remote')[];\n showReturnButton?: boolean;\n};\n\nexport const DictionaryFieldEditor: FC<DictionaryFieldEditorProps> = ({\n dictionary,\n onClickDictionaryList,\n isDarkMode,\n mode,\n onDelete,\n onSave,\n showReturnButton = true,\n}) => {\n const config = useConfiguration();\n const { returnToDictionaryList } = useIntlayer('dictionary-field-editor');\n const { focusedContent, setFocusedContent } = useFocusUnmergedDictionary();\n const { setLocaleDictionary } = useDictionariesRecordActions();\n const [activeTab, setActiveTab] = useState<string>('content');\n\n useEffect(() => {\n setFocusedContent({\n ...(focusedContent ?? {}),\n dictionaryKey: dictionary.key,\n dictionaryLocalId: dictionary.localId,\n });\n setLocaleDictionary(dictionary);\n }, []);\n\n return (\n <LocaleSwitcherContentProvider\n availableLocales={config?.internationalization?.locales ?? []}\n >\n <div className=\"relative flex h-full min-h-0 w-full flex-1 flex-col md:overflow-hidden\">\n {showReturnButton && (\n <Button\n onClick={onClickDictionaryList}\n variant={ButtonVariant.HOVERABLE}\n className=\"z-10 mr-auto mb-6 ml-5 shrink-0\"\n color={ButtonColor.TEXT}\n Icon={ArrowLeft}\n label={returnToDictionaryList.label.value}\n >\n {returnToDictionaryList.text}\n </Button>\n )}\n\n <div className=\"mb-22 flex min-h-0 flex-1 flex-col overflow-hidden\">\n {/* Tab headers */}\n <div className=\"sticky top-0 z-10 flex shrink-0 gap-3 rounded-xl bg-background/20 p-3 pb-4\">\n <TabSelector\n selectedChoice={activeTab}\n tabs={[\n ...(mode.includes('remote')\n ? [\n <button\n key=\"details\"\n className=\"cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none\"\n data-active={activeTab === 'details'}\n onClick={() => setActiveTab('details')}\n type=\"button\"\n >\n Details\n </button>,\n ]\n : []),\n <button\n key=\"structure\"\n className=\"cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none\"\n data-active={activeTab === 'structure'}\n onClick={() => setActiveTab('structure')}\n type=\"button\"\n >\n Structure\n </button>,\n <button\n key=\"content\"\n className=\"cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none\"\n data-active={activeTab === 'content'}\n onClick={() => setActiveTab('content')}\n type=\"button\"\n >\n Content\n </button>,\n <button\n key=\"json\"\n className=\"cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none\"\n data-active={activeTab === 'json'}\n onClick={() => setActiveTab('json')}\n type=\"button\"\n >\n JSON\n </button>,\n ]}\n hoverable\n color={TabSelectorColor.TEXT}\n />\n </div>\n {/* Tab content — only active panel is mounted */}\n <div className=\"min-h-0 flex-1 overflow-y-auto p-6\">\n <div className=\"flex w-full min-w-0 flex-col items-stretch gap-6\">\n {mode.includes('remote') && activeTab === 'details' && (\n <DictionaryDetailsForm dictionary={dictionary} mode={mode} />\n )}\n {activeTab === 'structure' && (\n <StructureEditor dictionary={dictionary} />\n )}\n {activeTab === 'content' && (\n <ContentEditor\n dictionary={dictionary}\n isDarkMode={isDarkMode}\n />\n )}\n {activeTab === 'json' && (\n <JSONEditor dictionary={dictionary} isDarkMode={isDarkMode} />\n )}\n </div>\n </div>\n </div>\n\n <div className=\"absolute bottom-3 z-20 w-full p-2\">\n <Container\n color=\"card\"\n roundedSize=\"2xl\"\n padding=\"sm\"\n className=\"w-full shrink-0 flex-row flex-wrap items-center justify-end gap-10 bg-background/20 md:bottom-0\"\n >\n <CopyToClipboard\n text={dictionary.id!}\n className=\"text-nowrap text-neutral text-sm\"\n size={9}\n >\n {dictionary.id}\n </CopyToClipboard>\n <SaveForm\n dictionary={dictionary}\n mode={mode}\n onDelete={() => {\n setFocusedContent(null);\n onDelete?.();\n }}\n onSave={onSave}\n />\n </Container>\n </div>\n </div>\n </LocaleSwitcherContentProvider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgCA,MAAa,yBAAyD,EACpE,YACA,uBACA,YACA,MACA,UACA,QACA,mBAAmB,WACf;CACJ,MAAM,SAAS,kBAAkB;CACjC,MAAM,EAAE,2BAA2B,YAAY,0BAA0B;CACzE,MAAM,EAAE,gBAAgB,sBAAsB,4BAA4B;CAC1E,MAAM,EAAE,wBAAwB,8BAA8B;CAC9D,MAAM,CAAC,WAAW,gBAAgB,SAAiB,UAAU;CAE7D,gBAAgB;EACd,kBAAkB;GAChB,GAAI,kBAAkB,EAAE;GACxB,eAAe,WAAW;GAC1B,mBAAmB,WAAW;GAC/B,CAAC;EACF,oBAAoB,WAAW;IAC9B,EAAE,CAAC;CAEN,OACE,oBAAC,+BAAD;EACE,kBAAkB,QAAQ,sBAAsB,WAAW,EAAE;YAE7D,qBAAC,OAAD;GAAK,WAAU;aAAf;IACG,oBACC,oBAAC,QAAD;KACE,SAAS;KACT;KACA,WAAU;KACV;KACA,MAAM;KACN,OAAO,uBAAuB,MAAM;eAEnC,uBAAuB;KACjB;IAGX,qBAAC,OAAD;KAAK,WAAU;eAAf,CAEE,oBAAC,OAAD;MAAK,WAAU;gBACb,oBAAC,aAAD;OACE,gBAAgB;OAChB,MAAM;QACJ,GAAI,KAAK,SAAS,SAAS,GACvB,CACE,oBAAC,UAAD;SAEE,WAAU;SACV,eAAa,cAAc;SAC3B,eAAe,aAAa,UAAU;SACtC,MAAK;mBACN;SAEQ,EAPH,UAOG,CACV,GACD,EAAE;QACN,oBAAC,UAAD;SAEE,WAAU;SACV,eAAa,cAAc;SAC3B,eAAe,aAAa,YAAY;SACxC,MAAK;mBACN;SAEQ,EAPH,YAOG;QACT,oBAAC,UAAD;SAEE,WAAU;SACV,eAAa,cAAc;SAC3B,eAAe,aAAa,UAAU;SACtC,MAAK;mBACN;SAEQ,EAPH,UAOG;QACT,oBAAC,UAAD;SAEE,WAAU;SACV,eAAa,cAAc;SAC3B,eAAe,aAAa,OAAO;SACnC,MAAK;mBACN;SAEQ,EAPH,OAOG;QACV;OACD;OACA;OACA;MACE,GAEN,oBAAC,OAAD;MAAK,WAAU;gBACb,qBAAC,OAAD;OAAK,WAAU;iBAAf;QACG,KAAK,SAAS,SAAS,IAAI,cAAc,aACxC,oBAAC,uBAAD;SAAmC;SAAkB;SAAQ;QAE9D,cAAc,eACb,oBAAC,iBAAD,EAA6B,YAAc;QAE5C,cAAc,aACb,oBAAC,eAAD;SACc;SACA;SACZ;QAEH,cAAc,UACb,oBAAC,YAAD;SAAwB;SAAwB;SAAc;QAE5D;;MACF,EACF;;IAEN,oBAAC,OAAD;KAAK,WAAU;eACb,qBAAC,WAAD;MACE,OAAM;MACN,aAAY;MACZ,SAAQ;MACR,WAAU;gBAJZ,CAME,oBAAC,iBAAD;OACE,MAAM,WAAW;OACjB,WAAU;OACV,MAAM;iBAEL,WAAW;OACI,GAClB,oBAAC,UAAD;OACc;OACN;OACN,gBAAgB;QACd,kBAAkB,KAAK;QACvB,YAAY;;OAEN;OACR,EACQ;;KACR;IACF;;EACwB"}
1
+ {"version":3,"file":"DictionaryFieldEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx"],"sourcesContent":["'use client';\n\nimport { Container } from '@components/Container';\nimport { CopyToClipboard } from '@components/CopyToClipboard';\nimport {\n useConfiguration,\n useDictionariesRecordActions,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport { ArrowLeft } from 'lucide-react';\nimport { type FC, useEffect, useState } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button, ButtonColor, ButtonVariant } from '../Button';\nimport { LocaleSwitcherContentProvider } from '../LocaleSwitcherContentDropDown';\nimport { TabSelector, TabSelectorColor } from '../TabSelector';\nimport { ContentEditor } from './ContentEditor';\nimport { DictionaryDetailsForm } from './DictionaryDetails/DictionaryDetailsForm';\nimport { JSONEditor } from './JSONEditor';\nimport { SaveForm } from './SaveForm/SaveForm';\nimport { StructureEditor } from './StructureEditor';\n\ntype DictionaryFieldEditorProps = {\n dictionary: Dictionary;\n onClickDictionaryList?: () => void;\n onDelete?: () => void;\n onSave?: () => void;\n isDarkMode?: boolean;\n mode: ('local' | 'remote')[];\n showReturnButton?: boolean;\n};\n\nexport const DictionaryFieldEditor: FC<DictionaryFieldEditorProps> = ({\n dictionary,\n onClickDictionaryList,\n isDarkMode,\n mode,\n onDelete,\n onSave,\n showReturnButton = true,\n}) => {\n const config = useConfiguration();\n const { returnToDictionaryList } = useIntlayer('dictionary-field-editor');\n const { focusedContent, setFocusedContent } = useFocusUnmergedDictionary();\n const { setLocaleDictionary } = useDictionariesRecordActions();\n const [activeTab, setActiveTab] = useState<string>('content');\n\n useEffect(() => {\n setFocusedContent({\n ...(focusedContent ?? {}),\n dictionaryKey: dictionary.key,\n dictionaryLocalId: dictionary.localId,\n });\n setLocaleDictionary(dictionary);\n }, []);\n\n return (\n <LocaleSwitcherContentProvider\n availableLocales={config?.internationalization?.locales ?? []}\n >\n <div className=\"relative flex h-full min-h-0 w-full flex-1 flex-col md:overflow-hidden\">\n {showReturnButton && (\n <Button\n onClick={onClickDictionaryList}\n variant={ButtonVariant.HOVERABLE}\n className=\"z-10 mr-auto mb-6 ml-5 shrink-0\"\n color={ButtonColor.TEXT}\n Icon={ArrowLeft}\n label={returnToDictionaryList.label.value}\n >\n {returnToDictionaryList.text}\n </Button>\n )}\n\n <div className=\"mb-22 flex min-h-0 flex-1 flex-col overflow-hidden\">\n {/* Tab headers */}\n <div className=\"sticky top-0 z-10 flex shrink-0 gap-3 rounded-xl bg-background/20 p-3 pb-4\">\n <TabSelector\n selectedChoice={activeTab}\n tabs={[\n ...(mode.includes('remote')\n ? [\n <button\n key=\"details\"\n className=\"cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none\"\n data-active={activeTab === 'details'}\n onClick={() => setActiveTab('details')}\n type=\"button\"\n >\n Details\n </button>,\n ]\n : []),\n <button\n key=\"structure\"\n className=\"cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none\"\n data-active={activeTab === 'structure'}\n onClick={() => setActiveTab('structure')}\n type=\"button\"\n >\n Structure\n </button>,\n <button\n key=\"content\"\n className=\"cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none\"\n data-active={activeTab === 'content'}\n onClick={() => setActiveTab('content')}\n type=\"button\"\n >\n Content\n </button>,\n <button\n key=\"json\"\n className=\"cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none\"\n data-active={activeTab === 'json'}\n onClick={() => setActiveTab('json')}\n type=\"button\"\n >\n JSON\n </button>,\n ]}\n hoverable\n color={TabSelectorColor.TEXT}\n />\n </div>\n {/* Tab content — only active panel is mounted */}\n <div className=\"min-h-0 flex-1 overflow-y-auto p-6\">\n <div className=\"flex w-full min-w-0 flex-col items-stretch gap-6\">\n {mode.includes('remote') && activeTab === 'details' && (\n <DictionaryDetailsForm dictionary={dictionary} mode={mode} />\n )}\n {activeTab === 'structure' && (\n <StructureEditor dictionary={dictionary} />\n )}\n {activeTab === 'content' && (\n <ContentEditor\n dictionary={dictionary}\n isDarkMode={isDarkMode}\n />\n )}\n {activeTab === 'json' && (\n <JSONEditor dictionary={dictionary} isDarkMode={isDarkMode} />\n )}\n </div>\n </div>\n </div>\n\n <div className=\"absolute bottom-3 z-20 w-full p-2\">\n <Container\n color=\"card\"\n roundedSize=\"2xl\"\n padding=\"sm\"\n className=\"w-full shrink-0 flex-row flex-wrap items-center justify-end gap-10 bg-background/20 md:bottom-0\"\n >\n <CopyToClipboard\n text={dictionary.id!}\n className=\"text-nowrap text-neutral text-sm\"\n size={9}\n >\n {dictionary.id}\n </CopyToClipboard>\n <SaveForm\n dictionary={dictionary}\n mode={mode}\n onDelete={() => {\n setFocusedContent(null);\n onDelete?.();\n }}\n onSave={onSave}\n />\n </Container>\n </div>\n </div>\n </LocaleSwitcherContentProvider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgCA,MAAa,yBAAyD,EACpE,YACA,uBACA,YACA,MACA,UACA,QACA,mBAAmB,WACf;CACJ,MAAM,SAAS,iBAAiB;CAChC,MAAM,EAAE,2BAA2B,YAAY,yBAAyB;CACxE,MAAM,EAAE,gBAAgB,sBAAsB,2BAA2B;CACzE,MAAM,EAAE,wBAAwB,6BAA6B;CAC7D,MAAM,CAAC,WAAW,gBAAgB,SAAiB,SAAS;CAE5D,gBAAgB;EACd,kBAAkB;GAChB,GAAI,kBAAkB,CAAC;GACvB,eAAe,WAAW;GAC1B,mBAAmB,WAAW;EAChC,CAAC;EACD,oBAAoB,UAAU;CAChC,GAAG,CAAC,CAAC;CAEL,OACE,oBAAC,+BAAD;EACE,kBAAkB,QAAQ,sBAAsB,WAAW,CAAC;YAE5D,qBAAC,OAAD;GAAK,WAAU;aAAf;IACG,oBACC,oBAAC,QAAD;KACE,SAAS;KACT;KACA,WAAU;KACV;KACA,MAAM;KACN,OAAO,uBAAuB,MAAM;eAEnC,uBAAuB;IAClB;IAGV,qBAAC,OAAD;KAAK,WAAU;eAAf,CAEE,oBAAC,OAAD;MAAK,WAAU;gBACb,oBAAC,aAAD;OACE,gBAAgB;OAChB,MAAM;QACJ,GAAI,KAAK,SAAS,QAAQ,IACtB,CACE,oBAAC,UAAD;SAEE,WAAU;SACV,eAAa,cAAc;SAC3B,eAAe,aAAa,SAAS;SACrC,MAAK;mBACN;QAEO,GAPF,SAOE,CACV,IACA,CAAC;QACL,oBAAC,UAAD;SAEE,WAAU;SACV,eAAa,cAAc;SAC3B,eAAe,aAAa,WAAW;SACvC,MAAK;mBACN;QAEO,GAPF,WAOE;QACR,oBAAC,UAAD;SAEE,WAAU;SACV,eAAa,cAAc;SAC3B,eAAe,aAAa,SAAS;SACrC,MAAK;mBACN;QAEO,GAPF,SAOE;QACR,oBAAC,UAAD;SAEE,WAAU;SACV,eAAa,cAAc;SAC3B,eAAe,aAAa,MAAM;SAClC,MAAK;mBACN;QAEO,GAPF,MAOE;OACV;OACA;OACA;MACD;KACE,IAEL,oBAAC,OAAD;MAAK,WAAU;gBACb,qBAAC,OAAD;OAAK,WAAU;iBAAf;QACG,KAAK,SAAS,QAAQ,KAAK,cAAc,aACxC,oBAAC,uBAAD;SAAmC;SAAkB;QAAO;QAE7D,cAAc,eACb,oBAAC,iBAAD,EAA6B,WAAa;QAE3C,cAAc,aACb,oBAAC,eAAD;SACc;SACA;QACb;QAEF,cAAc,UACb,oBAAC,YAAD;SAAwB;SAAwB;QAAa;OAE5D;;KACF,EACF;;IAEL,oBAAC,OAAD;KAAK,WAAU;eACb,qBAAC,WAAD;MACE,OAAM;MACN,aAAY;MACZ,SAAQ;MACR,WAAU;gBAJZ,CAME,oBAAC,iBAAD;OACE,MAAM,WAAW;OACjB,WAAU;OACV,MAAM;iBAEL,WAAW;MACG,IACjB,oBAAC,UAAD;OACc;OACN;OACN,gBAAgB;QACd,kBAAkB,IAAI;QACtB,WAAW;OACb;OACQ;MACT,EACQ;;IACR;GACF;;CACwB;AAEnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnumKeyInput.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/EnumKeyInput.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, useEffect, useMemo, useState } from 'react';\nimport { Input } from '../Input';\nimport { Select } from '../Select';\n\nconst extractInitialState = (\n value: string | number\n): { comparator: string | undefined; numberValue: string | undefined } => {\n let comparator: string | undefined;\n let numberValue: string | undefined;\n\n if (typeof value === 'number' || !Number.isNaN(Number(value))) {\n // If value is a number or numeric string, set comparator to '=' and numberValue accordingly\n comparator = '=';\n numberValue = value.toString();\n } else if (typeof value === 'string') {\n // Define possible comparators\n const comparators = ['<=', '>=', '<', '>', '='];\n // Find the comparator that matches the start of the string\n const matchedComparator = comparators.find((comp) =>\n value.startsWith(comp)\n );\n if (matchedComparator) {\n comparator = matchedComparator;\n numberValue = value.slice(matchedComparator.length);\n }\n }\n\n return { comparator, numberValue };\n};\n\ntype EnumKeyInputProps = {\n value: string | number;\n onChange: (value: string) => void;\n};\n\n/**\n * Example of values:\n * - `<1`\n * - `>-44.3`\n * - `=999`\n * - `<=1`\n * - `>=1`\n * - 88\n * - `-1`\n *\n */\nexport const EnumKeyInput: FC<EnumKeyInputProps> = ({ value, onChange }) => {\n const { comparator: initialComparator, numberValue: initialNumberValue } =\n useMemo(() => extractInitialState(value), [value]);\n const [comparator, setComparator] = useState<string | null>(\n initialComparator ?? null\n );\n const [numberValue, setNumberValue] = useState<string | null>(\n initialNumberValue ?? null\n );\n\n useEffect(() => {\n if (\n comparator &&\n numberValue &&\n (comparator !== initialComparator || numberValue !== initialNumberValue)\n ) {\n const newValue = `${comparator}${numberValue}`;\n\n onChange(newValue);\n }\n }, [\n comparator,\n initialComparator,\n initialNumberValue,\n numberValue,\n onChange,\n ]);\n\n return (\n <div className=\"flex gap-1\">\n <Select onValueChange={setComparator} defaultValue={initialComparator}>\n <Select.Trigger className=\"w-20\">\n <Select.Value placeholder=\"Select a comparator\" />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"<\">{`<`}</Select.Item>\n <Select.Item value=\"<=\">{`<=`}</Select.Item>\n <Select.Item value=\"=\">{`=`}</Select.Item>\n <Select.Item value=\">=\">{`>=`}</Select.Item>\n <Select.Item value=\">\">{`>`}</Select.Item>\n </Select.Content>\n </Select>\n <Input\n type=\"number\"\n aria-label=\"Quantity\"\n defaultValue={numberValue ?? undefined}\n onChange={(e) => setNumberValue(e.target.value)}\n className=\"min-w-4\"\n />\n </div>\n );\n};\n"],"mappings":";;;;;;;;AAMA,MAAM,uBACJ,UACwE;CACxE,IAAI;CACJ,IAAI;CAEJ,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,OAAO,MAAM,CAAC,EAAE;EAE7D,aAAa;EACb,cAAc,MAAM,UAAU;QACzB,IAAI,OAAO,UAAU,UAAU;EAIpC,MAAM,oBAAoB;GAFL;GAAM;GAAM;GAAK;GAAK;GAEN,CAAC,MAAM,SAC1C,MAAM,WAAW,KAAK,CACvB;EACD,IAAI,mBAAmB;GACrB,aAAa;GACb,cAAc,MAAM,MAAM,kBAAkB,OAAO;;;CAIvD,OAAO;EAAE;EAAY;EAAa;;;;;;;;;;;;;AAmBpC,MAAa,gBAAuC,EAAE,OAAO,eAAe;CAC1E,MAAM,EAAE,YAAY,mBAAmB,aAAa,uBAClD,cAAc,oBAAoB,MAAM,EAAE,CAAC,MAAM,CAAC;CACpD,MAAM,CAAC,YAAY,iBAAiB,SAClC,qBAAqB,KACtB;CACD,MAAM,CAAC,aAAa,kBAAkB,SACpC,sBAAsB,KACvB;CAED,gBAAgB;EACd,IACE,cACA,gBACC,eAAe,qBAAqB,gBAAgB,qBAIrD,SAAS,GAFW,aAAa,cAEf;IAEnB;EACD;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,QAAD;GAAQ,eAAe;GAAe,cAAc;aAApD,CACE,oBAAC,OAAO,SAAR;IAAgB,WAAU;cACxB,oBAAC,OAAO,OAAR,EAAc,aAAY,uBAAwB;IACnC,GACjB,qBAAC,OAAO,SAAR;IACE,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAK;KAAkB;IAC1C,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAM;KAAmB;IAC5C,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAK;KAAkB;IAC1C,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAM;KAAmB;IAC5C,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAK;KAAkB;IAC3B,IACV;MACT,oBAAC,OAAD;GACE,MAAK;GACL,cAAW;GACX,cAAc,eAAe;GAC7B,WAAW,MAAM,eAAe,EAAE,OAAO,MAAM;GAC/C,WAAU;GACV,EACE"}
1
+ {"version":3,"file":"EnumKeyInput.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/EnumKeyInput.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, useEffect, useMemo, useState } from 'react';\nimport { Input } from '../Input';\nimport { Select } from '../Select';\n\nconst extractInitialState = (\n value: string | number\n): { comparator: string | undefined; numberValue: string | undefined } => {\n let comparator: string | undefined;\n let numberValue: string | undefined;\n\n if (typeof value === 'number' || !Number.isNaN(Number(value))) {\n // If value is a number or numeric string, set comparator to '=' and numberValue accordingly\n comparator = '=';\n numberValue = value.toString();\n } else if (typeof value === 'string') {\n // Define possible comparators\n const comparators = ['<=', '>=', '<', '>', '='];\n // Find the comparator that matches the start of the string\n const matchedComparator = comparators.find((comp) =>\n value.startsWith(comp)\n );\n if (matchedComparator) {\n comparator = matchedComparator;\n numberValue = value.slice(matchedComparator.length);\n }\n }\n\n return { comparator, numberValue };\n};\n\ntype EnumKeyInputProps = {\n value: string | number;\n onChange: (value: string) => void;\n};\n\n/**\n * Example of values:\n * - `<1`\n * - `>-44.3`\n * - `=999`\n * - `<=1`\n * - `>=1`\n * - 88\n * - `-1`\n *\n */\nexport const EnumKeyInput: FC<EnumKeyInputProps> = ({ value, onChange }) => {\n const { comparator: initialComparator, numberValue: initialNumberValue } =\n useMemo(() => extractInitialState(value), [value]);\n const [comparator, setComparator] = useState<string | null>(\n initialComparator ?? null\n );\n const [numberValue, setNumberValue] = useState<string | null>(\n initialNumberValue ?? null\n );\n\n useEffect(() => {\n if (\n comparator &&\n numberValue &&\n (comparator !== initialComparator || numberValue !== initialNumberValue)\n ) {\n const newValue = `${comparator}${numberValue}`;\n\n onChange(newValue);\n }\n }, [\n comparator,\n initialComparator,\n initialNumberValue,\n numberValue,\n onChange,\n ]);\n\n return (\n <div className=\"flex gap-1\">\n <Select onValueChange={setComparator} defaultValue={initialComparator}>\n <Select.Trigger className=\"w-20\">\n <Select.Value placeholder=\"Select a comparator\" />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"<\">{`<`}</Select.Item>\n <Select.Item value=\"<=\">{`<=`}</Select.Item>\n <Select.Item value=\"=\">{`=`}</Select.Item>\n <Select.Item value=\">=\">{`>=`}</Select.Item>\n <Select.Item value=\">\">{`>`}</Select.Item>\n </Select.Content>\n </Select>\n <Input\n type=\"number\"\n aria-label=\"Quantity\"\n defaultValue={numberValue ?? undefined}\n onChange={(e) => setNumberValue(e.target.value)}\n className=\"min-w-4\"\n />\n </div>\n );\n};\n"],"mappings":";;;;;;;;AAMA,MAAM,uBACJ,UACwE;CACxE,IAAI;CACJ,IAAI;CAEJ,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,OAAO,KAAK,CAAC,GAAG;EAE7D,aAAa;EACb,cAAc,MAAM,SAAS;CAC/B,OAAO,IAAI,OAAO,UAAU,UAAU;EAIpC,MAAM,oBAAoB;GAFL;GAAM;GAAM;GAAK;GAAK;EAEP,EAAE,MAAM,SAC1C,MAAM,WAAW,IAAI,CACvB;EACA,IAAI,mBAAmB;GACrB,aAAa;GACb,cAAc,MAAM,MAAM,kBAAkB,MAAM;EACpD;CACF;CAEA,OAAO;EAAE;EAAY;CAAY;AACnC;;;;;;;;;;;;AAkBA,MAAa,gBAAuC,EAAE,OAAO,eAAe;CAC1E,MAAM,EAAE,YAAY,mBAAmB,aAAa,uBAClD,cAAc,oBAAoB,KAAK,GAAG,CAAC,KAAK,CAAC;CACnD,MAAM,CAAC,YAAY,iBAAiB,SAClC,qBAAqB,IACvB;CACA,MAAM,CAAC,aAAa,kBAAkB,SACpC,sBAAsB,IACxB;CAEA,gBAAgB;EACd,IACE,cACA,gBACC,eAAe,qBAAqB,gBAAgB,qBAIrD,SAAS,GAFW,aAAa,aAEhB;CAErB,GAAG;EACD;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,QAAD;GAAQ,eAAe;GAAe,cAAc;aAApD,CACE,oBAAC,OAAO,SAAR;IAAgB,WAAU;cACxB,oBAAC,OAAO,OAAR,EAAc,aAAY,sBAAuB;GACnC,IAChB,qBAAC,OAAO,SAAR;IACE,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAK;IAAiB;IACzC,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAM;IAAkB;IAC3C,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAK;IAAiB;IACzC,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAM;IAAkB;IAC3C,oBAAC,OAAO,MAAR;KAAa,OAAM;eAAK;IAAiB;GAC3B,IACV;MACR,oBAAC,OAAD;GACE,MAAK;GACL,cAAW;GACX,cAAc,eAAe;GAC7B,WAAW,MAAM,eAAe,EAAE,OAAO,KAAK;GAC9C,WAAU;EACX,EACE;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"JSONEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/JSONEditor.tsx"],"sourcesContent":["import { useEditedContent } from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport type { FC } from 'react';\nimport { MonacoCode } from '../IDE/MonacoCode';\n\ntype JSONEditorProps = {\n dictionary: Dictionary;\n isDarkMode?: boolean;\n};\n\nexport const JSONEditor: FC<JSONEditorProps> = ({ dictionary, isDarkMode }) => {\n const { setEditedContent, editedContent } = useEditedContent();\n\n const isValidJSON = (jsonString: string): boolean => {\n try {\n JSON.parse(jsonString);\n return true; // Valid JSON\n } catch (_error) {\n return false; // Invalid JSON\n }\n };\n\n const displayedContent =\n editedContent?.[dictionary.localId!]?.content ?? dictionary?.content;\n\n return (\n <MonacoCode\n language=\"json\"\n onChange={(content) => {\n if (isValidJSON(content ?? '{}')) {\n setEditedContent(dictionary.localId!, JSON.parse(content ?? '{}'));\n }\n }}\n isDarkMode={isDarkMode}\n >\n {JSON.stringify(displayedContent, null, 2)}\n </MonacoCode>\n );\n};\n"],"mappings":";;;;;AAUA,MAAa,cAAmC,EAAE,YAAY,iBAAiB;CAC7E,MAAM,EAAE,kBAAkB,kBAAkB,kBAAkB;CAE9D,MAAM,eAAe,eAAgC;EACnD,IAAI;GACF,KAAK,MAAM,WAAW;GACtB,OAAO;WACA,QAAQ;GACf,OAAO;;;CAIX,MAAM,mBACJ,gBAAgB,WAAW,UAAW,WAAW,YAAY;CAE/D,OACE,oBAAC,YAAD;EACE,UAAS;EACT,WAAW,YAAY;GACrB,IAAI,YAAY,WAAW,KAAK,EAC9B,iBAAiB,WAAW,SAAU,KAAK,MAAM,WAAW,KAAK,CAAC;;EAG1D;YAEX,KAAK,UAAU,kBAAkB,MAAM,EAAE;EAC/B"}
1
+ {"version":3,"file":"JSONEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/JSONEditor.tsx"],"sourcesContent":["import { useEditedContent } from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport type { FC } from 'react';\nimport { MonacoCode } from '../IDE/MonacoCode';\n\ntype JSONEditorProps = {\n dictionary: Dictionary;\n isDarkMode?: boolean;\n};\n\nexport const JSONEditor: FC<JSONEditorProps> = ({ dictionary, isDarkMode }) => {\n const { setEditedContent, editedContent } = useEditedContent();\n\n const isValidJSON = (jsonString: string): boolean => {\n try {\n JSON.parse(jsonString);\n return true; // Valid JSON\n } catch (_error) {\n return false; // Invalid JSON\n }\n };\n\n const displayedContent =\n editedContent?.[dictionary.localId!]?.content ?? dictionary?.content;\n\n return (\n <MonacoCode\n language=\"json\"\n onChange={(content) => {\n if (isValidJSON(content ?? '{}')) {\n setEditedContent(dictionary.localId!, JSON.parse(content ?? '{}'));\n }\n }}\n isDarkMode={isDarkMode}\n >\n {JSON.stringify(displayedContent, null, 2)}\n </MonacoCode>\n );\n};\n"],"mappings":";;;;;AAUA,MAAa,cAAmC,EAAE,YAAY,iBAAiB;CAC7E,MAAM,EAAE,kBAAkB,kBAAkB,iBAAiB;CAE7D,MAAM,eAAe,eAAgC;EACnD,IAAI;GACF,KAAK,MAAM,UAAU;GACrB,OAAO;EACT,SAAS,QAAQ;GACf,OAAO;EACT;CACF;CAEA,MAAM,mBACJ,gBAAgB,WAAW,UAAW,WAAW,YAAY;CAE/D,OACE,oBAAC,YAAD;EACE,UAAS;EACT,WAAW,YAAY;GACrB,IAAI,YAAY,WAAW,IAAI,GAC7B,iBAAiB,WAAW,SAAU,KAAK,MAAM,WAAW,IAAI,CAAC;EAErE;EACY;YAEX,KAAK,UAAU,kBAAkB,MAAM,CAAC;CAC/B;AAEhB"}
@@ -10,7 +10,7 @@ const KeyPathBreadcrumb = ({ keyPath, dictionaryKey, onClickKeyPath, locale, col
10
10
  onClick: onClickKeyPath ? () => onClickKeyPath([]) : void 0
11
11
  }] : [], ...keyPath.map((el, index) => ({
12
12
  onClick: onClickKeyPath ? () => onClickKeyPath?.(keyPath.slice(0, index + 1)) : void 0,
13
- text: el.key?.toString() ?? ""
13
+ text: camelCaseToSentence(el.key?.toString() ?? "")
14
14
  }))],
15
15
  locale,
16
16
  elementType: "location",
@@ -1 +1 @@
1
- {"version":3,"file":"KeyPathBreadcrumb.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/KeyPathBreadcrumb.tsx"],"sourcesContent":["import { camelCaseToSentence } from '@intlayer/config/client';\nimport type { Locale } from '@intlayer/types/allLocales';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport type { FC } from 'react';\nimport { Breadcrumb, type BreadcrumbLink } from '../Breadcrumb';\nimport type { LinkColor } from '../Link';\n\ntype KeyPathBreadcrumbProps = {\n dictionaryKey: string;\n keyPath: KeyPath[];\n onClickKeyPath?: (keyPath: KeyPath[]) => void;\n locale?: Locale;\n color?: LinkColor | `${LinkColor}`;\n showDictionaryKey?: boolean;\n};\n\nexport const KeyPathBreadcrumb: FC<KeyPathBreadcrumbProps> = ({\n keyPath,\n dictionaryKey,\n onClickKeyPath,\n locale,\n color,\n showDictionaryKey = true,\n}) => {\n const formattedKeyPath: BreadcrumbLink[] = [\n ...(showDictionaryKey\n ? [\n {\n text: camelCaseToSentence(dictionaryKey),\n onClick: onClickKeyPath ? () => onClickKeyPath([]) : undefined,\n },\n ]\n : []),\n ...keyPath.map((el, index) => ({\n onClick: onClickKeyPath\n ? () =>\n // With keyPath = [{type: NodeTypes.Object, key: '0'}, {type: NodeTypes.Array, key: '0'}, {type: NodeTypes.Object, key: '1'}]\n // If index is 0 -> onFocusKeyPath([{type: NodeTypes.Object, key: '0'}])\n // If index is 1 -> onFocusKeyPath([{type: NodeTypes.Object, key: '0'}, {type: NodeTypes.Array, key: '0'}])\n onClickKeyPath?.(keyPath.slice(0, index + 1))\n : undefined,\n\n text: el.key?.toString() ?? '',\n })),\n ];\n\n return (\n <Breadcrumb\n links={formattedKeyPath}\n locale={locale}\n elementType=\"location\"\n color={color}\n />\n );\n};\n"],"mappings":";;;;;AAgBA,MAAa,qBAAiD,EAC5D,SACA,eACA,gBACA,QACA,OACA,oBAAoB,WAChB;CAuBJ,OACE,oBAAC,YAAD;EACE,OAAO,CAvBT,GAAI,oBACA,CACE;GACE,MAAM,oBAAoB,cAAc;GACxC,SAAS,uBAAuB,eAAe,EAAE,CAAC,GAAG;GACtD,CACF,GACD,EAAE,EACN,GAAG,QAAQ,KAAK,IAAI,WAAW;GAC7B,SAAS,uBAKH,iBAAiB,QAAQ,MAAM,GAAG,QAAQ,EAAE,CAAC,GAC/C;GAEJ,MAAM,GAAG,KAAK,UAAU,IAAI;GAC7B,EAAE,CAKsB;EACf;EACR,aAAY;EACL;EACP"}
1
+ {"version":3,"file":"KeyPathBreadcrumb.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/KeyPathBreadcrumb.tsx"],"sourcesContent":["import { camelCaseToSentence } from '@intlayer/config/client';\nimport type { Locale } from '@intlayer/types/allLocales';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport type { FC } from 'react';\nimport { Breadcrumb, type BreadcrumbLink } from '../Breadcrumb';\nimport type { LinkColor } from '../Link';\n\ntype KeyPathBreadcrumbProps = {\n dictionaryKey: string;\n keyPath: KeyPath[];\n onClickKeyPath?: (keyPath: KeyPath[]) => void;\n locale?: Locale;\n color?: LinkColor | `${LinkColor}`;\n showDictionaryKey?: boolean;\n};\n\nexport const KeyPathBreadcrumb: FC<KeyPathBreadcrumbProps> = ({\n keyPath,\n dictionaryKey,\n onClickKeyPath,\n locale,\n color,\n showDictionaryKey = true,\n}) => {\n const formattedKeyPath: BreadcrumbLink[] = [\n ...(showDictionaryKey\n ? [\n {\n text: camelCaseToSentence(dictionaryKey),\n onClick: onClickKeyPath ? () => onClickKeyPath([]) : undefined,\n },\n ]\n : []),\n ...keyPath.map((el, index) => ({\n onClick: onClickKeyPath\n ? () =>\n // With keyPath = [{type: NodeTypes.Object, key: '0'}, {type: NodeTypes.Array, key: '0'}, {type: NodeTypes.Object, key: '1'}]\n // If index is 0 -> onFocusKeyPath([{type: NodeTypes.Object, key: '0'}])\n // If index is 1 -> onFocusKeyPath([{type: NodeTypes.Object, key: '0'}, {type: NodeTypes.Array, key: '0'}])\n onClickKeyPath?.(keyPath.slice(0, index + 1))\n : undefined,\n\n text: camelCaseToSentence(el.key?.toString() ?? ''),\n })),\n ];\n\n return (\n <Breadcrumb\n links={formattedKeyPath}\n locale={locale}\n elementType=\"location\"\n color={color}\n />\n );\n};\n"],"mappings":";;;;;AAgBA,MAAa,qBAAiD,EAC5D,SACA,eACA,gBACA,QACA,OACA,oBAAoB,WAChB;CAuBJ,OACE,oBAAC,YAAD;EACE,OAAO,CAvBT,GAAI,oBACA,CACE;GACE,MAAM,oBAAoB,aAAa;GACvC,SAAS,uBAAuB,eAAe,CAAC,CAAC,IAAI;EACvD,CACF,IACA,CAAC,GACL,GAAG,QAAQ,KAAK,IAAI,WAAW;GAC7B,SAAS,uBAKH,iBAAiB,QAAQ,MAAM,GAAG,QAAQ,CAAC,CAAC,IAC9C;GAEJ,MAAM,oBAAoB,GAAG,KAAK,SAAS,KAAK,EAAE;EACpD,EAAE,CAKsB;EACd;EACR,aAAY;EACL;CACR;AAEL"}
@@ -1,12 +1,12 @@
1
1
  import { Button, ButtonColor, ButtonTextAlign, ButtonVariant } from "../../Button/Button.mjs";
2
2
  import { Accordion } from "../../Accordion/Accordion.mjs";
3
+ import { useLocaleSwitcherContent } from "../../LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs";
3
4
  import { getIsEditableSection } from "../getIsEditableSection.mjs";
4
5
  import { useState } from "react";
5
6
  import { ChevronRight, Plus } from "lucide-react";
6
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
- import { internationalization } from "@intlayer/config/built";
8
- import { useIntlayer } from "react-intlayer";
9
8
  import { useEditedContentActions, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
9
+ import { useIntlayer } from "react-intlayer";
10
10
  import { getContentNodeByKeyPath, getEmptyNode, getNodeType } from "@intlayer/core/dictionaryManipulator";
11
11
  import * as NodeTypes from "@intlayer/types/nodeType";
12
12
  import { isSameKeyPath } from "@intlayer/core/utils";
@@ -30,7 +30,7 @@ const GatedAccordion = ({ children, onToggle, ...props }) => {
30
30
  });
31
31
  };
32
32
  const NavigationViewNode = ({ section: sectionProp, keyPath, dictionary }) => {
33
- const { locales } = internationalization;
33
+ const { selectedLocales } = useLocaleSwitcherContent();
34
34
  const section = getContentNodeByKeyPath(sectionProp, keyPath, useEditorLocale());
35
35
  const { addEditedContent } = useEditedContentActions();
36
36
  const { setFocusedContentKeyPath, focusedContent } = useFocusUnmergedDictionary();
@@ -52,7 +52,7 @@ const NavigationViewNode = ({ section: sectionProp, keyPath, dictionary }) => {
52
52
  if (nodeType === NodeTypes.REACT_NODE) return /* @__PURE__ */ jsx(Fragment$1, { children: "React Node" });
53
53
  if (nodeType === NodeTypes.TRANSLATION) return /* @__PURE__ */ jsx("div", {
54
54
  className: "flex flex-col justify-between gap-2",
55
- children: locales.map((translationKey) => {
55
+ children: selectedLocales.map((translationKey) => {
56
56
  return /* @__PURE__ */ jsx(NavigationViewNode, {
57
57
  keyPath: [...keyPath, {
58
58
  type: NodeTypes.TRANSLATION,
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationViewNode.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.tsx"],"sourcesContent":["import { Accordion, type AccordionProps } from '@components/Accordion';\nimport {\n Button,\n ButtonColor,\n ButtonTextAlign,\n ButtonVariant,\n} from '@components/Button';\nimport { internationalization } from '@intlayer/config/built';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getContentNodeByKeyPath,\n getEmptyNode,\n getNodeType,\n} from '@intlayer/core/dictionaryManipulator';\nimport { isSameKeyPath } from '@intlayer/core/utils';\nimport {\n useEditedContentActions,\n useEditorLocale,\n useFocusUnmergedDictionary,\n} 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 { ContentNode, Dictionary } from 'intlayer';\nimport { ChevronRight, Plus } from 'lucide-react';\nimport { type FC, type ReactNode, useState } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { getIsEditableSection } from '../getIsEditableSection';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype GatedAccordionProps = AccordionProps & { children: ReactNode };\n\n// Renders children only after the accordion is first opened (mount-once pattern).\n// Prevents the entire recursive subtree from mounting on initial render.\nconst GatedAccordion: FC<GatedAccordionProps> = ({\n children,\n onToggle,\n ...props\n}) => {\n const [hasOpened, setHasOpened] = useState(false);\n return (\n <Accordion\n {...props}\n onToggle={(isOpen) => {\n if (isOpen && !hasOpened) setHasOpened(true);\n onToggle?.(isOpen);\n }}\n >\n {hasOpened ? children : null}\n </Accordion>\n );\n};\n\nexport type NodeWrapperProps = {\n keyPath: KeyPath[];\n section: ContentNode;\n dictionary: Dictionary;\n};\n\nexport const NavigationViewNode: FC<NodeWrapperProps> = ({\n section: sectionProp,\n keyPath,\n dictionary,\n}) => {\n const { locales } = internationalization;\n\n const currentLocale = useEditorLocale();\n const section = getContentNodeByKeyPath(sectionProp, keyPath, currentLocale);\n const { addEditedContent } = useEditedContentActions();\n const { setFocusedContentKeyPath, focusedContent } =\n useFocusUnmergedDictionary();\n const { addNewElement, goToField } = useIntlayer('navigation-view');\n const nodeType = getNodeType(section);\n const getIsSelected = (keyPath: KeyPath[]) =>\n (focusedContent?.keyPath?.length ?? 0) > 0 &&\n isSameKeyPath(keyPath, focusedContent?.keyPath ?? []);\n const isEditableSubSection = getIsEditableSection(section);\n\n if (!section) return <></>;\n\n if (isEditableSubSection) {\n return (\n <Button\n label={goToField.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(keyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(keyPath[keyPath.length - 1].key as string)}\n </Button>\n );\n }\n\n if (typeof section === 'object') {\n if (nodeType === NodeTypes.REACT_NODE) {\n return <>React Node</>;\n }\n\n if (nodeType === NodeTypes.TRANSLATION) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {locales.map((translationKey) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeTypes.TRANSLATION, key: translationKey },\n ];\n\n return (\n <NavigationViewNode\n key={translationKey}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n </div>\n );\n }\n\n if (\n nodeType === NodeTypes.ENUMERATION ||\n nodeType === NodeTypes.PLURAL ||\n nodeType === NodeTypes.CONDITION\n ) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {Object.keys(\n (section as any)[nodeType as unknown as keyof typeof section]\n ).map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: nodeType, key },\n ];\n\n return (\n <NavigationViewNode\n key={key}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeTypes.ARRAY) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {(section as unknown as ContentNode[]).map((subSection, index) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeTypes.ARRAY, key: index },\n ];\n\n const isEditableSubSection = getIsEditableSection(subSection);\n\n if (isEditableSubSection) {\n return (\n <Button\n key={JSON.stringify(childKeyPath)}\n label={`${goToField.label.value} ${index}`}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n IconRight={ChevronRight}\n isActive={getIsSelected(childKeyPath)}\n >\n Item {index}\n </Button>\n );\n }\n\n return (\n <GatedAccordion\n key={JSON.stringify(childKeyPath)}\n label={`${goToField.label.value} ${index}`}\n header={`Item ${index}`}\n isActive={getIsSelected(childKeyPath)}\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n >\n <div className=\"mt-2 flex w-full max-w-full\">\n <div className=\"flex-1 pl-10\">\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n </div>\n </div>\n </GatedAccordion>\n );\n })}\n\n <Button\n label={addNewElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.ARRAY,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n const sectionArray = section as unknown as ContentNode[];\n const emptySectionEl =\n getEmptyNode(\n sectionArray[\n (sectionArray.length - 1) as keyof typeof sectionArray\n ] as ContentNode\n ) ?? '';\n addEditedContent(\n dictionary.localId as LocalDictionaryId,\n emptySectionEl,\n newKeyPath,\n false\n );\n setFocusedContentKeyPath(newKeyPath);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n }\n\n if (typeof section.nodeType === 'string') {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: section.nodeType } as KeyPath,\n ];\n\n return (\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n }\n\n const sectionArray = Object.keys(section);\n return (\n <div className=\"flex w-full max-w-full flex-col justify-between gap-2\">\n {sectionArray.map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeTypes.OBJECT, key },\n ];\n\n const subSection = getContentNodeByKeyPath(sectionProp, childKeyPath);\n const isEditableSubSection = getIsEditableSection(subSection);\n\n if (isEditableSubSection) {\n return (\n <Button\n label={`${goToField.label.value} ${key}`}\n key={key}\n isActive={getIsSelected(childKeyPath)}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(key)}\n </Button>\n );\n }\n\n return (\n <GatedAccordion\n key={key}\n label={`${goToField.label.value} ${key}`}\n isActive={getIsSelected(childKeyPath)}\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n header={camelCaseToSentence(key)}\n >\n <div className=\"mt-2 flex w-full max-w-full\">\n <div className=\"flex-1 pl-10\">\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n </div>\n </div>\n </GatedAccordion>\n );\n })}\n </div>\n );\n }\n\n return (\n <>\n Error loading section --\n {nodeType}\n --\n {JSON.stringify(section)}\n --\n {JSON.stringify(keyPath)}\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"NavigationViewNode.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.tsx"],"sourcesContent":["import { Accordion, type AccordionProps } from '@components/Accordion';\nimport {\n Button,\n ButtonColor,\n ButtonTextAlign,\n ButtonVariant,\n} from '@components/Button';\nimport { useLocaleSwitcherContent } from '@components/LocaleSwitcherContentDropDown';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getContentNodeByKeyPath,\n getEmptyNode,\n getNodeType,\n} from '@intlayer/core/dictionaryManipulator';\nimport { isSameKeyPath } from '@intlayer/core/utils';\nimport {\n useEditedContentActions,\n useEditorLocale,\n useFocusUnmergedDictionary,\n} 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 { ContentNode, Dictionary } from 'intlayer';\nimport { ChevronRight, Plus } from 'lucide-react';\nimport { type FC, type ReactNode, useState } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { getIsEditableSection } from '../getIsEditableSection';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype GatedAccordionProps = AccordionProps & { children: ReactNode };\n\n// Renders children only after the accordion is first opened (mount-once pattern).\n// Prevents the entire recursive subtree from mounting on initial render.\nconst GatedAccordion: FC<GatedAccordionProps> = ({\n children,\n onToggle,\n ...props\n}) => {\n const [hasOpened, setHasOpened] = useState(false);\n return (\n <Accordion\n {...props}\n onToggle={(isOpen) => {\n if (isOpen && !hasOpened) setHasOpened(true);\n onToggle?.(isOpen);\n }}\n >\n {hasOpened ? children : null}\n </Accordion>\n );\n};\n\nexport type NodeWrapperProps = {\n keyPath: KeyPath[];\n section: ContentNode;\n dictionary: Dictionary;\n};\n\nexport const NavigationViewNode: FC<NodeWrapperProps> = ({\n section: sectionProp,\n keyPath,\n dictionary,\n}) => {\n const { selectedLocales } = useLocaleSwitcherContent();\n\n const currentLocale = useEditorLocale();\n const section = getContentNodeByKeyPath(sectionProp, keyPath, currentLocale);\n const { addEditedContent } = useEditedContentActions();\n const { setFocusedContentKeyPath, focusedContent } =\n useFocusUnmergedDictionary();\n const { addNewElement, goToField } = useIntlayer('navigation-view');\n const nodeType = getNodeType(section);\n const getIsSelected = (keyPath: KeyPath[]) =>\n (focusedContent?.keyPath?.length ?? 0) > 0 &&\n isSameKeyPath(keyPath, focusedContent?.keyPath ?? []);\n const isEditableSubSection = getIsEditableSection(section);\n\n if (!section) return <></>;\n\n if (isEditableSubSection) {\n return (\n <Button\n label={goToField.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(keyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(keyPath[keyPath.length - 1].key as string)}\n </Button>\n );\n }\n\n if (typeof section === 'object') {\n if (nodeType === NodeTypes.REACT_NODE) {\n return <>React Node</>;\n }\n\n if (nodeType === NodeTypes.TRANSLATION) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {selectedLocales.map((translationKey) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeTypes.TRANSLATION, key: translationKey },\n ];\n\n return (\n <NavigationViewNode\n key={translationKey}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n </div>\n );\n }\n\n if (\n nodeType === NodeTypes.ENUMERATION ||\n nodeType === NodeTypes.PLURAL ||\n nodeType === NodeTypes.CONDITION\n ) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {Object.keys(\n (section as any)[nodeType as unknown as keyof typeof section]\n ).map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: nodeType, key },\n ];\n\n return (\n <NavigationViewNode\n key={key}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeTypes.ARRAY) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {(section as unknown as ContentNode[]).map((subSection, index) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeTypes.ARRAY, key: index },\n ];\n\n const isEditableSubSection = getIsEditableSection(subSection);\n\n if (isEditableSubSection) {\n return (\n <Button\n key={JSON.stringify(childKeyPath)}\n label={`${goToField.label.value} ${index}`}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n IconRight={ChevronRight}\n isActive={getIsSelected(childKeyPath)}\n >\n Item {index}\n </Button>\n );\n }\n\n return (\n <GatedAccordion\n key={JSON.stringify(childKeyPath)}\n label={`${goToField.label.value} ${index}`}\n header={`Item ${index}`}\n isActive={getIsSelected(childKeyPath)}\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n >\n <div className=\"mt-2 flex w-full max-w-full\">\n <div className=\"flex-1 pl-10\">\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n </div>\n </div>\n </GatedAccordion>\n );\n })}\n\n <Button\n label={addNewElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeTypes.ARRAY,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n const sectionArray = section as unknown as ContentNode[];\n const emptySectionEl =\n getEmptyNode(\n sectionArray[\n (sectionArray.length - 1) as keyof typeof sectionArray\n ] as ContentNode\n ) ?? '';\n addEditedContent(\n dictionary.localId as LocalDictionaryId,\n emptySectionEl,\n newKeyPath,\n false\n );\n setFocusedContentKeyPath(newKeyPath);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n }\n\n if (typeof section.nodeType === 'string') {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: section.nodeType } as KeyPath,\n ];\n\n return (\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n }\n\n const sectionArray = Object.keys(section);\n return (\n <div className=\"flex w-full max-w-full flex-col justify-between gap-2\">\n {sectionArray.map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeTypes.OBJECT, key },\n ];\n\n const subSection = getContentNodeByKeyPath(sectionProp, childKeyPath);\n const isEditableSubSection = getIsEditableSection(subSection);\n\n if (isEditableSubSection) {\n return (\n <Button\n label={`${goToField.label.value} ${key}`}\n key={key}\n isActive={getIsSelected(childKeyPath)}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(key)}\n </Button>\n );\n }\n\n return (\n <GatedAccordion\n key={key}\n label={`${goToField.label.value} ${key}`}\n isActive={getIsSelected(childKeyPath)}\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n header={camelCaseToSentence(key)}\n >\n <div className=\"mt-2 flex w-full max-w-full\">\n <div className=\"flex-1 pl-10\">\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n </div>\n </div>\n </GatedAccordion>\n );\n })}\n </div>\n );\n }\n\n return (\n <>\n Error loading section --\n {nodeType}\n --\n {JSON.stringify(section)}\n --\n {JSON.stringify(keyPath)}\n </>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigationViewNode.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const navigationViewContent = {\n key: 'navigation-view',\n content: {\n tsxNotEditable: t({\n en: 'React node is not editable',\n 'en-GB': 'React node is not editable',\n fr: 'Node React non éditable',\n es: 'Nodo React no editable',\n de: 'React-Knoten ist nicht bearbeitbar',\n ja: '編集できないReactノードです',\n ko: '편집할 수 없는 React 노드입니다',\n zh: '不可编辑的 React 节点',\n it: 'Node React non modificabile',\n pt: 'Nó React não editável',\n hi: 'सम्पादित न करने योग्य React नोड',\n ar: 'عقدة React غير قابلة للتحرير',\n ru: 'React-узел не редактируемый',\n tr: 'React düğümü düzenlenemez',\n pl: 'Węzeł React nie jest edytowalny',\n id: 'React node tidak dapat diedit',\n vi: 'React node không thể chỉnh sửa',\n uk: 'Елемент React не редагується',\n }),\n goToField: {\n label: t({\n en: 'Go to field',\n 'en-GB': 'Go to field',\n fr: 'Aller au champ',\n es: 'Ir al campo',\n de: 'Zum Feld gehen',\n ja: 'フィールドに移動',\n ko: '필드로 이동',\n zh: '转到字段',\n it: 'Vai al campo',\n pt: 'Ir para o campo',\n hi: 'फ़ील्ड पर जाएं',\n ar: 'اذهب إلى الحقل',\n ru: 'Перейти к полю',\n tr: 'Alana git',\n pl: 'Przejdź do pola',\n id: 'Buka field',\n vi: 'Đi tới trường',\n uk: 'Перейти до поля',\n }),\n },\n addNewElement: {\n label: t({\n en: 'Click to add element',\n 'en-GB': 'Click to add element',\n fr: 'Cliquez pour ajouter un élément',\n es: 'Haga clic para agregar un elemento',\n de: 'Klicken Sie, um ein Element hinzuzufügen',\n ja: '要素を追加するにはクリック',\n ko: '요소를 추가하려면 클릭하세요',\n zh: '点击添加元素',\n it: 'Clicca per aggiungere un elemento',\n pt: 'Clique para adicionar um elemento',\n hi: 'तत्व जोड़ने के लिए क्लिक करें',\n ar: 'انقر لإضافة عنصر',\n ru: 'Нажмите, чтобы добавить элемент',\n tr: 'Eleman eklemek için tıklayın',\n pl: 'Kliknij, aby dodać element',\n id: 'Klik untuk menambah elemen',\n vi: 'Nhấp để thêm phần tử',\n uk: 'Натисніть, щоб додати елемент',\n }),\n text: t({\n en: 'Add new element',\n 'en-GB': 'Add new element',\n fr: 'Ajouter un nouvel élément',\n es: 'Agregar nuevo elemento',\n de: 'Neues Element hinzufügen',\n ja: '新しい要素を追加',\n ko: '새 요소 추가',\n zh: '添加新元素',\n it: 'Aggiungi nuovo elemento',\n pt: 'Adicionar novo elemento',\n hi: 'नया तत्व जोड़ें',\n ar: 'أضف عنصرًا جديدًا',\n ru: 'Добавить новый элемент',\n tr: 'Yeni eleman ekle',\n pl: 'Dodaj nowy element',\n id: 'Tambahkan elemen baru',\n vi: 'Thêm phần tử mới',\n uk: 'Додати новий елемент',\n }),\n },\n removeElement: {\n label: t({\n en: 'Click to remove element',\n 'en-GB': 'Click to remove element',\n fr: 'Cliquez pour supprimer un élément',\n es: 'Haga clic para eliminar un elemento',\n de: 'Klicken Sie, um ein Element zu entfernen',\n ja: '要素を削除するにはクリック',\n ko: '요소를 제거하려면 클릭하세요',\n zh: '点击删除元素',\n it: 'Clicca per rimuovere un elemento',\n pt: 'Clique para remover um elemento',\n hi: 'तत्व निकालने के लिए क्लिक करें',\n ar: 'انقر لإزالة عنصر',\n ru: 'Нажмите, чтобы удалить элемент',\n tr: 'Elemanı kaldırmak için tıklayın',\n pl: 'Kliknij, aby usunąć element',\n id: 'Klik untuk menghapus elemen',\n vi: 'Nhấp để xóa phần tử',\n uk: 'Натисніть, щоб видалити елемент',\n }),\n text: t({\n en: 'Remove element',\n 'en-GB': 'Remove element',\n fr: 'Supprimer l’élément',\n es: 'Eliminar elemento',\n de: 'Element entfernen',\n ja: '要素を削除',\n ko: '요소 제거',\n zh: '删除元素',\n it: 'Rimuovi elemento',\n pt: 'Remover elemento',\n hi: 'तत्व निकालें',\n ar: 'إزالة عنصر',\n ru: 'Удалить элемент',\n tr: 'Elemanı kaldır',\n pl: 'Usuń element',\n id: 'Hapus elemen',\n vi: 'Xóa phần tử',\n uk: 'Видалити елемент',\n }),\n },\n addNewEnumeration: {\n label: t({\n en: 'Click to add enumeration',\n 'en-GB': 'Click to add enumeration',\n fr: 'Cliquez pour ajouter une énumération',\n es: 'Haga clic para agregar una enumeración',\n de: 'Klicken Sie, um eine Aufzählung hinzuzufügen',\n ja: '列挙を追加するにはクリック',\n ko: '열거를 추가하려면 클릭하세요',\n zh: '点击添加枚举',\n it: 'Clicca per aggiungere un enumerazione',\n pt: 'Clique para adicionar uma enumeração',\n hi: 'सूची जोड़ने के लिए क्लिक करें',\n ar: 'انقر لإضافة تعداد',\n ru: 'Нажмите, чтобы добавить перечисление',\n tr: 'Numaralandırma eklemek için tıklayın',\n pl: 'Kliknij, aby dodać enumerację',\n id: 'Klik untuk menambah enumerasi',\n vi: 'Nhấp để thêm enumeration',\n uk: 'Натисніть, щоб додати перелік',\n }),\n text: t({\n en: 'Add new enumeration',\n 'en-GB': 'Add new enumeration',\n fr: 'Ajouter une nouvelle énumération',\n es: 'Agregar nueva enumeración',\n de: 'Neue Aufzählung hinzufügen',\n ja: '新しい列挙を追加',\n ko: '새 목록 추가',\n zh: '添加新枚举',\n it: 'Aggiungi nuova enumerazione',\n pt: 'Adicionar nova enumeração',\n hi: 'नया सूची जोड़ें',\n ar: 'أضف تعدادًا جديدًا',\n ru: 'Добавить новое перечисление',\n tr: 'Yeni numaralandırma ekle',\n pl: 'Dodaj nową enumerację',\n id: 'Tambahkan enumerasi baru',\n vi: 'Thêm enumeration mới',\n uk: 'Додати новий перелік',\n }),\n },\n removeEnumeration: {\n label: t({\n en: 'Click to remove enumeration',\n 'en-GB': 'Click to remove enumeration',\n fr: 'Cliquez pour supprimer une énumération',\n es: 'Haga clic para eliminar una enumeración',\n de: 'Klicken Sie, um eine Aufzählung zu entfernen',\n ja: '列挙を削除するにはクリック',\n ko: '목록을 제거하려면 클릭하세요',\n zh: '点击删除枚举',\n it: \"Clicca per rimuovere un'enumerazione\",\n pt: 'Clique para remover uma enumeração',\n hi: 'सूची निकालने के लिए क्लिक करें',\n ar: 'انقر لإزالة تعداد',\n ru: 'Нажмите, чтобы удалить перечисление',\n tr: 'Numaralandırmayı kaldırmak için tıklayın',\n pl: 'Kliknij, aby usunąć enumerację',\n id: 'Klik untuk menghapus enumerasi',\n vi: 'Nhấp để xóa enumeration',\n uk: 'Натисніть, щоб видалити перелік',\n }),\n text: t({\n en: 'Remove enumeration',\n 'en-GB': 'Remove enumeration',\n fr: 'Supprimer l’énumération',\n es: 'Eliminar enumeración',\n de: 'Aufzählung entfernen',\n ja: '列挙を削除',\n ko: '목록 제거',\n zh: '删除枚举',\n it: 'Rimuovi enumerazione',\n pt: 'Remover enumeração',\n hi: 'सूची निकालें',\n ar: 'إزالة تعداد',\n ru: 'Удалить перечисление',\n tr: 'Numaralandırmayı kaldır',\n pl: 'Usuń enumerację',\n id: 'Hapus enumerasi',\n vi: 'Xóa enumeration',\n uk: 'Видалити перелік',\n }),\n },\n },\n title: 'Navigation view content',\n description:\n 'Content declarations used for UI interactions within the navigation view of the Dictionary Field Editor. Includes labels and helper texts for adding or removing elements, enumerations, and conditions.',\n tags: ['editor UI', 'form navigation', 'dictionary editor'],\n} satisfies Dictionary;\n\nexport default navigationViewContent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"navigationViewNode.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const navigationViewContent = {\n key: 'navigation-view',\n content: {\n tsxNotEditable: t({\n en: 'React node is not editable',\n 'en-GB': 'React node is not editable',\n fr: 'Node React non éditable',\n es: 'Nodo React no editable',\n de: 'React-Knoten ist nicht bearbeitbar',\n ja: '編集できないReactノードです',\n ko: '편집할 수 없는 React 노드입니다',\n zh: '不可编辑的 React 节点',\n it: 'Node React non modificabile',\n pt: 'Nó React não editável',\n hi: 'सम्पादित न करने योग्य React नोड',\n ar: 'عقدة React غير قابلة للتحرير',\n ru: 'React-узел не редактируемый',\n tr: 'React düğümü düzenlenemez',\n pl: 'Węzeł React nie jest edytowalny',\n id: 'React node tidak dapat diedit',\n vi: 'React node không thể chỉnh sửa',\n uk: 'Елемент React не редагується',\n }),\n goToField: {\n label: t({\n en: 'Go to field',\n 'en-GB': 'Go to field',\n fr: 'Aller au champ',\n es: 'Ir al campo',\n de: 'Zum Feld gehen',\n ja: 'フィールドに移動',\n ko: '필드로 이동',\n zh: '转到字段',\n it: 'Vai al campo',\n pt: 'Ir para o campo',\n hi: 'फ़ील्ड पर जाएं',\n ar: 'اذهب إلى الحقل',\n ru: 'Перейти к полю',\n tr: 'Alana git',\n pl: 'Przejdź do pola',\n id: 'Buka field',\n vi: 'Đi tới trường',\n uk: 'Перейти до поля',\n }),\n },\n addNewElement: {\n label: t({\n en: 'Click to add element',\n 'en-GB': 'Click to add element',\n fr: 'Cliquez pour ajouter un élément',\n es: 'Haga clic para agregar un elemento',\n de: 'Klicken Sie, um ein Element hinzuzufügen',\n ja: '要素を追加するにはクリック',\n ko: '요소를 추가하려면 클릭하세요',\n zh: '点击添加元素',\n it: 'Clicca per aggiungere un elemento',\n pt: 'Clique para adicionar um elemento',\n hi: 'तत्व जोड़ने के लिए क्लिक करें',\n ar: 'انقر لإضافة عنصر',\n ru: 'Нажмите, чтобы добавить элемент',\n tr: 'Eleman eklemek için tıklayın',\n pl: 'Kliknij, aby dodać element',\n id: 'Klik untuk menambah elemen',\n vi: 'Nhấp để thêm phần tử',\n uk: 'Натисніть, щоб додати елемент',\n }),\n text: t({\n en: 'Add new element',\n 'en-GB': 'Add new element',\n fr: 'Ajouter un nouvel élément',\n es: 'Agregar nuevo elemento',\n de: 'Neues Element hinzufügen',\n ja: '新しい要素を追加',\n ko: '새 요소 추가',\n zh: '添加新元素',\n it: 'Aggiungi nuovo elemento',\n pt: 'Adicionar novo elemento',\n hi: 'नया तत्व जोड़ें',\n ar: 'أضف عنصرًا جديدًا',\n ru: 'Добавить новый элемент',\n tr: 'Yeni eleman ekle',\n pl: 'Dodaj nowy element',\n id: 'Tambahkan elemen baru',\n vi: 'Thêm phần tử mới',\n uk: 'Додати новий елемент',\n }),\n },\n removeElement: {\n label: t({\n en: 'Click to remove element',\n 'en-GB': 'Click to remove element',\n fr: 'Cliquez pour supprimer un élément',\n es: 'Haga clic para eliminar un elemento',\n de: 'Klicken Sie, um ein Element zu entfernen',\n ja: '要素を削除するにはクリック',\n ko: '요소를 제거하려면 클릭하세요',\n zh: '点击删除元素',\n it: 'Clicca per rimuovere un elemento',\n pt: 'Clique para remover um elemento',\n hi: 'तत्व निकालने के लिए क्लिक करें',\n ar: 'انقر لإزالة عنصر',\n ru: 'Нажмите, чтобы удалить элемент',\n tr: 'Elemanı kaldırmak için tıklayın',\n pl: 'Kliknij, aby usunąć element',\n id: 'Klik untuk menghapus elemen',\n vi: 'Nhấp để xóa phần tử',\n uk: 'Натисніть, щоб видалити елемент',\n }),\n text: t({\n en: 'Remove element',\n 'en-GB': 'Remove element',\n fr: 'Supprimer l’élément',\n es: 'Eliminar elemento',\n de: 'Element entfernen',\n ja: '要素を削除',\n ko: '요소 제거',\n zh: '删除元素',\n it: 'Rimuovi elemento',\n pt: 'Remover elemento',\n hi: 'तत्व निकालें',\n ar: 'إزالة عنصر',\n ru: 'Удалить элемент',\n tr: 'Elemanı kaldır',\n pl: 'Usuń element',\n id: 'Hapus elemen',\n vi: 'Xóa phần tử',\n uk: 'Видалити елемент',\n }),\n },\n addNewEnumeration: {\n label: t({\n en: 'Click to add enumeration',\n 'en-GB': 'Click to add enumeration',\n fr: 'Cliquez pour ajouter une énumération',\n es: 'Haga clic para agregar una enumeración',\n de: 'Klicken Sie, um eine Aufzählung hinzuzufügen',\n ja: '列挙を追加するにはクリック',\n ko: '열거를 추가하려면 클릭하세요',\n zh: '点击添加枚举',\n it: 'Clicca per aggiungere un enumerazione',\n pt: 'Clique para adicionar uma enumeração',\n hi: 'सूची जोड़ने के लिए क्लिक करें',\n ar: 'انقر لإضافة تعداد',\n ru: 'Нажмите, чтобы добавить перечисление',\n tr: 'Numaralandırma eklemek için tıklayın',\n pl: 'Kliknij, aby dodać enumerację',\n id: 'Klik untuk menambah enumerasi',\n vi: 'Nhấp để thêm enumeration',\n uk: 'Натисніть, щоб додати перелік',\n }),\n text: t({\n en: 'Add new enumeration',\n 'en-GB': 'Add new enumeration',\n fr: 'Ajouter une nouvelle énumération',\n es: 'Agregar nueva enumeración',\n de: 'Neue Aufzählung hinzufügen',\n ja: '新しい列挙を追加',\n ko: '새 목록 추가',\n zh: '添加新枚举',\n it: 'Aggiungi nuova enumerazione',\n pt: 'Adicionar nova enumeração',\n hi: 'नया सूची जोड़ें',\n ar: 'أضف تعدادًا جديدًا',\n ru: 'Добавить новое перечисление',\n tr: 'Yeni numaralandırma ekle',\n pl: 'Dodaj nową enumerację',\n id: 'Tambahkan enumerasi baru',\n vi: 'Thêm enumeration mới',\n uk: 'Додати новий перелік',\n }),\n },\n removeEnumeration: {\n label: t({\n en: 'Click to remove enumeration',\n 'en-GB': 'Click to remove enumeration',\n fr: 'Cliquez pour supprimer une énumération',\n es: 'Haga clic para eliminar una enumeración',\n de: 'Klicken Sie, um eine Aufzählung zu entfernen',\n ja: '列挙を削除するにはクリック',\n ko: '목록을 제거하려면 클릭하세요',\n zh: '点击删除枚举',\n it: \"Clicca per rimuovere un'enumerazione\",\n pt: 'Clique para remover uma enumeração',\n hi: 'सूची निकालने के लिए क्लिक करें',\n ar: 'انقر لإزالة تعداد',\n ru: 'Нажмите, чтобы удалить перечисление',\n tr: 'Numaralandırmayı kaldırmak için tıklayın',\n pl: 'Kliknij, aby usunąć enumerację',\n id: 'Klik untuk menghapus enumerasi',\n vi: 'Nhấp để xóa enumeration',\n uk: 'Натисніть, щоб видалити перелік',\n }),\n text: t({\n en: 'Remove enumeration',\n 'en-GB': 'Remove enumeration',\n fr: 'Supprimer l’énumération',\n es: 'Eliminar enumeración',\n de: 'Aufzählung entfernen',\n ja: '列挙を削除',\n ko: '목록 제거',\n zh: '删除枚举',\n it: 'Rimuovi enumerazione',\n pt: 'Remover enumeração',\n hi: 'सूची निकालें',\n ar: 'إزالة تعداد',\n ru: 'Удалить перечисление',\n tr: 'Numaralandırmayı kaldır',\n pl: 'Usuń enumerację',\n id: 'Hapus enumerasi',\n vi: 'Xóa enumeration',\n uk: 'Видалити перелік',\n }),\n },\n },\n title: 'Navigation view content',\n description:\n 'Content declarations used for UI interactions within the navigation view of the Dictionary Field Editor. Includes labels and helper texts for adding or removing elements, enumerations, and conditions.',\n tags: ['editor UI', 'form navigation', 'dictionary editor'],\n} satisfies Dictionary;\n\nexport default navigationViewContent;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTypeSelector.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/NodeTypeSelector.tsx"],"sourcesContent":["'use client';\n\nimport { getNodeType } from '@intlayer/core/dictionaryManipulator';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { NodeType } from '@intlayer/types/nodeType';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport { type FC, useState } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Select } from '../Select';\n\ntype NodeTypeSelectorProps = {\n section: ContentNode;\n onValueChange: (keyType: NodeType) => void;\n};\n\nexport const NodeTypeSelector: FC<NodeTypeSelectorProps> = ({\n section,\n onValueChange: onValueChangeProp,\n}) => {\n const {\n multilingual,\n text,\n number,\n boolean,\n node,\n array,\n enumeration,\n plural,\n triggerPlaceHolder,\n nest,\n gender,\n condition,\n markdown,\n insertion,\n reactNode,\n file,\n } = useIntlayer('node-type-selector');\n const nodeType = getNodeType(section);\n const [keyType, setKeyType] = useState<NodeType>(nodeType);\n\n const onValueChange = (keyType: NodeType) => {\n setKeyType(keyType);\n onValueChangeProp(keyType);\n };\n\n return (\n <Select value={keyType} onValueChange={onValueChange}>\n <Select.Trigger>\n <Select.Value placeholder={triggerPlaceHolder} />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value={NodeTypes.TRANSLATION}>{multilingual}</Select.Item>\n <Select.Item value={NodeTypes.TEXT}>{text}</Select.Item>\n <Select.Item value={NodeTypes.NUMBER}>{number}</Select.Item>\n <Select.Item value={NodeTypes.BOOLEAN}>{boolean}</Select.Item>\n <Select.Item value={NodeTypes.OBJECT}>{node}</Select.Item>\n <Select.Item value={NodeTypes.ARRAY}>{array}</Select.Item>\n <Select.Item value={NodeTypes.ENUMERATION}>{enumeration}</Select.Item>\n <Select.Item value={NodeTypes.PLURAL}>{plural}</Select.Item>\n <Select.Item value={NodeTypes.GENDER}>{gender}</Select.Item>\n <Select.Item value={NodeTypes.INSERTION}>{insertion}</Select.Item>\n <Select.Item value={NodeTypes.MARKDOWN}>{markdown}</Select.Item>\n <Select.Item value={NodeTypes.NESTED}>{nest}</Select.Item>\n <Select.Item value={NodeTypes.CONDITION}>{condition}</Select.Item>\n <Select.Item value={NodeTypes.REACT_NODE} disabled>\n {reactNode}\n </Select.Item>\n <Select.Item value={NodeTypes.FILE}>{file}</Select.Item>\n </Select.Content>\n </Select>\n );\n};\n"],"mappings":";;;;;;;;;;AAeA,MAAa,oBAA+C,EAC1D,SACA,eAAe,wBACX;CACJ,MAAM,EACJ,cACA,MACA,QACA,SACA,MACA,OACA,aACA,QACA,oBACA,MACA,QACA,WACA,UACA,WACA,WACA,SACE,YAAY,qBAAqB;CAErC,MAAM,CAAC,SAAS,cAAc,SADb,YAAY,QAC4B,CAAC;CAE1D,MAAM,iBAAiB,YAAsB;EAC3C,WAAW,QAAQ;EACnB,kBAAkB,QAAQ;;CAG5B,OACE,qBAAC,QAAD;EAAQ,OAAO;EAAwB;YAAvC,CACE,oBAAC,OAAO,SAAR,YACE,oBAAC,OAAO,OAAR,EAAc,aAAa,oBAAsB,GAClC,GACjB,qBAAC,OAAO,SAAR;GACE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAc;IAA2B;GACvE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAO;IAAmB;GACxD,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;IAAqB;GAC5D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAU;IAAsB;GAC9D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;IAAmB;GAC1D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAQ;IAAoB;GAC1D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAc;IAA0B;GACtE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;IAAqB;GAC5D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;IAAqB;GAC5D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAY;IAAwB;GAClE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAW;IAAuB;GAChE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;IAAmB;GAC1D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAY;IAAwB;GAClE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;IAAY;cACvC;IACW;GACd,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAO;IAAmB;GACzC,IACV"}
1
+ {"version":3,"file":"NodeTypeSelector.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/NodeTypeSelector.tsx"],"sourcesContent":["'use client';\n\nimport { getNodeType } from '@intlayer/core/dictionaryManipulator';\nimport type { ContentNode } from '@intlayer/types/dictionary';\nimport type { NodeType } from '@intlayer/types/nodeType';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport { type FC, useState } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Select } from '../Select';\n\ntype NodeTypeSelectorProps = {\n section: ContentNode;\n onValueChange: (keyType: NodeType) => void;\n};\n\nexport const NodeTypeSelector: FC<NodeTypeSelectorProps> = ({\n section,\n onValueChange: onValueChangeProp,\n}) => {\n const {\n multilingual,\n text,\n number,\n boolean,\n node,\n array,\n enumeration,\n plural,\n triggerPlaceHolder,\n nest,\n gender,\n condition,\n markdown,\n insertion,\n reactNode,\n file,\n } = useIntlayer('node-type-selector');\n const nodeType = getNodeType(section);\n const [keyType, setKeyType] = useState<NodeType>(nodeType);\n\n const onValueChange = (keyType: NodeType) => {\n setKeyType(keyType);\n onValueChangeProp(keyType);\n };\n\n return (\n <Select value={keyType} onValueChange={onValueChange}>\n <Select.Trigger>\n <Select.Value placeholder={triggerPlaceHolder} />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value={NodeTypes.TRANSLATION}>{multilingual}</Select.Item>\n <Select.Item value={NodeTypes.TEXT}>{text}</Select.Item>\n <Select.Item value={NodeTypes.NUMBER}>{number}</Select.Item>\n <Select.Item value={NodeTypes.BOOLEAN}>{boolean}</Select.Item>\n <Select.Item value={NodeTypes.OBJECT}>{node}</Select.Item>\n <Select.Item value={NodeTypes.ARRAY}>{array}</Select.Item>\n <Select.Item value={NodeTypes.ENUMERATION}>{enumeration}</Select.Item>\n <Select.Item value={NodeTypes.PLURAL}>{plural}</Select.Item>\n <Select.Item value={NodeTypes.GENDER}>{gender}</Select.Item>\n <Select.Item value={NodeTypes.INSERTION}>{insertion}</Select.Item>\n <Select.Item value={NodeTypes.MARKDOWN}>{markdown}</Select.Item>\n <Select.Item value={NodeTypes.NESTED}>{nest}</Select.Item>\n <Select.Item value={NodeTypes.CONDITION}>{condition}</Select.Item>\n <Select.Item value={NodeTypes.REACT_NODE} disabled>\n {reactNode}\n </Select.Item>\n <Select.Item value={NodeTypes.FILE}>{file}</Select.Item>\n </Select.Content>\n </Select>\n );\n};\n"],"mappings":";;;;;;;;;;AAeA,MAAa,oBAA+C,EAC1D,SACA,eAAe,wBACX;CACJ,MAAM,EACJ,cACA,MACA,QACA,SACA,MACA,OACA,aACA,QACA,oBACA,MACA,QACA,WACA,UACA,WACA,WACA,SACE,YAAY,oBAAoB;CAEpC,MAAM,CAAC,SAAS,cAAc,SADb,YAAY,OAC2B,CAAC;CAEzD,MAAM,iBAAiB,YAAsB;EAC3C,WAAW,OAAO;EAClB,kBAAkB,OAAO;CAC3B;CAEA,OACE,qBAAC,QAAD;EAAQ,OAAO;EAAwB;YAAvC,CACE,oBAAC,OAAO,SAAR,YACE,oBAAC,OAAO,OAAR,EAAc,aAAa,mBAAqB,GAClC,IAChB,qBAAC,OAAO,SAAR;GACE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAc;GAA0B;GACtE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAO;GAAkB;GACvD,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;GAAoB;GAC3D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAU;GAAqB;GAC7D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;GAAkB;GACzD,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAQ;GAAmB;GACzD,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAc;GAAyB;GACrE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;GAAoB;GAC3D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;GAAoB;GAC3D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAY;GAAuB;GACjE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAW;GAAsB;GAC/D,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAS;GAAkB;GACzD,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAY;GAAuB;GACjE,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;IAAY;cACvC;GACU;GACb,oBAAC,OAAO,MAAR;IAAa,OAAO,UAAU;cAAO;GAAkB;EACzC,IACV;;AAEZ"}
@@ -1,16 +1,16 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../../utils/cn.mjs";
4
- import { ButtonColor, ButtonVariant } from "../../Button/Button.mjs";
5
4
  import { useAuth } from "../../../hooks/useAuth/useAuth.mjs";
6
5
  import { useDeleteDictionary, usePushDictionaries, useWriteDictionary } from "../../../hooks/reactQuery.mjs";
6
+ import { ButtonColor, ButtonVariant } from "../../Button/Button.mjs";
7
7
  import { Form } from "../../Form/Form.mjs";
8
8
  import { Modal, ModalSize } from "../../Modal/Modal.mjs";
9
9
  import { useState } from "react";
10
10
  import { ArrowUpFromLine, Download, RotateCcw, Save, Trash } from "lucide-react";
11
11
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
12
- import { useIntlayer } from "react-intlayer";
13
12
  import { useDictionariesRecordActions, useEditedContent } from "@intlayer/editor-react";
13
+ import { useIntlayer } from "react-intlayer";
14
14
 
15
15
  //#region src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx
16
16
  const SaveForm = ({ dictionary, mode, className, onDelete, onSave, ...props }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SaveForm.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx"],"sourcesContent":["'use client';\n\nimport { ButtonColor, ButtonVariant } from '@components/Button';\nimport { Form } from '@components/Form';\nimport { Modal, ModalSize } from '@components/Modal';\nimport {\n useAuth,\n useDeleteDictionary,\n usePushDictionaries,\n useWriteDictionary,\n} from '@hooks/index';\nimport type { Dictionary as DistantDictionary } from '@intlayer/backend';\nimport {\n useDictionariesRecordActions,\n useEditedContent,\n} from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport { cn } from '@utils/cn';\nimport {\n ArrowUpFromLine,\n Download,\n RotateCcw,\n Save,\n Trash,\n} from 'lucide-react';\nimport {\n type DetailedHTMLProps,\n type FC,\n type FormHTMLAttributes,\n useState,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n mode: ('local' | 'remote')[];\n onDelete?: () => void;\n onSave?: () => void;\n} & DetailedHTMLProps<FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>;\n\nexport const SaveForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n mode,\n className,\n onDelete,\n onSave,\n ...props\n}) => {\n const [isFormatAlertModalOpen, setIsFormatAlertModalOpen] = useState(false);\n const { setLocaleDictionary } = useDictionariesRecordActions();\n const { mutate: deleteDictionary, isPending: isDeleting } =\n useDeleteDictionary();\n const { mutate: writeDictionary, isPending: isWriting } =\n useWriteDictionary();\n const { mutate: pushDictionaries, isPending: isPushing } =\n usePushDictionaries();\n const isLoading = isWriting || isPushing;\n\n const { editedContent, restoreEditedContent } = useEditedContent();\n const {\n deleteButton,\n resetButton,\n saveButton,\n publishButton,\n downloadButton,\n confirmation,\n } = useIntlayer('save-dictionary-details');\n const { isAuthenticated } = useAuth();\n\n const editedDictionary = editedContent?.[dictionary.localId!];\n\n const isEdited =\n editedDictionary &&\n JSON.stringify(editedDictionary) !== JSON.stringify(dictionary);\n\n const isDistantDictionary =\n typeof (dictionary as unknown as DistantDictionary)?.id !== 'undefined';\n\n const handleSaveDictionaryConfirmation = async () => {\n if (!editedContent?.[dictionary.localId!]) return;\n\n const updatedDictionary = {\n ...dictionary,\n ...editedContent?.[dictionary.localId!],\n };\n\n writeDictionary(\n {\n dictionary: updatedDictionary,\n },\n {\n onSuccess: () => {\n setLocaleDictionary(editedContent?.[dictionary.localId!]);\n restoreEditedContent(dictionary.localId!);\n setIsFormatAlertModalOpen(false);\n onSave?.();\n },\n }\n );\n };\n\n const handlePushDictionary = () => {\n const updatedDictionary = {\n ...dictionary,\n ...editedContent?.[dictionary.localId!],\n };\n\n pushDictionaries(\n { dictionaries: [updatedDictionary] },\n {\n onSuccess: (res) => {\n if (res) {\n setLocaleDictionary(updatedDictionary);\n restoreEditedContent(dictionary.localId!);\n onSave?.();\n }\n },\n }\n );\n };\n\n const handleDeleteDictionary = () => {\n if (!dictionary.id) return;\n\n deleteDictionary(\n {\n dictionaryId: dictionary.id,\n },\n {\n onSuccess: (res) => {\n if (res) {\n onDelete?.();\n }\n },\n }\n );\n };\n\n return (\n <>\n <Modal\n isOpen={isFormatAlertModalOpen}\n title={confirmation.title.value}\n size={ModalSize.MD}\n onClose={() => setIsFormatAlertModalOpen(false)}\n padding=\"md\"\n >\n <form className=\"size-full\">\n <p className=\"py-4 text-neutral text-sm\">{confirmation.message}</p>\n\n <div className=\"mt-12 flex justify-end gap-2 max-md:flex-col\">\n <Form.Button\n label={confirmation.cancelButton.label.value}\n disabled={!isEdited || isLoading}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n variant={ButtonVariant.OUTLINE}\n onClick={() => setIsFormatAlertModalOpen(false)}\n >\n {confirmation.cancelButton.text}\n </Form.Button>\n <Form.Button\n label={confirmation.confirmButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Save}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handleSaveDictionaryConfirmation}\n >\n {confirmation.confirmButton.text}\n </Form.Button>\n </div>\n </form>\n </Modal>\n <form className={cn('flex justify-end gap-2', className)} {...props}>\n {mode.includes('remote') &&\n isDistantDictionary &&\n onDelete &&\n isAuthenticated && (\n <Form.Button\n label={deleteButton.label.value}\n Icon={Trash}\n color={ButtonColor.ERROR}\n variant={ButtonVariant.OUTLINE}\n className=\"max-md:w-full\"\n isLoading={isDeleting}\n onClick={handleDeleteDictionary}\n >\n {deleteButton.text}\n </Form.Button>\n )}\n {isEdited && (\n <Form.Button\n label={resetButton.label.value}\n disabled={!isEdited}\n Icon={RotateCcw}\n variant={ButtonVariant.OUTLINE}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n onClick={() => restoreEditedContent(dictionary.localId!)}\n >\n {resetButton.text}\n </Form.Button>\n )}\n {mode.includes('local') && (\n <Form.Button\n label={downloadButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Download}\n color={ButtonColor.TEXT}\n variant={\n isAuthenticated ? ButtonVariant.OUTLINE : ButtonVariant.DEFAULT\n }\n className=\"max-md:w-full\"\n isLoading={isWriting}\n onClick={() => setIsFormatAlertModalOpen(true)}\n >\n {downloadButton.text}\n </Form.Button>\n )}\n {mode.includes('remote') && isAuthenticated && !isDistantDictionary && (\n <Form.Button\n label={publishButton.label.value}\n disabled={isLoading}\n Icon={ArrowUpFromLine}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handlePushDictionary}\n >\n {publishButton.text}\n </Form.Button>\n )}\n {mode.includes('remote') &&\n isAuthenticated &&\n isDistantDictionary &&\n isEdited && (\n <Form.Button\n label={saveButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Save}\n color=\"text\"\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handlePushDictionary}\n >\n {saveButton.text}\n </Form.Button>\n )}\n </form>\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"SaveForm.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx"],"sourcesContent":["'use client';\n\nimport { ButtonColor, ButtonVariant } from '@components/Button';\nimport { Form } from '@components/Form';\nimport { Modal, ModalSize } from '@components/Modal';\nimport {\n useAuth,\n useDeleteDictionary,\n usePushDictionaries,\n useWriteDictionary,\n} from '@hooks/index';\nimport type { Dictionary as DistantDictionary } from '@intlayer/backend';\nimport {\n useDictionariesRecordActions,\n useEditedContent,\n} from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport { cn } from '@utils/cn';\nimport {\n ArrowUpFromLine,\n Download,\n RotateCcw,\n Save,\n Trash,\n} from 'lucide-react';\nimport {\n type DetailedHTMLProps,\n type FC,\n type FormHTMLAttributes,\n useState,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n mode: ('local' | 'remote')[];\n onDelete?: () => void;\n onSave?: () => void;\n} & DetailedHTMLProps<FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>;\n\nexport const SaveForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n mode,\n className,\n onDelete,\n onSave,\n ...props\n}) => {\n const [isFormatAlertModalOpen, setIsFormatAlertModalOpen] = useState(false);\n const { setLocaleDictionary } = useDictionariesRecordActions();\n const { mutate: deleteDictionary, isPending: isDeleting } =\n useDeleteDictionary();\n const { mutate: writeDictionary, isPending: isWriting } =\n useWriteDictionary();\n const { mutate: pushDictionaries, isPending: isPushing } =\n usePushDictionaries();\n const isLoading = isWriting || isPushing;\n\n const { editedContent, restoreEditedContent } = useEditedContent();\n const {\n deleteButton,\n resetButton,\n saveButton,\n publishButton,\n downloadButton,\n confirmation,\n } = useIntlayer('save-dictionary-details');\n const { isAuthenticated } = useAuth();\n\n const editedDictionary = editedContent?.[dictionary.localId!];\n\n const isEdited =\n editedDictionary &&\n JSON.stringify(editedDictionary) !== JSON.stringify(dictionary);\n\n const isDistantDictionary =\n typeof (dictionary as unknown as DistantDictionary)?.id !== 'undefined';\n\n const handleSaveDictionaryConfirmation = async () => {\n if (!editedContent?.[dictionary.localId!]) return;\n\n const updatedDictionary = {\n ...dictionary,\n ...editedContent?.[dictionary.localId!],\n };\n\n writeDictionary(\n {\n dictionary: updatedDictionary,\n },\n {\n onSuccess: () => {\n setLocaleDictionary(editedContent?.[dictionary.localId!]);\n restoreEditedContent(dictionary.localId!);\n setIsFormatAlertModalOpen(false);\n onSave?.();\n },\n }\n );\n };\n\n const handlePushDictionary = () => {\n const updatedDictionary = {\n ...dictionary,\n ...editedContent?.[dictionary.localId!],\n };\n\n pushDictionaries(\n { dictionaries: [updatedDictionary] },\n {\n onSuccess: (res) => {\n if (res) {\n setLocaleDictionary(updatedDictionary);\n restoreEditedContent(dictionary.localId!);\n onSave?.();\n }\n },\n }\n );\n };\n\n const handleDeleteDictionary = () => {\n if (!dictionary.id) return;\n\n deleteDictionary(\n {\n dictionaryId: dictionary.id,\n },\n {\n onSuccess: (res) => {\n if (res) {\n onDelete?.();\n }\n },\n }\n );\n };\n\n return (\n <>\n <Modal\n isOpen={isFormatAlertModalOpen}\n title={confirmation.title.value}\n size={ModalSize.MD}\n onClose={() => setIsFormatAlertModalOpen(false)}\n padding=\"md\"\n >\n <form className=\"size-full\">\n <p className=\"py-4 text-neutral text-sm\">{confirmation.message}</p>\n\n <div className=\"mt-12 flex justify-end gap-2 max-md:flex-col\">\n <Form.Button\n label={confirmation.cancelButton.label.value}\n disabled={!isEdited || isLoading}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n variant={ButtonVariant.OUTLINE}\n onClick={() => setIsFormatAlertModalOpen(false)}\n >\n {confirmation.cancelButton.text}\n </Form.Button>\n <Form.Button\n label={confirmation.confirmButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Save}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handleSaveDictionaryConfirmation}\n >\n {confirmation.confirmButton.text}\n </Form.Button>\n </div>\n </form>\n </Modal>\n <form className={cn('flex justify-end gap-2', className)} {...props}>\n {mode.includes('remote') &&\n isDistantDictionary &&\n onDelete &&\n isAuthenticated && (\n <Form.Button\n label={deleteButton.label.value}\n Icon={Trash}\n color={ButtonColor.ERROR}\n variant={ButtonVariant.OUTLINE}\n className=\"max-md:w-full\"\n isLoading={isDeleting}\n onClick={handleDeleteDictionary}\n >\n {deleteButton.text}\n </Form.Button>\n )}\n {isEdited && (\n <Form.Button\n label={resetButton.label.value}\n disabled={!isEdited}\n Icon={RotateCcw}\n variant={ButtonVariant.OUTLINE}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n onClick={() => restoreEditedContent(dictionary.localId!)}\n >\n {resetButton.text}\n </Form.Button>\n )}\n {mode.includes('local') && (\n <Form.Button\n label={downloadButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Download}\n color={ButtonColor.TEXT}\n variant={\n isAuthenticated ? ButtonVariant.OUTLINE : ButtonVariant.DEFAULT\n }\n className=\"max-md:w-full\"\n isLoading={isWriting}\n onClick={() => setIsFormatAlertModalOpen(true)}\n >\n {downloadButton.text}\n </Form.Button>\n )}\n {mode.includes('remote') && isAuthenticated && !isDistantDictionary && (\n <Form.Button\n label={publishButton.label.value}\n disabled={isLoading}\n Icon={ArrowUpFromLine}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handlePushDictionary}\n >\n {publishButton.text}\n </Form.Button>\n )}\n {mode.includes('remote') &&\n isAuthenticated &&\n isDistantDictionary &&\n isEdited && (\n <Form.Button\n label={saveButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Save}\n color=\"text\"\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handlePushDictionary}\n >\n {saveButton.text}\n </Form.Button>\n )}\n </form>\n </>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"saveForm.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/SaveForm/saveForm.content.tsx"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const saveDictionaryContent = {\n key: 'save-dictionary-details',\n content: {\n deleteButton: {\n text: t({\n en: 'Delete dictionary',\n 'en-GB': 'Delete dictionary',\n fr: 'Supprimer le dictionnaire',\n es: 'Eliminar diccionario',\n de: 'Wörterbuch löschen',\n ja: '辞書を削除',\n ko: '사전 삭제',\n zh: '删除字典',\n it: 'Elimina dizionario',\n pt: 'Excluir dicionário',\n hi: 'शब्दकोश हटाएं',\n ar: 'حذف القاموس',\n ru: 'Удалить словарь',\n tr: 'Sözlüğü sil',\n pl: 'Usuń słownik',\n id: 'Hapus dictionary',\n vi: 'Xóa dictionary',\n uk: 'Видалити словник',\n }),\n label: t({\n en: 'Click to delete dictionary',\n 'en-GB': 'Click to delete dictionary',\n fr: 'Cliquez pour supprimer le dictionnaire',\n es: 'Haga clic para eliminar el diccionario',\n de: 'Klicken Sie, um das Wörterbuch zu löschen',\n ja: '辞書を削除するにはクリックしてください',\n ko: '사전을 삭제하려면 클릭하세요',\n zh: '单击以删除字典',\n it: 'Fai clic per eliminare il dizionario',\n pt: 'Clique para excluir o dicionário',\n hi: 'शब्दकोश हटाने के लिए क्लिक करें',\n ar: 'انقر لحذف القاموس',\n ru: 'Нажмите, чтобы удалить словарь',\n tr: 'Sözlüğü silmek için tıklayın',\n pl: 'Kliknij, aby usunąć słownik',\n id: 'Klik untuk menghapus dictionary',\n vi: 'Nhấp để xóa dictionary',\n uk: 'Натисніть, щоб видалити словник',\n }),\n },\n resetButton: {\n text: t({\n en: 'Reset all changes',\n 'en-GB': 'Reset all changes',\n fr: 'Réinitialiser toutes les modifications',\n es: 'Restablecer todas las modificaciones',\n de: 'Alle Änderungen zurücksetzen',\n ja: 'すべての変更をリセット',\n ko: '모든 변경 사항 초기화',\n zh: '重置所有更改',\n it: 'Reimposta tutte le modifiche',\n pt: 'Redefinir todas as alterações',\n hi: 'सभी परिवर्तनों को रीसेट करें',\n ar: 'إعادة تعيين جميع التغييرات',\n ru: 'Сбросить все изменения',\n tr: 'Tüm değişiklikleri sıfırla',\n pl: 'Resetuj wszystkie zmiany',\n id: 'Reset semua perubahan',\n vi: 'Đặt lại tất cả các thay đổi',\n uk: 'Скинути всі зміни',\n }),\n label: t({\n en: 'Click to reset all the changes',\n 'en-GB': 'Click to reset all the changes',\n fr: 'Cliquez pour réinitialiser toutes les modifications',\n es: 'Haga clic para restablecer todas las modificaciones',\n de: 'Klicken Sie, um alle Änderungen zurückzusetzen',\n ja: 'すべての変更をリセットするにはクリックしてください',\n ko: '모든 변경 사항을 초기화하려면 클릭하세요',\n zh: '单击以重置所有更改',\n it: 'Fai clic per ripristinare tutte le modifiche',\n pt: 'Clique para redefinir todas as alterações',\n hi: 'सभी परिवर्तनों को रीसेट करने के लिए क्लिक करें',\n ar: 'انقر لإعادة تعيين جميع التغييرات',\n ru: 'Нажмите, чтобы сбросить все изменения',\n tr: 'Tüm değişiklikleri sıfırlamak için tıklayın',\n pl: 'Kliknij, aby zresetować wszystkie zmiany',\n id: 'Klik untuk mereset semua perubahan',\n vi: 'Nhấp để đặt lại tất cả các thay đổi',\n uk: 'Натисніть, щоб скинути всі зміни',\n }),\n },\n saveButton: {\n text: t({\n en: 'Save changes',\n 'en-GB': 'Save changes',\n fr: 'Enregistrer les modifications',\n es: 'Guardar cambios',\n de: 'Änderungen speichern',\n ja: '変更を保存',\n ko: '변경 사항 저장',\n zh: '保存更改',\n it: 'Salva le modifiche',\n pt: 'Salvar alterações',\n hi: 'परिवर्तनों को सहेजें',\n ar: 'احفظ التغييرات',\n ru: 'Сохранить изменения',\n tr: 'Değişiklikleri kaydet',\n pl: 'Zapisz zmiany',\n id: 'Simpan perubahan',\n vi: 'Lưu thay đổi',\n uk: 'Зберегти зміни',\n }),\n label: t({\n en: 'Click to save changes',\n 'en-GB': 'Click to save changes',\n fr: 'Cliquez pour enregistrer les modifications',\n es: 'Haga clic para guardar cambios',\n de: 'Klicken Sie, um Änderungen zu speichern',\n ja: '変更を保存するにはクリックしてください',\n ko: '변경 사항을 저장하려면 클릭하세요',\n zh: '单击保存更改',\n it: 'Fai clic per salvare le modifiche',\n pt: 'Clique para salvar alterações',\n hi: 'परिवर्तनों को सहेजने के लिए क्लिक करें',\n ar: 'انقر لحفظ التغييرات',\n ru: 'Нажмите, чтобы сохранить изменения',\n tr: 'Değişiklikleri kaydetmek için tıklayın',\n pl: 'Kliknij, aby zapisać zmiany',\n id: 'Klik untuk menyimpan perubahan',\n vi: 'Nhấp để lưu các thay đổi',\n uk: 'Натисніть, щоб зберегти зміни',\n }),\n },\n publishButton: {\n text: t({\n en: 'Publish dictionary',\n 'en-GB': 'Publish dictionary',\n fr: 'Publier dictionnaire',\n es: 'Publicar diccionario',\n de: 'Wörterbuch veröffentlichen',\n ja: '辞書を公開',\n ko: '사전을 게시합니다',\n zh: '发布字典',\n it: 'Pubblica dizionario',\n pt: 'Publicar dicionário',\n hi: 'शब्दकोश प्रकाशित करें',\n ar: 'نشر القاموس',\n ru: 'Опубликовать словарь',\n tr: 'Sözlüğü yayınla',\n pl: 'Opublikuj słownik',\n id: 'Publikasikan dictionary',\n vi: 'Xuất bản dictionary',\n uk: 'Опублікувати словник',\n }),\n label: t({\n en: 'Click to publish dictionary',\n 'en-GB': 'Click to publish dictionary',\n fr: 'Cliquez pour publier dictionnaire',\n es: 'Haga clic para publicar diccionario',\n de: 'Klicken Sie, um das Wörterbuch zu veröffentlichen',\n ja: '辞書を公開するにはクリックしてください',\n ko: '사전을 게시하려면 클릭하세요',\n zh: '单击以发布字典',\n it: 'Fai clic per pubblicare il dizionario',\n pt: 'Clique para publicar dicionário',\n hi: 'शब्दकोश प्रकाशित करने के लिए क्लिक करें',\n ar: 'انقر لنشر القاموس',\n ru: 'Нажмите, чтобы опубликовать словарь',\n tr: 'Sözlüğü yayınlamak için tıklayın',\n pl: 'Kliknij, aby opublikować słownik',\n id: 'Klik untuk mempublikasikan dictionary',\n vi: 'Nhấp để xuất bản dictionary',\n uk: 'Натисніть, щоб опублікувати словник',\n }),\n },\n downloadButton: {\n text: t({\n en: 'Download',\n 'en-GB': 'Download',\n fr: 'Télécharger',\n es: 'Descargar',\n de: 'Herunterladen',\n ja: 'ダウンロード',\n ko: '다운로드',\n zh: '下载',\n it: 'Scarica',\n pt: 'Baixar',\n hi: 'डाउनलोड',\n ar: 'تنزيل',\n ru: 'Скачать',\n tr: 'İndir',\n pl: 'Pobierz',\n id: 'Unduh',\n vi: 'Tải xuống',\n uk: 'Завантажити',\n }),\n label: t({\n en: 'Click to download',\n 'en-GB': 'Click to download',\n fr: 'Cliquez pour télécharger',\n es: 'Haga clic para descargar',\n de: 'Klicken Sie, um herunterzuladen',\n ja: 'ダウンロードするにはクリックしてください',\n ko: '다운로드를 클릭하세요',\n zh: '单击下载',\n it: 'Fai clic per scaricare',\n pt: 'Clique para baixar',\n hi: 'डाउनलोड करने के लिए क्लिक करें',\n ar: 'انقر لتنزيل',\n ru: 'Нажмите, чтобы скачать',\n tr: 'İndirmek için tıklayın',\n pl: 'Kliknij, aby pobrać',\n id: 'Klik untuk mengunduh',\n vi: 'Nhấp để tải xuống',\n uk: 'Натисніть, щоб завантажити',\n }),\n },\n\n confirmation: {\n title: t({\n en: 'Confirmation',\n 'en-GB': 'Confirmation',\n fr: 'Confirmation',\n es: 'Confirmación',\n de: 'Bestätigung',\n ja: '確認',\n ko: '확인',\n zh: '确认',\n it: 'Conferma',\n pt: 'Confirmação',\n hi: 'पुष्टि करें',\n ar: 'تأكيد',\n ru: 'Подтверждение',\n tr: 'Onay',\n pl: 'Potwierdzenie',\n id: 'Konfirmasi',\n vi: 'Xác nhận',\n uk: 'Підтвердження',\n }),\n message: t({\n en: 'This will overwrite the existing dictionary. Are you sure you want to continue?',\n 'en-GB':\n 'This will overwrite the existing dictionary. Are you sure you want to continue?',\n fr: 'Cela remplacera le dictionnaire existant. Êtes-vous sûr de vouloir continuer?',\n es: 'Esto sobrescribirá el diccionario existente. ¿Estás seguro de que quieres continuar?',\n de: 'Dies wird das existierende Wörterbuch überschreiben. Sind Sie sicher, dass Sie fortfahren möchten?',\n ja: '既存の辞書を上書きします。続行しますか?',\n ko: '이는 기존 사전을 덮어 쓸 것입니다. 계속하시겠습니까?',\n zh: '这将覆盖现有的字典。你确定要继续吗?',\n it: 'Questo sovrascriverà il dizionario esistente. Sei sicuro di voler continuare?',\n pt: 'Isso sobrescreverá o dicionário existente. Você tem certeza de que deseja continuar?',\n hi: 'यह मौजूदा शब्दकोश को अधिलेखित कर देगा। क्या आप जारी रखना चाहते हैं?',\n ar: 'سيتم الكتابة على القاموس الحالي. هل أنت متأكد من أنك تريد المتابعة؟',\n ru: 'Это перезапишет существующий словарь. Вы уверены, что хотите продолжить?',\n tr: 'Bu, mevcut sözlüğün üzerine yazacaktır. Devam etmek istediğinizden emin misiniz?',\n pl: 'To spowoduje nadpisanie istniejącego słownika. Czy na pewno chcesz kontynuować?',\n id: 'Tindakan ini akan menimpa dictionary yang ada. Apakah Anda yakin ingin melanjutkan?',\n vi: 'Hành động này sẽ ghi đè lên dictionary hiện có. Bạn có chắc muốn tiếp tục không?',\n uk: 'Це перезапише існуючий словник. Ви впевнені, що хочете продовжити?',\n }),\n confirmButton: {\n text: t({\n en: 'Confirm',\n 'en-GB': 'Confirm',\n fr: 'Confirmer',\n es: 'Confirmar',\n de: 'Bestätigen',\n ja: '確認',\n ko: '확인',\n zh: '确认',\n it: 'Conferma',\n pt: 'Confirmar',\n hi: 'पुष्टि करें',\n ar: 'تأكيد',\n ru: 'Подтвердить',\n tr: 'Onayla',\n pl: 'Potwierdź',\n id: 'Konfirmasi',\n vi: 'Xác nhận',\n uk: 'Підтвердити',\n }),\n label: t({\n en: 'Click to confirm',\n 'en-GB': 'Click to confirm',\n fr: 'Cliquez pour confirmer',\n es: 'Haga clic para confirmar',\n de: 'Klicken Sie, um zu bestätigen',\n ja: '確認するにはクリックしてください',\n ko: '확인을 클릭하세요',\n zh: '单击确认',\n it: 'Fai clic per confermare',\n pt: 'Clique para confirmar',\n hi: 'पुष्टि करने के लिए क्लिक करें',\n ar: 'انقر لتأكيد',\n ru: 'Нажмите, чтобы подтвердить',\n tr: 'Onaylamak için tıklayın',\n pl: 'Kliknij, aby potwierdzić',\n id: 'Klik untuk mengonfirmasi',\n vi: 'Nhấp để xác nhận',\n uk: 'Натисніть, щоб підтвердити',\n }),\n },\n cancelButton: {\n text: t({\n en: 'Cancel',\n 'en-GB': 'Cancel',\n fr: 'Annuler',\n es: 'Cancelar',\n de: 'Abbrechen',\n ja: 'キャンセル',\n ko: '취소',\n zh: '取消',\n it: 'Annulla',\n pt: 'Cancelar',\n hi: 'रद्द करें',\n ar: 'إلغاء',\n ru: 'Отмена',\n tr: 'İptal',\n pl: 'Anuluj',\n id: 'Batal',\n vi: 'Hủy',\n uk: 'Скасувати',\n }),\n label: t({\n en: 'Click to cancel',\n 'en-GB': 'Click to cancel',\n fr: 'Cliquez pour annuler',\n es: 'Haga clic para cancelar',\n de: 'Klicken Sie, um abzubrechen',\n ja: 'キャンセルするにはクリックしてください',\n ko: '취소를 클릭하세요',\n zh: '单击取消',\n it: 'Fai clic per annullare',\n pt: 'Clique para cancelar',\n hi: 'रद्द करने के लिए क्लिक करें',\n ar: 'انقر لإلغاء',\n ru: 'Нажмите, чтобы отменить',\n tr: 'İptal etmek için tıklayın',\n pl: 'Kliknij, aby anulować',\n id: 'Klik untuk membatalkan',\n vi: 'Nhấp để hủy',\n uk: 'Натисніть, щоб скасувати',\n }),\n },\n },\n },\n title: 'Save dictionary details',\n description:\n 'Content declarations for managing dictionary actions including saving, deleting, resetting, publishing, and downloading, with confirmation prompts for updates or overwrites.',\n tags: ['dictionary management', 'dictionary editor'],\n} satisfies Dictionary;\n\nexport default saveDictionaryContent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"saveForm.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/SaveForm/saveForm.content.tsx"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const saveDictionaryContent = {\n key: 'save-dictionary-details',\n content: {\n deleteButton: {\n text: t({\n en: 'Delete dictionary',\n 'en-GB': 'Delete dictionary',\n fr: 'Supprimer le dictionnaire',\n es: 'Eliminar diccionario',\n de: 'Wörterbuch löschen',\n ja: '辞書を削除',\n ko: '사전 삭제',\n zh: '删除字典',\n it: 'Elimina dizionario',\n pt: 'Excluir dicionário',\n hi: 'शब्दकोश हटाएं',\n ar: 'حذف القاموس',\n ru: 'Удалить словарь',\n tr: 'Sözlüğü sil',\n pl: 'Usuń słownik',\n id: 'Hapus dictionary',\n vi: 'Xóa dictionary',\n uk: 'Видалити словник',\n }),\n label: t({\n en: 'Click to delete dictionary',\n 'en-GB': 'Click to delete dictionary',\n fr: 'Cliquez pour supprimer le dictionnaire',\n es: 'Haga clic para eliminar el diccionario',\n de: 'Klicken Sie, um das Wörterbuch zu löschen',\n ja: '辞書を削除するにはクリックしてください',\n ko: '사전을 삭제하려면 클릭하세요',\n zh: '单击以删除字典',\n it: 'Fai clic per eliminare il dizionario',\n pt: 'Clique para excluir o dicionário',\n hi: 'शब्दकोश हटाने के लिए क्लिक करें',\n ar: 'انقر لحذف القاموس',\n ru: 'Нажмите, чтобы удалить словарь',\n tr: 'Sözlüğü silmek için tıklayın',\n pl: 'Kliknij, aby usunąć słownik',\n id: 'Klik untuk menghapus dictionary',\n vi: 'Nhấp để xóa dictionary',\n uk: 'Натисніть, щоб видалити словник',\n }),\n },\n resetButton: {\n text: t({\n en: 'Reset all changes',\n 'en-GB': 'Reset all changes',\n fr: 'Réinitialiser toutes les modifications',\n es: 'Restablecer todas las modificaciones',\n de: 'Alle Änderungen zurücksetzen',\n ja: 'すべての変更をリセット',\n ko: '모든 변경 사항 초기화',\n zh: '重置所有更改',\n it: 'Reimposta tutte le modifiche',\n pt: 'Redefinir todas as alterações',\n hi: 'सभी परिवर्तनों को रीसेट करें',\n ar: 'إعادة تعيين جميع التغييرات',\n ru: 'Сбросить все изменения',\n tr: 'Tüm değişiklikleri sıfırla',\n pl: 'Resetuj wszystkie zmiany',\n id: 'Reset semua perubahan',\n vi: 'Đặt lại tất cả các thay đổi',\n uk: 'Скинути всі зміни',\n }),\n label: t({\n en: 'Click to reset all the changes',\n 'en-GB': 'Click to reset all the changes',\n fr: 'Cliquez pour réinitialiser toutes les modifications',\n es: 'Haga clic para restablecer todas las modificaciones',\n de: 'Klicken Sie, um alle Änderungen zurückzusetzen',\n ja: 'すべての変更をリセットするにはクリックしてください',\n ko: '모든 변경 사항을 초기화하려면 클릭하세요',\n zh: '单击以重置所有更改',\n it: 'Fai clic per ripristinare tutte le modifiche',\n pt: 'Clique para redefinir todas as alterações',\n hi: 'सभी परिवर्तनों को रीसेट करने के लिए क्लिक करें',\n ar: 'انقر لإعادة تعيين جميع التغييرات',\n ru: 'Нажмите, чтобы сбросить все изменения',\n tr: 'Tüm değişiklikleri sıfırlamak için tıklayın',\n pl: 'Kliknij, aby zresetować wszystkie zmiany',\n id: 'Klik untuk mereset semua perubahan',\n vi: 'Nhấp để đặt lại tất cả các thay đổi',\n uk: 'Натисніть, щоб скинути всі зміни',\n }),\n },\n saveButton: {\n text: t({\n en: 'Save changes',\n 'en-GB': 'Save changes',\n fr: 'Enregistrer les modifications',\n es: 'Guardar cambios',\n de: 'Änderungen speichern',\n ja: '変更を保存',\n ko: '변경 사항 저장',\n zh: '保存更改',\n it: 'Salva le modifiche',\n pt: 'Salvar alterações',\n hi: 'परिवर्तनों को सहेजें',\n ar: 'احفظ التغييرات',\n ru: 'Сохранить изменения',\n tr: 'Değişiklikleri kaydet',\n pl: 'Zapisz zmiany',\n id: 'Simpan perubahan',\n vi: 'Lưu thay đổi',\n uk: 'Зберегти зміни',\n }),\n label: t({\n en: 'Click to save changes',\n 'en-GB': 'Click to save changes',\n fr: 'Cliquez pour enregistrer les modifications',\n es: 'Haga clic para guardar cambios',\n de: 'Klicken Sie, um Änderungen zu speichern',\n ja: '変更を保存するにはクリックしてください',\n ko: '변경 사항을 저장하려면 클릭하세요',\n zh: '单击保存更改',\n it: 'Fai clic per salvare le modifiche',\n pt: 'Clique para salvar alterações',\n hi: 'परिवर्तनों को सहेजने के लिए क्लिक करें',\n ar: 'انقر لحفظ التغييرات',\n ru: 'Нажмите, чтобы сохранить изменения',\n tr: 'Değişiklikleri kaydetmek için tıklayın',\n pl: 'Kliknij, aby zapisać zmiany',\n id: 'Klik untuk menyimpan perubahan',\n vi: 'Nhấp để lưu các thay đổi',\n uk: 'Натисніть, щоб зберегти зміни',\n }),\n },\n publishButton: {\n text: t({\n en: 'Publish dictionary',\n 'en-GB': 'Publish dictionary',\n fr: 'Publier dictionnaire',\n es: 'Publicar diccionario',\n de: 'Wörterbuch veröffentlichen',\n ja: '辞書を公開',\n ko: '사전을 게시합니다',\n zh: '发布字典',\n it: 'Pubblica dizionario',\n pt: 'Publicar dicionário',\n hi: 'शब्दकोश प्रकाशित करें',\n ar: 'نشر القاموس',\n ru: 'Опубликовать словарь',\n tr: 'Sözlüğü yayınla',\n pl: 'Opublikuj słownik',\n id: 'Publikasikan dictionary',\n vi: 'Xuất bản dictionary',\n uk: 'Опублікувати словник',\n }),\n label: t({\n en: 'Click to publish dictionary',\n 'en-GB': 'Click to publish dictionary',\n fr: 'Cliquez pour publier dictionnaire',\n es: 'Haga clic para publicar diccionario',\n de: 'Klicken Sie, um das Wörterbuch zu veröffentlichen',\n ja: '辞書を公開するにはクリックしてください',\n ko: '사전을 게시하려면 클릭하세요',\n zh: '单击以发布字典',\n it: 'Fai clic per pubblicare il dizionario',\n pt: 'Clique para publicar dicionário',\n hi: 'शब्दकोश प्रकाशित करने के लिए क्लिक करें',\n ar: 'انقر لنشر القاموس',\n ru: 'Нажмите, чтобы опубликовать словарь',\n tr: 'Sözlüğü yayınlamak için tıklayın',\n pl: 'Kliknij, aby opublikować słownik',\n id: 'Klik untuk mempublikasikan dictionary',\n vi: 'Nhấp để xuất bản dictionary',\n uk: 'Натисніть, щоб опублікувати словник',\n }),\n },\n downloadButton: {\n text: t({\n en: 'Download',\n 'en-GB': 'Download',\n fr: 'Télécharger',\n es: 'Descargar',\n de: 'Herunterladen',\n ja: 'ダウンロード',\n ko: '다운로드',\n zh: '下载',\n it: 'Scarica',\n pt: 'Baixar',\n hi: 'डाउनलोड',\n ar: 'تنزيل',\n ru: 'Скачать',\n tr: 'İndir',\n pl: 'Pobierz',\n id: 'Unduh',\n vi: 'Tải xuống',\n uk: 'Завантажити',\n }),\n label: t({\n en: 'Click to download',\n 'en-GB': 'Click to download',\n fr: 'Cliquez pour télécharger',\n es: 'Haga clic para descargar',\n de: 'Klicken Sie, um herunterzuladen',\n ja: 'ダウンロードするにはクリックしてください',\n ko: '다운로드를 클릭하세요',\n zh: '单击下载',\n it: 'Fai clic per scaricare',\n pt: 'Clique para baixar',\n hi: 'डाउनलोड करने के लिए क्लिक करें',\n ar: 'انقر لتنزيل',\n ru: 'Нажмите, чтобы скачать',\n tr: 'İndirmek için tıklayın',\n pl: 'Kliknij, aby pobrać',\n id: 'Klik untuk mengunduh',\n vi: 'Nhấp để tải xuống',\n uk: 'Натисніть, щоб завантажити',\n }),\n },\n\n confirmation: {\n title: t({\n en: 'Confirmation',\n 'en-GB': 'Confirmation',\n fr: 'Confirmation',\n es: 'Confirmación',\n de: 'Bestätigung',\n ja: '確認',\n ko: '확인',\n zh: '确认',\n it: 'Conferma',\n pt: 'Confirmação',\n hi: 'पुष्टि करें',\n ar: 'تأكيد',\n ru: 'Подтверждение',\n tr: 'Onay',\n pl: 'Potwierdzenie',\n id: 'Konfirmasi',\n vi: 'Xác nhận',\n uk: 'Підтвердження',\n }),\n message: t({\n en: 'This will overwrite the existing dictionary. Are you sure you want to continue?',\n 'en-GB':\n 'This will overwrite the existing dictionary. Are you sure you want to continue?',\n fr: 'Cela remplacera le dictionnaire existant. Êtes-vous sûr de vouloir continuer?',\n es: 'Esto sobrescribirá el diccionario existente. ¿Estás seguro de que quieres continuar?',\n de: 'Dies wird das existierende Wörterbuch überschreiben. Sind Sie sicher, dass Sie fortfahren möchten?',\n ja: '既存の辞書を上書きします。続行しますか?',\n ko: '이는 기존 사전을 덮어 쓸 것입니다. 계속하시겠습니까?',\n zh: '这将覆盖现有的字典。你确定要继续吗?',\n it: 'Questo sovrascriverà il dizionario esistente. Sei sicuro di voler continuare?',\n pt: 'Isso sobrescreverá o dicionário existente. Você tem certeza de que deseja continuar?',\n hi: 'यह मौजूदा शब्दकोश को अधिलेखित कर देगा। क्या आप जारी रखना चाहते हैं?',\n ar: 'سيتم الكتابة على القاموس الحالي. هل أنت متأكد من أنك تريد المتابعة؟',\n ru: 'Это перезапишет существующий словарь. Вы уверены, что хотите продолжить?',\n tr: 'Bu, mevcut sözlüğün üzerine yazacaktır. Devam etmek istediğinizden emin misiniz?',\n pl: 'To spowoduje nadpisanie istniejącego słownika. Czy na pewno chcesz kontynuować?',\n id: 'Tindakan ini akan menimpa dictionary yang ada. Apakah Anda yakin ingin melanjutkan?',\n vi: 'Hành động này sẽ ghi đè lên dictionary hiện có. Bạn có chắc muốn tiếp tục không?',\n uk: 'Це перезапише існуючий словник. Ви впевнені, що хочете продовжити?',\n }),\n confirmButton: {\n text: t({\n en: 'Confirm',\n 'en-GB': 'Confirm',\n fr: 'Confirmer',\n es: 'Confirmar',\n de: 'Bestätigen',\n ja: '確認',\n ko: '확인',\n zh: '确认',\n it: 'Conferma',\n pt: 'Confirmar',\n hi: 'पुष्टि करें',\n ar: 'تأكيد',\n ru: 'Подтвердить',\n tr: 'Onayla',\n pl: 'Potwierdź',\n id: 'Konfirmasi',\n vi: 'Xác nhận',\n uk: 'Підтвердити',\n }),\n label: t({\n en: 'Click to confirm',\n 'en-GB': 'Click to confirm',\n fr: 'Cliquez pour confirmer',\n es: 'Haga clic para confirmar',\n de: 'Klicken Sie, um zu bestätigen',\n ja: '確認するにはクリックしてください',\n ko: '확인을 클릭하세요',\n zh: '单击确认',\n it: 'Fai clic per confermare',\n pt: 'Clique para confirmar',\n hi: 'पुष्टि करने के लिए क्लिक करें',\n ar: 'انقر لتأكيد',\n ru: 'Нажмите, чтобы подтвердить',\n tr: 'Onaylamak için tıklayın',\n pl: 'Kliknij, aby potwierdzić',\n id: 'Klik untuk mengonfirmasi',\n vi: 'Nhấp để xác nhận',\n uk: 'Натисніть, щоб підтвердити',\n }),\n },\n cancelButton: {\n text: t({\n en: 'Cancel',\n 'en-GB': 'Cancel',\n fr: 'Annuler',\n es: 'Cancelar',\n de: 'Abbrechen',\n ja: 'キャンセル',\n ko: '취소',\n zh: '取消',\n it: 'Annulla',\n pt: 'Cancelar',\n hi: 'रद्द करें',\n ar: 'إلغاء',\n ru: 'Отмена',\n tr: 'İptal',\n pl: 'Anuluj',\n id: 'Batal',\n vi: 'Hủy',\n uk: 'Скасувати',\n }),\n label: t({\n en: 'Click to cancel',\n 'en-GB': 'Click to cancel',\n fr: 'Cliquez pour annuler',\n es: 'Haga clic para cancelar',\n de: 'Klicken Sie, um abzubrechen',\n ja: 'キャンセルするにはクリックしてください',\n ko: '취소를 클릭하세요',\n zh: '单击取消',\n it: 'Fai clic per annullare',\n pt: 'Clique para cancelar',\n hi: 'रद्द करने के लिए क्लिक करें',\n ar: 'انقر لإلغاء',\n ru: 'Нажмите, чтобы отменить',\n tr: 'İptal etmek için tıklayın',\n pl: 'Kliknij, aby anulować',\n id: 'Klik untuk membatalkan',\n vi: 'Nhấp để hủy',\n uk: 'Натисніть, щоб скасувати',\n }),\n },\n },\n },\n title: 'Save dictionary details',\n description:\n 'Content declarations for managing dictionary actions including saving, deleting, resetting, publishing, and downloading, with confirmation prompts for updates or overwrites.',\n tags: ['dictionary management', 'dictionary editor'],\n} satisfies Dictionary;\n\nexport default saveDictionaryContent;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StructureEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/StructureEditor.tsx"],"sourcesContent":["'use client';\n\nimport { useEditedContent } from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport type { FC } from 'react';\nimport { NodeView } from './StructureView/StructureView';\n\ntype NodeEditorProps = {\n dictionary: Dictionary;\n};\n\nexport const StructureEditor: FC<NodeEditorProps> = ({ dictionary }) => {\n const { content, localId } = dictionary;\n\n const { editedContent } = useEditedContent();\n const initialSection =\n typeof editedContent?.[localId!]?.content === 'undefined'\n ? content\n : editedContent?.[localId!]?.content;\n\n return (\n <NodeView\n section={initialSection}\n keyPath={[]}\n dictionaryLocalId={localId!}\n />\n );\n};\n"],"mappings":";;;;;;;AAWA,MAAa,mBAAwC,EAAE,iBAAiB;CACtE,MAAM,EAAE,SAAS,YAAY;CAE7B,MAAM,EAAE,kBAAkB,kBAAkB;CAM5C,OACE,oBAAC,UAAD;EACE,SANF,OAAO,gBAAgB,UAAW,YAAY,cAC1C,UACA,gBAAgB,UAAW;EAK7B,SAAS,EAAE;EACX,mBAAmB;EACnB"}
1
+ {"version":3,"file":"StructureEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/StructureEditor.tsx"],"sourcesContent":["'use client';\n\nimport { useEditedContent } from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport type { FC } from 'react';\nimport { NodeView } from './StructureView/StructureView';\n\ntype NodeEditorProps = {\n dictionary: Dictionary;\n};\n\nexport const StructureEditor: FC<NodeEditorProps> = ({ dictionary }) => {\n const { content, localId } = dictionary;\n\n const { editedContent } = useEditedContent();\n const initialSection =\n typeof editedContent?.[localId!]?.content === 'undefined'\n ? content\n : editedContent?.[localId!]?.content;\n\n return (\n <NodeView\n section={initialSection}\n keyPath={[]}\n dictionaryLocalId={localId!}\n />\n );\n};\n"],"mappings":";;;;;;;AAWA,MAAa,mBAAwC,EAAE,iBAAiB;CACtE,MAAM,EAAE,SAAS,YAAY;CAE7B,MAAM,EAAE,kBAAkB,iBAAiB;CAM3C,OACE,oBAAC,UAAD;EACE,SANF,OAAO,gBAAgB,UAAW,YAAY,cAC1C,UACA,gBAAgB,UAAW;EAK7B,SAAS,CAAC;EACV,mBAAmB;CACpB;AAEL"}
@@ -7,8 +7,8 @@ import { EditableFieldInput } from "../../EditableField/EditableFieldInput.mjs";
7
7
  import { NodeTypeSelector } from "../NodeTypeSelector.mjs";
8
8
  import { Plus, Trash } from "lucide-react";
9
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
- import { useIntlayer } from "react-intlayer";
11
10
  import { useConfiguration, useEditedContentActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
11
+ import { useIntlayer } from "react-intlayer";
12
12
  import { getDefaultNode, getNodeChildren, getNodeType } from "@intlayer/core/dictionaryManipulator";
13
13
  import * as NodeTypes from "@intlayer/types/nodeType";
14
14
  import { isSameKeyPath } from "@intlayer/core/utils";
@@ -1 +1 @@
1
- {"version":3,"file":"StructureView.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/StructureView/StructureView.tsx"],"sourcesContent":["'use client';\n\nimport {\n Button,\n ButtonColor,\n ButtonSize,\n ButtonVariant,\n} from '@components/Button';\nimport { Container } from '@components/Container';\nimport { EditableFieldInput } from '@components/EditableField';\nimport { InputVariant } from '@components/Input';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getDefaultNode,\n getNodeChildren,\n getNodeType,\n} from '@intlayer/core/dictionaryManipulator';\nimport { isSameKeyPath } from '@intlayer/core/utils';\nimport {\n useConfiguration,\n useEditedContentActions,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport type { LocalDictionaryId, TypedNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { ContentNode } from 'intlayer';\nimport { Plus, Trash } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { NodeTypeSelector } from '../NodeTypeSelector';\n\ntype NodeTypeViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n onNodeTypeChange: (content?: ContentNode) => void;\n};\n\nconst NodeTypeView: FC<NodeTypeViewProps> = ({\n section,\n dictionaryLocalId,\n keyPath,\n onNodeTypeChange: onNodeTypeChangeProp,\n}) => {\n const locales = useConfiguration()?.internationalization?.locales ?? [];\n const nodeType = getNodeType(section);\n const children = getNodeChildren(section);\n\n const onNodeTypeChange = (content?: ContentNode) => {\n const transformedContent = getDefaultNode(\n nodeType,\n locales,\n content\n ) as ContentNode;\n\n onNodeTypeChangeProp(transformedContent);\n };\n\n if (\n nodeType === NodeTypes.TRANSLATION ||\n nodeType === NodeTypes.CONDITION ||\n nodeType === NodeTypes.GENDER ||\n nodeType === NodeTypes.ENUMERATION ||\n nodeType === NodeTypes.PLURAL\n ) {\n const firstKey = Object.keys(\n (section as unknown as TypedNode)[nodeType as keyof typeof section]\n )[0];\n const childrenKeyPath = [\n ...keyPath,\n { type: nodeType, key: firstKey },\n ] as KeyPath[];\n\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeTypes.ARRAY) {\n const childrenKeyPath = [...keyPath, { type: nodeType, key: 0 } as KeyPath];\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeTypes.OBJECT) {\n return (\n <>\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n <div className=\"mt-6 ml-10\">\n <StructureView\n keyPath={keyPath}\n section={section}\n dictionaryLocalId={dictionaryLocalId}\n />\n </div>\n </>\n );\n }\n\n return (\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(getDefaultNode(nodeType, locales) as ContentNode)\n }\n />\n );\n};\n\ntype NodeWrapperProps = {\n sectionKey?: string;\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const NodeView: FC<NodeWrapperProps> = ({\n sectionKey,\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { focusedContent, setFocusedContentKeyPath } =\n useFocusUnmergedDictionary();\n const { renameEditedContent, addEditedContent } = useEditedContentActions();\n\n const { titleInput, deleteButton } = useIntlayer('structure-view');\n\n const handleRenameNodeKey = (keyName: string) => {\n renameEditedContent(dictionaryLocalId, keyName, keyPath);\n const prevKeyPath: KeyPath[] = keyPath.slice(0, -1);\n const lastKeyPath: KeyPath = keyPath[keyPath.length - 1];\n const newKeyPath: KeyPath[] = [\n ...prevKeyPath,\n { ...lastKeyPath, key: keyName } as KeyPath,\n ];\n setFocusedContentKeyPath(newKeyPath);\n };\n\n return (\n <Container\n transparency=\"xl\"\n roundedSize=\"xl\"\n className=\"w-full min-w-80 gap-2 overflow-auto px-5 py-2\"\n border\n borderColor=\"text\"\n background=\"none\"\n aria-selected={isSameKeyPath(keyPath, focusedContent?.keyPath ?? [])}\n onClick={() => setFocusedContentKeyPath(keyPath)}\n >\n <div className=\"flex w-full flex-col items-start justify-between gap-3\">\n {typeof sectionKey === 'string' && (\n <div className=\"w-full\">\n <div className=\"flex w-full items-center justify-between gap-10\">\n <EditableFieldInput\n name=\"key\"\n aria-label=\"Key\"\n placeholder={titleInput.placeholder.value}\n defaultValue={sectionKey}\n onSave={(value) => handleRenameNodeKey(value)}\n variant={InputVariant.INVISIBLE}\n />\n <Button\n label={deleteButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"translate-x-2\"\n Icon={Trash}\n onClick={() => {\n addEditedContent(dictionaryLocalId, undefined, keyPath);\n\n const parentKeyPath: KeyPath[] = keyPath.slice(0, -1);\n setFocusedContentKeyPath(parentKeyPath);\n }}\n />\n </div>\n\n <span className=\"ml-3 text-neutral text-sm\">\n ( {camelCaseToSentence(sectionKey)} )\n </span>\n </div>\n )}\n <NodeTypeView\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n section={section}\n onNodeTypeChange={(content) => {\n addEditedContent(dictionaryLocalId, content, keyPath);\n }}\n />\n </div>\n </Container>\n );\n};\n\ntype ObjectViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const ObjectView: FC<ObjectViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { addNodeButton } = useIntlayer('structure-view');\n const { setFocusedContentKeyPath } = useFocusUnmergedDictionary();\n const { addEditedContent } = useEditedContentActions();\n\n if (!section || typeof section !== 'object') {\n return <div>Not an object</div>;\n }\n\n return (\n <div className=\"flex flex-col gap-2 overflow-y-auto\">\n <ul className=\"mr-auto flex flex-col gap-4\">\n {Object.keys(section).map((key) => (\n <li\n key={`${JSON.stringify(keyPath)}-object-${key}`}\n className=\"flex w-full\"\n >\n <NodeView\n sectionKey={key}\n section={section?.[key as keyof typeof section]}\n keyPath={[...keyPath, { type: NodeTypes.OBJECT, key }]}\n dictionaryLocalId={dictionaryLocalId}\n />\n </li>\n ))}\n </ul>\n <Button\n label={addNodeButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.MD}\n color={ButtonColor.TEXT}\n Icon={Plus}\n className=\"flex-1\"\n onClick={() => {\n const newKey = 'newKey';\n const newKeyPath = [\n ...keyPath,\n { type: NodeTypes.OBJECT, key: newKey },\n ] as KeyPath[];\n addEditedContent(dictionaryLocalId, '', newKeyPath);\n setFocusedContentKeyPath(newKeyPath);\n }}\n >\n {addNodeButton.text}\n </Button>\n </div>\n );\n};\n\ntype StructureViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const StructureView: FC<StructureViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n if (\n !section ||\n typeof section !== 'object' ||\n typeof section.nodeType === 'string'\n ) {\n return (\n <NodeView\n sectionKey={'content'}\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n }\n\n return (\n <ObjectView\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAuCA,MAAM,gBAAuC,EAC3C,SACA,mBACA,SACA,kBAAkB,2BACd;CACJ,MAAM,UAAU,kBAAkB,EAAE,sBAAsB,WAAW,EAAE;CACvE,MAAM,WAAW,YAAY,QAAQ;CACrC,MAAM,WAAW,gBAAgB,QAAQ;CAEzC,MAAM,oBAAoB,YAA0B;EAOlD,qBAN2B,eACzB,UACA,SACA,QAGqC,CAAC;;CAG1C,IACE,aAAa,UAAU,eACvB,aAAa,UAAU,aACvB,aAAa,UAAU,UACvB,aAAa,UAAU,eACvB,aAAa,UAAU,QACvB;EACA,MAAM,WAAW,OAAO,KACrB,QAAiC,UACnC,CAAC;EACF,MAAM,kBAAkB,CACtB,GAAG,SACH;GAAE,MAAM;GAAU,KAAK;GAAU,CAClC;EAED,OACE,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,kBAAD;IACW;IACT,gBAAgB,aACd,qBACE,eAAe,UAAU,QAAQ,CAClC;IAEH,GAEF,oBAAC,cAAD;IACE,SAAS;IACT,SAAS;IACU;IACD;IAClB,EACE;;;CAIV,IAAI,aAAa,UAAU,OAAO;EAChC,MAAM,kBAAkB,CAAC,GAAG,SAAS;GAAE,MAAM;GAAU,KAAK;GAAG,CAAY;EAC3E,OACE,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,kBAAD;IACW;IACT,gBAAgB,aACd,qBACE,eAAe,UAAU,QAAQ,CAClC;IAEH,GAEF,oBAAC,cAAD;IACE,SAAS;IACT,SAAS;IACU;IACD;IAClB,EACE;;;CAIV,IAAI,aAAa,UAAU,QACzB,OACE,4CACE,oBAAC,kBAAD;EACW;EACT,gBAAgB,aACd,qBACE,eAAe,UAAU,QAAQ,CAClC;EAEH,GACF,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,eAAD;GACW;GACA;GACU;GACnB;EACE,EACL;CAIP,OACE,oBAAC,kBAAD;EACW;EACT,gBAAgB,aACd,qBAAqB,eAAe,UAAU,QAAQ,CAAgB;EAExE;;AAWN,MAAa,YAAkC,EAC7C,YACA,SACA,SACA,wBACI;CACJ,MAAM,EAAE,gBAAgB,6BACtB,4BAA4B;CAC9B,MAAM,EAAE,qBAAqB,qBAAqB,yBAAyB;CAE3E,MAAM,EAAE,YAAY,iBAAiB,YAAY,iBAAiB;CAElE,MAAM,uBAAuB,YAAoB;EAC/C,oBAAoB,mBAAmB,SAAS,QAAQ;EACxD,MAAM,cAAyB,QAAQ,MAAM,GAAG,GAAG;EACnD,MAAM,cAAuB,QAAQ,QAAQ,SAAS;EAKtD,yBAAyB,CAHvB,GAAG,aACH;GAAE,GAAG;GAAa,KAAK;GAAS,CAEC,CAAC;;CAGtC,OACE,oBAAC,WAAD;EACE,cAAa;EACb,aAAY;EACZ,WAAU;EACV;EACA,aAAY;EACZ,YAAW;EACX,iBAAe,cAAc,SAAS,gBAAgB,WAAW,EAAE,CAAC;EACpE,eAAe,yBAAyB,QAAQ;YAEhD,qBAAC,OAAD;GAAK,WAAU;aAAf,CACG,OAAO,eAAe,YACrB,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,oBAAD;MACE,MAAK;MACL,cAAW;MACX,aAAa,WAAW,YAAY;MACpC,cAAc;MACd,SAAS,UAAU,oBAAoB,MAAM;MAC7C;MACA,GACF,oBAAC,QAAD;MACE,OAAO,aAAa,MAAM;MAC1B;MACA;MACA;MACA,WAAU;MACV,MAAM;MACN,eAAe;OACb,iBAAiB,mBAAmB,QAAW,QAAQ;OAGvD,yBADiC,QAAQ,MAAM,GAAG,GACZ,CAAC;;MAEzC,EACE;QAEN,qBAAC,QAAD;KAAM,WAAU;eAAhB;MAA4C;MACvC,oBAAoB,WAAW;MAAC;MAC9B;OACH;OAER,oBAAC,cAAD;IACW;IACU;IACV;IACT,mBAAmB,YAAY;KAC7B,iBAAiB,mBAAmB,SAAS,QAAQ;;IAEvD,EACE;;EACI;;AAUhB,MAAa,cAAmC,EAC9C,SACA,SACA,wBACI;CACJ,MAAM,EAAE,kBAAkB,YAAY,iBAAiB;CACvD,MAAM,EAAE,6BAA6B,4BAA4B;CACjE,MAAM,EAAE,qBAAqB,yBAAyB;CAEtD,IAAI,CAAC,WAAW,OAAO,YAAY,UACjC,OAAO,oBAAC,OAAD,YAAK,iBAAmB;CAGjC,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,MAAD;GAAI,WAAU;aACX,OAAO,KAAK,QAAQ,CAAC,KAAK,QACzB,oBAAC,MAAD;IAEE,WAAU;cAEV,oBAAC,UAAD;KACE,YAAY;KACZ,SAAS,UAAU;KACnB,SAAS,CAAC,GAAG,SAAS;MAAE,MAAM,UAAU;MAAQ;MAAK,CAAC;KACnC;KACnB;IACC,EATE,GAAG,KAAK,UAAU,QAAQ,CAAC,UAAU,MASvC,CACL;GACC,GACL,oBAAC,QAAD;GACE,OAAO,cAAc,MAAM;GAC3B;GACA;GACA;GACA,MAAM;GACN,WAAU;GACV,eAAe;IACb,MAAM,SAAS;IACf,MAAM,aAAa,CACjB,GAAG,SACH;KAAE,MAAM,UAAU;KAAQ,KAAK;KAAQ,CACxC;IACD,iBAAiB,mBAAmB,IAAI,WAAW;IACnD,yBAAyB,WAAW;;aAGrC,cAAc;GACR,EACL;;;AAUV,MAAa,iBAAyC,EACpD,SACA,SACA,wBACI;CACJ,IACE,CAAC,WACD,OAAO,YAAY,YACnB,OAAO,QAAQ,aAAa,UAE5B,OACE,oBAAC,UAAD;EACE,YAAY;EACH;EACA;EACU;EACnB;CAIN,OACE,oBAAC,YAAD;EACW;EACA;EACU;EACnB"}
1
+ {"version":3,"file":"StructureView.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/StructureView/StructureView.tsx"],"sourcesContent":["'use client';\n\nimport {\n Button,\n ButtonColor,\n ButtonSize,\n ButtonVariant,\n} from '@components/Button';\nimport { Container } from '@components/Container';\nimport { EditableFieldInput } from '@components/EditableField';\nimport { InputVariant } from '@components/Input';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getDefaultNode,\n getNodeChildren,\n getNodeType,\n} from '@intlayer/core/dictionaryManipulator';\nimport { isSameKeyPath } from '@intlayer/core/utils';\nimport {\n useConfiguration,\n useEditedContentActions,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport type { LocalDictionaryId, TypedNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { ContentNode } from 'intlayer';\nimport { Plus, Trash } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { NodeTypeSelector } from '../NodeTypeSelector';\n\ntype NodeTypeViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n onNodeTypeChange: (content?: ContentNode) => void;\n};\n\nconst NodeTypeView: FC<NodeTypeViewProps> = ({\n section,\n dictionaryLocalId,\n keyPath,\n onNodeTypeChange: onNodeTypeChangeProp,\n}) => {\n const locales = useConfiguration()?.internationalization?.locales ?? [];\n const nodeType = getNodeType(section);\n const children = getNodeChildren(section);\n\n const onNodeTypeChange = (content?: ContentNode) => {\n const transformedContent = getDefaultNode(\n nodeType,\n locales,\n content\n ) as ContentNode;\n\n onNodeTypeChangeProp(transformedContent);\n };\n\n if (\n nodeType === NodeTypes.TRANSLATION ||\n nodeType === NodeTypes.CONDITION ||\n nodeType === NodeTypes.GENDER ||\n nodeType === NodeTypes.ENUMERATION ||\n nodeType === NodeTypes.PLURAL\n ) {\n const firstKey = Object.keys(\n (section as unknown as TypedNode)[nodeType as keyof typeof section]\n )[0];\n const childrenKeyPath = [\n ...keyPath,\n { type: nodeType, key: firstKey },\n ] as KeyPath[];\n\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeTypes.ARRAY) {\n const childrenKeyPath = [...keyPath, { type: nodeType, key: 0 } as KeyPath];\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeTypes.OBJECT) {\n return (\n <>\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n <div className=\"mt-6 ml-10\">\n <StructureView\n keyPath={keyPath}\n section={section}\n dictionaryLocalId={dictionaryLocalId}\n />\n </div>\n </>\n );\n }\n\n return (\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(getDefaultNode(nodeType, locales) as ContentNode)\n }\n />\n );\n};\n\ntype NodeWrapperProps = {\n sectionKey?: string;\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const NodeView: FC<NodeWrapperProps> = ({\n sectionKey,\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { focusedContent, setFocusedContentKeyPath } =\n useFocusUnmergedDictionary();\n const { renameEditedContent, addEditedContent } = useEditedContentActions();\n\n const { titleInput, deleteButton } = useIntlayer('structure-view');\n\n const handleRenameNodeKey = (keyName: string) => {\n renameEditedContent(dictionaryLocalId, keyName, keyPath);\n const prevKeyPath: KeyPath[] = keyPath.slice(0, -1);\n const lastKeyPath: KeyPath = keyPath[keyPath.length - 1];\n const newKeyPath: KeyPath[] = [\n ...prevKeyPath,\n { ...lastKeyPath, key: keyName } as KeyPath,\n ];\n setFocusedContentKeyPath(newKeyPath);\n };\n\n return (\n <Container\n transparency=\"xl\"\n roundedSize=\"xl\"\n className=\"w-full min-w-80 gap-2 overflow-auto px-5 py-2\"\n border\n borderColor=\"text\"\n background=\"none\"\n aria-selected={isSameKeyPath(keyPath, focusedContent?.keyPath ?? [])}\n onClick={() => setFocusedContentKeyPath(keyPath)}\n >\n <div className=\"flex w-full flex-col items-start justify-between gap-3\">\n {typeof sectionKey === 'string' && (\n <div className=\"w-full\">\n <div className=\"flex w-full items-center justify-between gap-10\">\n <EditableFieldInput\n name=\"key\"\n aria-label=\"Key\"\n placeholder={titleInput.placeholder.value}\n defaultValue={sectionKey}\n onSave={(value) => handleRenameNodeKey(value)}\n variant={InputVariant.INVISIBLE}\n />\n <Button\n label={deleteButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"translate-x-2\"\n Icon={Trash}\n onClick={() => {\n addEditedContent(dictionaryLocalId, undefined, keyPath);\n\n const parentKeyPath: KeyPath[] = keyPath.slice(0, -1);\n setFocusedContentKeyPath(parentKeyPath);\n }}\n />\n </div>\n\n <span className=\"ml-3 text-neutral text-sm\">\n ( {camelCaseToSentence(sectionKey)} )\n </span>\n </div>\n )}\n <NodeTypeView\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n section={section}\n onNodeTypeChange={(content) => {\n addEditedContent(dictionaryLocalId, content, keyPath);\n }}\n />\n </div>\n </Container>\n );\n};\n\ntype ObjectViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const ObjectView: FC<ObjectViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { addNodeButton } = useIntlayer('structure-view');\n const { setFocusedContentKeyPath } = useFocusUnmergedDictionary();\n const { addEditedContent } = useEditedContentActions();\n\n if (!section || typeof section !== 'object') {\n return <div>Not an object</div>;\n }\n\n return (\n <div className=\"flex flex-col gap-2 overflow-y-auto\">\n <ul className=\"mr-auto flex flex-col gap-4\">\n {Object.keys(section).map((key) => (\n <li\n key={`${JSON.stringify(keyPath)}-object-${key}`}\n className=\"flex w-full\"\n >\n <NodeView\n sectionKey={key}\n section={section?.[key as keyof typeof section]}\n keyPath={[...keyPath, { type: NodeTypes.OBJECT, key }]}\n dictionaryLocalId={dictionaryLocalId}\n />\n </li>\n ))}\n </ul>\n <Button\n label={addNodeButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.MD}\n color={ButtonColor.TEXT}\n Icon={Plus}\n className=\"flex-1\"\n onClick={() => {\n const newKey = 'newKey';\n const newKeyPath = [\n ...keyPath,\n { type: NodeTypes.OBJECT, key: newKey },\n ] as KeyPath[];\n addEditedContent(dictionaryLocalId, '', newKeyPath);\n setFocusedContentKeyPath(newKeyPath);\n }}\n >\n {addNodeButton.text}\n </Button>\n </div>\n );\n};\n\ntype StructureViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const StructureView: FC<StructureViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n if (\n !section ||\n typeof section !== 'object' ||\n typeof section.nodeType === 'string'\n ) {\n return (\n <NodeView\n sectionKey={'content'}\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n }\n\n return (\n <ObjectView\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n};\n"],"mappings":"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"}