@intlayer/design-system 4.0.3 → 4.0.4

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 (198) hide show
  1. package/dist/.vite/manifest.json +36 -45
  2. package/dist/components/Auth/AuthModal/index.cjs +1 -1
  3. package/dist/components/Auth/AuthModal/index.mjs +1 -1
  4. package/dist/components/Auth/ExternalsLoginButtons/ExternalsLoginButtons.cjs +2 -1
  5. package/dist/components/Auth/ExternalsLoginButtons/ExternalsLoginButtons.cjs.map +1 -1
  6. package/dist/components/Auth/ExternalsLoginButtons/ExternalsLoginButtons.mjs +2 -1
  7. package/dist/components/Auth/ExternalsLoginButtons/ExternalsLoginButtons.mjs.map +1 -1
  8. package/dist/components/Auth/useAuth/index.cjs +8 -4
  9. package/dist/components/Auth/useAuth/index.cjs.map +1 -1
  10. package/dist/components/Auth/useAuth/index.d.ts +3 -1
  11. package/dist/components/Auth/useAuth/index.d.ts.map +1 -1
  12. package/dist/components/Auth/useAuth/index.mjs +8 -4
  13. package/dist/components/Auth/useAuth/index.mjs.map +1 -1
  14. package/dist/components/Auth/useAuth/useCSRF.cjs +6 -3
  15. package/dist/components/Auth/useAuth/useCSRF.cjs.map +1 -1
  16. package/dist/components/Auth/useAuth/useCSRF.d.ts +2 -1
  17. package/dist/components/Auth/useAuth/useCSRF.d.ts.map +1 -1
  18. package/dist/components/Auth/useAuth/useCSRF.mjs +5 -2
  19. package/dist/components/Auth/useAuth/useCSRF.mjs.map +1 -1
  20. package/dist/components/Auth/useAuth/useOAuth2.cjs +6 -5
  21. package/dist/components/Auth/useAuth/useOAuth2.cjs.map +1 -1
  22. package/dist/components/Auth/useAuth/useOAuth2.d.ts +2 -1
  23. package/dist/components/Auth/useAuth/useOAuth2.d.ts.map +1 -1
  24. package/dist/components/Auth/useAuth/useOAuth2.mjs +5 -4
  25. package/dist/components/Auth/useAuth/useOAuth2.mjs.map +1 -1
  26. package/dist/components/Auth/useAuth/useSession.cjs +6 -3
  27. package/dist/components/Auth/useAuth/useSession.cjs.map +1 -1
  28. package/dist/components/Auth/useAuth/useSession.d.ts +2 -1
  29. package/dist/components/Auth/useAuth/useSession.d.ts.map +1 -1
  30. package/dist/components/Auth/useAuth/useSession.mjs +6 -3
  31. package/dist/components/Auth/useAuth/useSession.mjs.map +1 -1
  32. package/dist/components/Auth/useUser/index.cjs +1 -1
  33. package/dist/components/Auth/useUser/index.mjs +1 -1
  34. package/dist/components/Container/index.d.ts +2 -2
  35. package/dist/components/DictionaryEditor/DictionaryEditor.cjs +1 -1
  36. package/dist/components/DictionaryEditor/DictionaryEditor.mjs +1 -1
  37. package/dist/components/DictionaryEditor/NodeWrapper/ArrayWrapper.cjs +2 -1
  38. package/dist/components/DictionaryEditor/NodeWrapper/ArrayWrapper.cjs.map +1 -1
  39. package/dist/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts.map +1 -1
  40. package/dist/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs +2 -1
  41. package/dist/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
  42. package/dist/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.cjs +1 -1
  43. package/dist/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs +1 -1
  44. package/dist/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.cjs +2 -1
  45. package/dist/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.cjs.map +1 -1
  46. package/dist/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  47. package/dist/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs +2 -1
  48. package/dist/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
  49. package/dist/components/DictionaryEditor/NodeWrapper/StringWrapper.cjs +3 -3
  50. package/dist/components/DictionaryEditor/NodeWrapper/StringWrapper.cjs.map +1 -1
  51. package/dist/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs +2 -2
  52. package/dist/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
  53. package/dist/components/DictionaryEditor/NodeWrapper/TranslationWrapper.cjs +1 -1
  54. package/dist/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs +1 -1
  55. package/dist/components/DictionaryEditor/NodeWrapper/index.cjs +1 -1
  56. package/dist/components/DictionaryEditor/NodeWrapper/index.mjs +1 -1
  57. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.cjs +0 -1
  58. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.cjs.map +1 -1
  59. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.mjs +0 -1
  60. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.mjs.map +1 -1
  61. package/dist/components/DictionaryFieldEditor/DictionariesSelector/DictionariesSelector.cjs +1 -1
  62. package/dist/components/DictionaryFieldEditor/DictionariesSelector/DictionariesSelector.mjs +1 -1
  63. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs +4 -2
  64. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs.map +1 -1
  65. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +4 -2
  66. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  67. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs +4 -2
  68. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs.map +1 -1
  69. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +4 -2
  70. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  71. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs +2 -11
  72. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs.map +1 -1
  73. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  74. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +3 -12
  75. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  76. package/dist/components/DictionaryFieldEditor/EditorView/EditorView.cjs +5 -5
  77. package/dist/components/DictionaryFieldEditor/EditorView/EditorView.cjs.map +1 -1
  78. package/dist/components/DictionaryFieldEditor/EditorView/EditorView.d.ts.map +1 -1
  79. package/dist/components/DictionaryFieldEditor/EditorView/EditorView.mjs +3 -3
  80. package/dist/components/DictionaryFieldEditor/EditorView/EditorView.mjs.map +1 -1
  81. package/dist/components/DictionaryFieldEditor/EditorView/TextEditor.cjs +2 -2
  82. package/dist/components/DictionaryFieldEditor/EditorView/TextEditor.cjs.map +1 -1
  83. package/dist/components/DictionaryFieldEditor/EditorView/TextEditor.d.ts.map +1 -1
  84. package/dist/components/DictionaryFieldEditor/EditorView/TextEditor.mjs +2 -2
  85. package/dist/components/DictionaryFieldEditor/EditorView/TextEditor.mjs.map +1 -1
  86. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs +6 -5
  87. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs.map +1 -1
  88. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  89. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +2 -1
  90. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  91. package/dist/components/DictionaryFieldEditor/NodeEditor.cjs +0 -8
  92. package/dist/components/DictionaryFieldEditor/NodeEditor.cjs.map +1 -1
  93. package/dist/components/DictionaryFieldEditor/NodeEditor.d.ts.map +1 -1
  94. package/dist/components/DictionaryFieldEditor/NodeEditor.mjs +1 -9
  95. package/dist/components/DictionaryFieldEditor/NodeEditor.mjs.map +1 -1
  96. package/dist/components/DictionaryFieldEditor/NodeTypeSelector.cjs +2 -1
  97. package/dist/components/DictionaryFieldEditor/NodeTypeSelector.cjs.map +1 -1
  98. package/dist/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  99. package/dist/components/DictionaryFieldEditor/NodeTypeSelector.mjs +2 -1
  100. package/dist/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  101. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs +7 -5
  102. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs.map +1 -1
  103. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +7 -5
  104. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  105. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.cjs +2 -2
  106. package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs +2 -2
  107. package/dist/components/EditableField/EditableFieldLayout.cjs +7 -3
  108. package/dist/components/EditableField/EditableFieldLayout.cjs.map +1 -1
  109. package/dist/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  110. package/dist/components/EditableField/EditableFieldLayout.mjs +7 -3
  111. package/dist/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  112. package/dist/components/IDE/CodeContext.cjs +2 -2
  113. package/dist/components/IDE/CodeContext.mjs +2 -2
  114. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.cjs +2 -2
  115. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +2 -2
  116. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.cjs +2 -2
  117. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs +2 -2
  118. package/dist/components/Modal/Modal.cjs +11 -7
  119. package/dist/components/Modal/Modal.cjs.map +1 -1
  120. package/dist/components/Modal/Modal.d.ts.map +1 -1
  121. package/dist/components/Modal/Modal.mjs +11 -7
  122. package/dist/components/Modal/Modal.mjs.map +1 -1
  123. package/dist/components/Navbar/MobileNavbar.cjs +2 -2
  124. package/dist/components/Navbar/MobileNavbar.mjs +2 -2
  125. package/dist/components/Navbar/index.cjs +2 -2
  126. package/dist/components/Navbar/index.mjs +2 -2
  127. package/dist/components/RightDrawer/RightDrawer.cjs +32 -15
  128. package/dist/components/RightDrawer/RightDrawer.cjs.map +1 -1
  129. package/dist/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  130. package/dist/components/RightDrawer/RightDrawer.mjs +32 -15
  131. package/dist/components/RightDrawer/RightDrawer.mjs.map +1 -1
  132. package/dist/components/SwitchSelector/index.cjs +2 -2
  133. package/dist/components/SwitchSelector/index.mjs +2 -2
  134. package/dist/components/TabSelector/TabSelector.cjs +2 -2
  135. package/dist/components/TabSelector/TabSelector.mjs +2 -2
  136. package/dist/hooks/intlayerAPIHooks.cjs +5 -1
  137. package/dist/hooks/intlayerAPIHooks.cjs.map +1 -1
  138. package/dist/hooks/intlayerAPIHooks.d.ts +49 -49
  139. package/dist/hooks/intlayerAPIHooks.d.ts.map +1 -1
  140. package/dist/hooks/intlayerAPIHooks.mjs +5 -1
  141. package/dist/hooks/intlayerAPIHooks.mjs.map +1 -1
  142. package/dist/hooks/useAsync/useAsync.cjs +14 -0
  143. package/dist/hooks/useAsync/useAsync.cjs.map +1 -1
  144. package/dist/hooks/useAsync/useAsync.d.ts.map +1 -1
  145. package/dist/hooks/useAsync/useAsync.mjs +14 -0
  146. package/dist/hooks/useAsync/useAsync.mjs.map +1 -1
  147. package/dist/hooks/useGetAllDictionaries.cjs +3 -2
  148. package/dist/hooks/useGetAllDictionaries.cjs.map +1 -1
  149. package/dist/hooks/useGetAllDictionaries.d.ts +2 -2
  150. package/dist/hooks/useGetAllDictionaries.d.ts.map +1 -1
  151. package/dist/hooks/useGetAllDictionaries.mjs +3 -2
  152. package/dist/hooks/useGetAllDictionaries.mjs.map +1 -1
  153. package/dist/hooks/useIntlayerAPI.cjs +10 -7
  154. package/dist/hooks/useIntlayerAPI.cjs.map +1 -1
  155. package/dist/hooks/useIntlayerAPI.d.ts +8 -2
  156. package/dist/hooks/useIntlayerAPI.d.ts.map +1 -1
  157. package/dist/hooks/useIntlayerAPI.mjs +10 -7
  158. package/dist/hooks/useIntlayerAPI.mjs.map +1 -1
  159. package/dist/hooks/usePersistedStore.cjs +25 -18
  160. package/dist/hooks/usePersistedStore.cjs.map +1 -1
  161. package/dist/hooks/usePersistedStore.d.ts +2 -2
  162. package/dist/hooks/usePersistedStore.d.ts.map +1 -1
  163. package/dist/hooks/usePersistedStore.mjs +26 -19
  164. package/dist/hooks/usePersistedStore.mjs.map +1 -1
  165. package/dist/index-B-VAyQ9R.js +673 -0
  166. package/dist/index-B-VAyQ9R.js.map +1 -0
  167. package/dist/index-B-adg6xa.js +206 -0
  168. package/dist/index-B-adg6xa.js.map +1 -0
  169. package/dist/index-BIV0x_z2.js +206 -0
  170. package/dist/index-BIV0x_z2.js.map +1 -0
  171. package/dist/index-BNH9wXVj.cjs +205 -0
  172. package/dist/index-BNH9wXVj.cjs.map +1 -0
  173. package/dist/index-D69JRZcQ.js +206 -0
  174. package/dist/index-D69JRZcQ.js.map +1 -0
  175. package/dist/index-DAsui9u9.cjs +205 -0
  176. package/dist/index-DAsui9u9.cjs.map +1 -0
  177. package/dist/index-SOIahRpS.cjs +205 -0
  178. package/dist/index-SOIahRpS.cjs.map +1 -0
  179. package/dist/index-T-TjVQoD.js +671 -0
  180. package/dist/index-T-TjVQoD.js.map +1 -0
  181. package/dist/index-f8_VC6c8.cjs +672 -0
  182. package/dist/index-f8_VC6c8.cjs.map +1 -0
  183. package/dist/index-llGIfxqV.cjs +670 -0
  184. package/dist/index-llGIfxqV.cjs.map +1 -0
  185. package/dist/tailwind.css +1 -1
  186. package/dist/useGetAllDictionaries-B1sqs2IB.cjs +34 -0
  187. package/dist/useGetAllDictionaries-B1sqs2IB.cjs.map +1 -0
  188. package/dist/useGetAllDictionaries-BbH8vTkY.js +35 -0
  189. package/dist/useGetAllDictionaries-BbH8vTkY.js.map +1 -0
  190. package/dist/useGetAllDictionaries-Bgkytpa2.cjs +34 -0
  191. package/dist/useGetAllDictionaries-Bgkytpa2.cjs.map +1 -0
  192. package/dist/useGetAllDictionaries-D8ma3h41.cjs +33 -0
  193. package/dist/useGetAllDictionaries-D8ma3h41.cjs.map +1 -0
  194. package/dist/useGetAllDictionaries-DHgHEbD5.js +34 -0
  195. package/dist/useGetAllDictionaries-DHgHEbD5.js.map +1 -0
  196. package/dist/useGetAllDictionaries-DUzm0rIa.js +35 -0
  197. package/dist/useGetAllDictionaries-DUzm0rIa.js.map +1 -0
  198. package/package.json +21 -16
@@ -0,0 +1,205 @@
1
+ "use client";
2
+ "use strict";
3
+ const jsxRuntime = require("./jsx-runtime-CgFM7lM3.cjs");
4
+ const core = require("@intlayer/core");
5
+ const require$$0 = require("react");
6
+ const lucideReact = require("lucide-react");
7
+ const components_Button_Button = require("./components/Button/Button.cjs");
8
+ const components_DictionaryEditor_ItemLayout = require("./components/DictionaryEditor/ItemLayout.cjs");
9
+ const components_DictionaryEditor_NodeWrapper_StringWrapper = require("./components/DictionaryEditor/NodeWrapper/StringWrapper.cjs");
10
+ const ArrayWrapper = (props) => {
11
+ const {
12
+ keyPath,
13
+ section,
14
+ onFocusKeyPath,
15
+ onClickEdit,
16
+ focusedKeyPath = []
17
+ } = props;
18
+ return section.map((subSection, key) => {
19
+ const newKeyPathEl = {
20
+ key,
21
+ type: core.NodeType.Array
22
+ };
23
+ const newKeyPath = [...keyPath, newKeyPathEl];
24
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
25
+ components_DictionaryEditor_ItemLayout.ItemLayout,
26
+ {
27
+ level: keyPath.length,
28
+ title: `${key}`,
29
+ description: "",
30
+ isSelected: core.isSameKeyPath(newKeyPath, focusedKeyPath),
31
+ onClick: (e) => {
32
+ e.stopPropagation();
33
+ onFocusKeyPath(newKeyPath);
34
+ },
35
+ rightParam: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
36
+ components_Button_Button.Button,
37
+ {
38
+ Icon: lucideReact.Edit,
39
+ size: "icon-md",
40
+ variant: "hoverable",
41
+ color: "text",
42
+ label: "Open the editor",
43
+ onClick: (e) => {
44
+ e.stopPropagation();
45
+ onClickEdit?.(newKeyPath);
46
+ }
47
+ }
48
+ ),
49
+ children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: subSection })
50
+ },
51
+ JSON.stringify(subSection)
52
+ );
53
+ });
54
+ };
55
+ const EnumerationWrapper = (props) => {
56
+ const { keyPath, section } = props;
57
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("div", { className: "ml-2 grid grid-cols-[auto,1fr] gap-2", children: Object.keys(section).filter((key) => !traceKeys.includes(key)).map((key) => {
58
+ const newKeyPathEl = {
59
+ type: core.NodeType.Enumeration,
60
+ key
61
+ };
62
+ const newKeyPath = [...keyPath, newKeyPathEl];
63
+ const subSection = section.enumeration[key];
64
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(jsxRuntime.jsxRuntimeExports.Fragment, { children: [
65
+ /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("span", { className: "flex items-center font-bold", children: key }),
66
+ /* @__PURE__ */ require$$0.createElement(
67
+ NodeWrapper,
68
+ {
69
+ ...props,
70
+ key,
71
+ keyPath: newKeyPath,
72
+ section: subSection
73
+ }
74
+ )
75
+ ] });
76
+ }) });
77
+ };
78
+ const NestedObjectWrapper = (props) => {
79
+ const {
80
+ keyPath,
81
+ section,
82
+ focusedKeyPath = [],
83
+ onClickEdit,
84
+ onFocusKeyPath
85
+ } = props;
86
+ return Object.keys(section).filter((key) => !traceKeys.includes(key)).map((key) => {
87
+ const newKeyPathEl = { key, type: core.NodeType.Object };
88
+ const newKeyPath = [...keyPath, newKeyPathEl];
89
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
90
+ components_DictionaryEditor_ItemLayout.ItemLayout,
91
+ {
92
+ level: keyPath.length,
93
+ title: key,
94
+ description: "",
95
+ isSelected: core.isSameKeyPath(newKeyPath, focusedKeyPath),
96
+ onClick: (e) => {
97
+ e.stopPropagation();
98
+ onFocusKeyPath(newKeyPath);
99
+ },
100
+ rightParam: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
101
+ components_Button_Button.Button,
102
+ {
103
+ Icon: lucideReact.Edit,
104
+ size: "icon-md",
105
+ variant: "hoverable",
106
+ color: "text",
107
+ label: "Open the editor",
108
+ onClick: (e) => {
109
+ e.stopPropagation();
110
+ onClickEdit?.(newKeyPath);
111
+ }
112
+ }
113
+ ),
114
+ children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: section[key] })
115
+ },
116
+ key
117
+ );
118
+ });
119
+ };
120
+ const TranslationWrapper = (props) => {
121
+ const { keyPath, section, locale } = props;
122
+ const newKeyPathEl = {
123
+ type: core.NodeType.Translation,
124
+ key: locale
125
+ };
126
+ const newKeyPath = [...keyPath, newKeyPathEl];
127
+ const subSection = section.translation[locale];
128
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: subSection });
129
+ };
130
+ const traceKeys = ["filePath", "id", "nodeType"];
131
+ const isReactNode = (node) => typeof node?.key !== "undefined" && typeof node?.props !== "undefined";
132
+ const createReactElement = (element) => {
133
+ if (typeof element === "string") {
134
+ return element;
135
+ }
136
+ const convertChildrenAsArray = (element2) => {
137
+ if (element2?.props && typeof element2.props.children === "object") {
138
+ const childrenResult = [];
139
+ const { children } = element2.props;
140
+ Object.keys(children).forEach((key) => {
141
+ childrenResult.push(createReactElement(children[key]));
142
+ });
143
+ return {
144
+ ...element2,
145
+ props: { ...element2.props, children: childrenResult }
146
+ };
147
+ }
148
+ return {
149
+ ...element2,
150
+ props: { ...element2.props, children: element2.props.children }
151
+ };
152
+ };
153
+ const fixedElement = convertChildrenAsArray(element);
154
+ const { type, props } = fixedElement;
155
+ return require$$0.createElement(type ?? "div", props, ...props.children);
156
+ };
157
+ const NodeWrapper = (props) => {
158
+ const { section } = props;
159
+ if (typeof section === "object") {
160
+ if (isReactNode(section)) {
161
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(jsxRuntime.jsxRuntimeExports.Fragment, { children: [
162
+ createReactElement(section),
163
+ /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("span", { className: "text-neutral dark:text-neutral-dark text-xs", children: "React node not editable" })
164
+ ] });
165
+ }
166
+ if (section.nodeType === core.NodeType.Translation) {
167
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
168
+ TranslationWrapper,
169
+ {
170
+ ...props,
171
+ section
172
+ }
173
+ );
174
+ }
175
+ if (section.nodeType === core.NodeType.Enumeration) {
176
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
177
+ EnumerationWrapper,
178
+ {
179
+ ...props,
180
+ section
181
+ }
182
+ );
183
+ }
184
+ if (Array.isArray(section)) {
185
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ArrayWrapper, { ...props, section });
186
+ }
187
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
188
+ NestedObjectWrapper,
189
+ {
190
+ ...props,
191
+ section
192
+ }
193
+ );
194
+ }
195
+ if (typeof section === "string") {
196
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(components_DictionaryEditor_NodeWrapper_StringWrapper.StringWrapper, { ...props, section });
197
+ }
198
+ };
199
+ exports.ArrayWrapper = ArrayWrapper;
200
+ exports.EnumerationWrapper = EnumerationWrapper;
201
+ exports.NestedObjectWrapper = NestedObjectWrapper;
202
+ exports.NodeWrapper = NodeWrapper;
203
+ exports.TranslationWrapper = TranslationWrapper;
204
+ exports.traceKeys = traceKeys;
205
+ //# sourceMappingURL=index-BNH9wXVj.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BNH9wXVj.cjs","sources":["../src/components/DictionaryEditor/NodeWrapper/ArrayWrapper.tsx","../src/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.tsx","../src/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.tsx","../src/components/DictionaryEditor/NodeWrapper/TranslationWrapper.tsx","../src/components/DictionaryEditor/NodeWrapper/index.tsx"],"sourcesContent":["/* eslint-disable import/no-cycle */\nimport {\n isSameKeyPath,\n NodeType,\n type DictionaryValue,\n type KeyPath,\n} from '@intlayer/core';\nimport { Edit } from 'lucide-react';\nimport type { FC } from 'react';\nimport { Button } from '../../Button';\nimport { ItemLayout } from '../ItemLayout';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype ArrayWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: DictionaryValue[];\n};\n\nexport const ArrayWrapper: FC<ArrayWrapperProps> = (props) => {\n const {\n keyPath,\n section,\n onFocusKeyPath,\n onClickEdit,\n focusedKeyPath = [],\n } = props;\n\n return section.map((subSection, key) => {\n const newKeyPathEl: KeyPath = {\n key,\n type: NodeType.Array,\n };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n return (\n <ItemLayout\n level={keyPath.length}\n key={JSON.stringify(subSection)}\n title={`${key}`}\n description=\"\"\n isSelected={isSameKeyPath(newKeyPath, focusedKeyPath)}\n onClick={(e) => {\n e.stopPropagation();\n onFocusKeyPath(newKeyPath);\n }}\n rightParam={\n <Button\n Icon={Edit}\n size=\"icon-md\"\n variant=\"hoverable\"\n color=\"text\"\n label=\"Open the editor\"\n onClick={(e) => {\n e.stopPropagation();\n\n onClickEdit?.(newKeyPath);\n }}\n />\n }\n >\n <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />\n </ItemLayout>\n );\n });\n};\n","/* eslint-disable import/no-cycle */\nimport {\n type KeyPath,\n NodeType,\n type EnumerationContent,\n type DictionaryValue,\n} from '@intlayer/core';\nimport type { FC } from 'react';\nimport { NodeWrapper, traceKeys, type NodeWrapperProps } from './index';\n\ntype EnumerationWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: EnumerationContent<DictionaryValue>;\n};\n\nexport const EnumerationWrapper: FC<EnumerationWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n {Object.keys(section)\n .filter((key) => !traceKeys.includes(key))\n .map((key) => {\n const newKeyPathEl: KeyPath = {\n type: NodeType.Enumeration,\n key,\n };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section.enumeration[key as keyof (typeof section)['enumeration']]!;\n\n return (\n <>\n <span className=\"flex items-center font-bold\">{key}</span>\n <NodeWrapper\n {...props}\n key={key}\n keyPath={newKeyPath}\n section={subSection}\n />\n </>\n );\n })}\n </div>\n );\n};\n","/* eslint-disable import/no-cycle */\n\nimport {\n type KeyPath,\n isSameKeyPath,\n type DictionaryValue,\n NodeType,\n} from '@intlayer/core';\nimport { Edit } from 'lucide-react';\nimport type { FC } from 'react';\nimport { Button } from '../../Button';\nimport { ItemLayout } from '../ItemLayout';\nimport { NodeWrapper, traceKeys, type NodeWrapperProps } from './index';\n\ntype NestedObjectWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: Record<string, DictionaryValue>;\n};\n\nexport const NestedObjectWrapper: FC<NestedObjectWrapperProps> = (props) => {\n const {\n keyPath,\n section,\n focusedKeyPath = [],\n onClickEdit,\n onFocusKeyPath,\n } = props;\n\n return Object.keys(section)\n .filter((key) => !traceKeys.includes(key))\n .map((key) => {\n const newKeyPathEl: KeyPath = { key, type: NodeType.Object };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n return (\n <ItemLayout\n level={keyPath.length}\n key={key}\n title={key}\n description=\"\"\n isSelected={isSameKeyPath(newKeyPath, focusedKeyPath)}\n onClick={(e) => {\n e.stopPropagation();\n\n onFocusKeyPath(newKeyPath);\n }}\n rightParam={\n <Button\n Icon={Edit}\n size=\"icon-md\"\n variant=\"hoverable\"\n color=\"text\"\n label=\"Open the editor\"\n onClick={(e) => {\n e.stopPropagation();\n\n onClickEdit?.(newKeyPath);\n }}\n />\n }\n >\n <NodeWrapper {...props} keyPath={newKeyPath} section={section[key]} />\n </ItemLayout>\n );\n });\n};\n","/* eslint-disable import/no-cycle */\n\nimport {\n type KeyPath,\n NodeType,\n type TranslationContent,\n type DictionaryValue,\n} from '@intlayer/core';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype TranslationWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: TranslationContent<DictionaryValue>;\n};\n\nexport const TranslationWrapper: FC<TranslationWrapperProps> = (props) => {\n const { keyPath, section, locale } = props;\n\n const newKeyPathEl: KeyPath = {\n type: NodeType.Translation,\n key: locale,\n };\n\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section.translation[\n locale as unknown as keyof (typeof section)['translation']\n ]!;\n\n return <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />;\n};\n","/* eslint-disable import/no-cycle */\n'use client';\n\nimport type { Locales } from '@intlayer/config/client';\nimport {\n type EnumerationContent,\n type TranslationContent,\n NodeType,\n type KeyPath,\n type DictionaryValue,\n} from '@intlayer/core';\nimport {\n createElement,\n type ReactElement,\n type ReactNode,\n type FC,\n} from 'react';\nimport { ArrayWrapper } from './ArrayWrapper';\nimport { EnumerationWrapper } from './EnumerationWrapper';\nimport { NestedObjectWrapper } from './NestedObjectWrapper';\nimport { StringWrapper } from './StringWrapper';\nimport { TranslationWrapper } from './TranslationWrapper';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\nconst isReactNode = (node: Record<string, unknown>): boolean =>\n typeof node?.key !== 'undefined' && typeof node?.props !== 'undefined';\n\nexport type NodeWrapperProps = {\n keyPath: KeyPath[];\n section: DictionaryValue;\n onContentChange: (content: { keyPath: KeyPath[]; newValue: string }) => void;\n locale: Locales;\n editedContent: DictionaryValue;\n focusedKeyPath: KeyPath[] | undefined;\n onFocusKeyPath: (keyPath: KeyPath[]) => void;\n onClickEdit?: (keyPath: KeyPath[]) => void;\n};\n\nconst createReactElement = (element: ReactElement) => {\n if (typeof element === 'string') {\n // If it's a string, simply return it (used for text content)\n return element;\n }\n\n const convertChildrenAsArray = (element: ReactElement): ReactElement => {\n if (element?.props && typeof element.props.children === 'object') {\n const childrenResult: ReactNode[] = [];\n const { children } = element.props;\n\n // Create the children elements recursively, if any\n Object.keys(children).forEach((key) => {\n childrenResult.push(createReactElement(children[key]));\n });\n\n return {\n ...element,\n props: { ...element.props, children: childrenResult },\n };\n }\n\n return {\n ...element,\n props: { ...element.props, children: element.props.children },\n };\n };\n\n const fixedElement = convertChildrenAsArray(element);\n\n const { type, props } = fixedElement;\n\n // Create and return the React element\n return createElement(type ?? 'div', props, ...props.children);\n};\n\nexport const NodeWrapper: FC<NodeWrapperProps> = (props) => {\n const { section } = props;\n\n if (typeof section === 'object') {\n if (isReactNode(section as Record<string, unknown>)) {\n return (\n <>\n {createReactElement(section as unknown as ReactElement)}\n <span className=\"text-neutral dark:text-neutral-dark text-xs\">\n React node not editable\n </span>\n </>\n );\n }\n\n if (\n (section as TranslationContent<DictionaryValue>).nodeType ===\n NodeType.Translation\n ) {\n return (\n <TranslationWrapper\n {...props}\n section={section as TranslationContent<DictionaryValue>}\n />\n );\n }\n\n if (\n (section as EnumerationContent<DictionaryValue>).nodeType ===\n NodeType.Enumeration\n ) {\n return (\n <EnumerationWrapper\n {...props}\n section={section as EnumerationContent<DictionaryValue>}\n />\n );\n }\n\n if (Array.isArray(section)) {\n return <ArrayWrapper {...props} section={section as DictionaryValue[]} />;\n }\n\n return (\n <NestedObjectWrapper\n {...props}\n section={section as Record<string, DictionaryValue>}\n />\n );\n }\n\n if (typeof section === 'string') {\n return <StringWrapper {...props} section={section} />;\n }\n};\n"],"names":["NodeType","jsx","ItemLayout","isSameKeyPath","Button","Edit","jsxs","Fragment","createElement","element","StringWrapper"],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ "use client";
2
+ import { j as jsxRuntimeExports } from "./jsx-runtime-DQkoUcjV.js";
3
+ import { NodeType, isSameKeyPath } from "@intlayer/core";
4
+ import { createElement } from "react";
5
+ import { Edit } from "lucide-react";
6
+ import { Button } from "./components/Button/Button.mjs";
7
+ import { ItemLayout } from "./components/DictionaryEditor/ItemLayout.mjs";
8
+ import { StringWrapper } from "./components/DictionaryEditor/NodeWrapper/StringWrapper.mjs";
9
+ const ArrayWrapper = (props) => {
10
+ const {
11
+ keyPath,
12
+ section,
13
+ onFocusKeyPath,
14
+ onClickEdit,
15
+ focusedKeyPath = []
16
+ } = props;
17
+ return section.map((subSection, key) => {
18
+ const newKeyPathEl = {
19
+ key,
20
+ type: NodeType.Array
21
+ };
22
+ const newKeyPath = [...keyPath, newKeyPathEl];
23
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
24
+ ItemLayout,
25
+ {
26
+ level: keyPath.length,
27
+ title: `${key}`,
28
+ description: "",
29
+ isSelected: isSameKeyPath(newKeyPath, focusedKeyPath),
30
+ onClick: (e) => {
31
+ e.stopPropagation();
32
+ onFocusKeyPath(newKeyPath);
33
+ },
34
+ rightParam: /* @__PURE__ */ jsxRuntimeExports.jsx(
35
+ Button,
36
+ {
37
+ Icon: Edit,
38
+ size: "icon-md",
39
+ variant: "hoverable",
40
+ color: "text",
41
+ label: "Open the editor",
42
+ onClick: (e) => {
43
+ e.stopPropagation();
44
+ onClickEdit?.(newKeyPath);
45
+ }
46
+ }
47
+ ),
48
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: subSection })
49
+ },
50
+ JSON.stringify(subSection)
51
+ );
52
+ });
53
+ };
54
+ const EnumerationWrapper = (props) => {
55
+ const { keyPath, section } = props;
56
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ml-2 grid grid-cols-[auto,1fr] gap-2", children: Object.keys(section).filter((key) => !traceKeys.includes(key)).map((key) => {
57
+ const newKeyPathEl = {
58
+ type: NodeType.Enumeration,
59
+ key
60
+ };
61
+ const newKeyPath = [...keyPath, newKeyPathEl];
62
+ const subSection = section.enumeration[key];
63
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
64
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex items-center font-bold", children: key }),
65
+ /* @__PURE__ */ createElement(
66
+ NodeWrapper,
67
+ {
68
+ ...props,
69
+ key,
70
+ keyPath: newKeyPath,
71
+ section: subSection
72
+ }
73
+ )
74
+ ] });
75
+ }) });
76
+ };
77
+ const NestedObjectWrapper = (props) => {
78
+ const {
79
+ keyPath,
80
+ section,
81
+ focusedKeyPath = [],
82
+ onClickEdit,
83
+ onFocusKeyPath
84
+ } = props;
85
+ return Object.keys(section).filter((key) => !traceKeys.includes(key)).map((key) => {
86
+ const newKeyPathEl = { key, type: NodeType.Object };
87
+ const newKeyPath = [...keyPath, newKeyPathEl];
88
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
89
+ ItemLayout,
90
+ {
91
+ level: keyPath.length,
92
+ title: key,
93
+ description: "",
94
+ isSelected: isSameKeyPath(newKeyPath, focusedKeyPath),
95
+ onClick: (e) => {
96
+ e.stopPropagation();
97
+ onFocusKeyPath(newKeyPath);
98
+ },
99
+ rightParam: /* @__PURE__ */ jsxRuntimeExports.jsx(
100
+ Button,
101
+ {
102
+ Icon: Edit,
103
+ size: "icon-sm",
104
+ variant: "hoverable",
105
+ color: "text",
106
+ label: "Open the editor",
107
+ onClick: (e) => {
108
+ e.stopPropagation();
109
+ onClickEdit?.(newKeyPath);
110
+ }
111
+ }
112
+ ),
113
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: section[key] })
114
+ },
115
+ key
116
+ );
117
+ });
118
+ };
119
+ const TranslationWrapper = (props) => {
120
+ const { keyPath, section, locale } = props;
121
+ const newKeyPathEl = {
122
+ type: NodeType.Translation,
123
+ key: locale
124
+ };
125
+ const newKeyPath = [...keyPath, newKeyPathEl];
126
+ const subSection = section.translation[locale];
127
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: subSection });
128
+ };
129
+ const traceKeys = ["filePath", "id", "nodeType"];
130
+ const isReactNode = (node) => typeof node?.key !== "undefined" && typeof node?.props !== "undefined";
131
+ const createReactElement = (element) => {
132
+ if (typeof element === "string") {
133
+ return element;
134
+ }
135
+ const convertChildrenAsArray = (element2) => {
136
+ if (element2?.props && typeof element2.props.children === "object") {
137
+ const childrenResult = [];
138
+ const { children } = element2.props;
139
+ Object.keys(children).forEach((key) => {
140
+ childrenResult.push(createReactElement(children[key]));
141
+ });
142
+ return {
143
+ ...element2,
144
+ props: { ...element2.props, children: childrenResult }
145
+ };
146
+ }
147
+ return {
148
+ ...element2,
149
+ props: { ...element2.props, children: element2.props.children }
150
+ };
151
+ };
152
+ const fixedElement = convertChildrenAsArray(element);
153
+ const { type, props } = fixedElement;
154
+ return createElement(type ?? "div", props, ...props.children);
155
+ };
156
+ const NodeWrapper = (props) => {
157
+ const { section } = props;
158
+ if (typeof section === "object") {
159
+ if (isReactNode(section)) {
160
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
161
+ createReactElement(section),
162
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-neutral dark:text-neutral-dark text-xs", children: "React node not editable" })
163
+ ] });
164
+ }
165
+ if (section.nodeType === NodeType.Translation) {
166
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
167
+ TranslationWrapper,
168
+ {
169
+ ...props,
170
+ section
171
+ }
172
+ );
173
+ }
174
+ if (section.nodeType === NodeType.Enumeration) {
175
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
176
+ EnumerationWrapper,
177
+ {
178
+ ...props,
179
+ section
180
+ }
181
+ );
182
+ }
183
+ if (Array.isArray(section)) {
184
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ArrayWrapper, { ...props, section });
185
+ }
186
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
187
+ NestedObjectWrapper,
188
+ {
189
+ ...props,
190
+ section
191
+ }
192
+ );
193
+ }
194
+ if (typeof section === "string") {
195
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(StringWrapper, { ...props, section });
196
+ }
197
+ };
198
+ export {
199
+ ArrayWrapper as A,
200
+ EnumerationWrapper as E,
201
+ NodeWrapper as N,
202
+ TranslationWrapper as T,
203
+ NestedObjectWrapper as a,
204
+ traceKeys as t
205
+ };
206
+ //# sourceMappingURL=index-D69JRZcQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-D69JRZcQ.js","sources":["../src/components/DictionaryEditor/NodeWrapper/ArrayWrapper.tsx","../src/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.tsx","../src/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.tsx","../src/components/DictionaryEditor/NodeWrapper/TranslationWrapper.tsx","../src/components/DictionaryEditor/NodeWrapper/index.tsx"],"sourcesContent":["/* eslint-disable import/no-cycle */\nimport {\n isSameKeyPath,\n NodeType,\n type DictionaryValue,\n type KeyPath,\n} from '@intlayer/core';\nimport { Edit } from 'lucide-react';\nimport type { FC } from 'react';\nimport { Button } from '../../Button';\nimport { ItemLayout } from '../ItemLayout';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype ArrayWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: DictionaryValue[];\n};\n\nexport const ArrayWrapper: FC<ArrayWrapperProps> = (props) => {\n const {\n keyPath,\n section,\n onFocusKeyPath,\n onClickEdit,\n focusedKeyPath = [],\n } = props;\n\n return section.map((subSection, key) => {\n const newKeyPathEl: KeyPath = {\n key,\n type: NodeType.Array,\n };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n return (\n <ItemLayout\n level={keyPath.length}\n key={JSON.stringify(subSection)}\n title={`${key}`}\n description=\"\"\n isSelected={isSameKeyPath(newKeyPath, focusedKeyPath)}\n onClick={(e) => {\n e.stopPropagation();\n onFocusKeyPath(newKeyPath);\n }}\n rightParam={\n <Button\n Icon={Edit}\n size=\"icon-md\"\n variant=\"hoverable\"\n color=\"text\"\n label=\"Open the editor\"\n onClick={(e) => {\n e.stopPropagation();\n\n onClickEdit?.(newKeyPath);\n }}\n />\n }\n >\n <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />\n </ItemLayout>\n );\n });\n};\n","/* eslint-disable import/no-cycle */\nimport {\n type KeyPath,\n NodeType,\n type EnumerationContent,\n type DictionaryValue,\n} from '@intlayer/core';\nimport type { FC } from 'react';\nimport { NodeWrapper, traceKeys, type NodeWrapperProps } from './index';\n\ntype EnumerationWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: EnumerationContent<DictionaryValue>;\n};\n\nexport const EnumerationWrapper: FC<EnumerationWrapperProps> = (props) => {\n const { keyPath, section } = props;\n\n return (\n <div className=\"ml-2 grid grid-cols-[auto,1fr] gap-2\">\n {Object.keys(section)\n .filter((key) => !traceKeys.includes(key))\n .map((key) => {\n const newKeyPathEl: KeyPath = {\n type: NodeType.Enumeration,\n key,\n };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section.enumeration[key as keyof (typeof section)['enumeration']]!;\n\n return (\n <>\n <span className=\"flex items-center font-bold\">{key}</span>\n <NodeWrapper\n {...props}\n key={key}\n keyPath={newKeyPath}\n section={subSection}\n />\n </>\n );\n })}\n </div>\n );\n};\n","/* eslint-disable import/no-cycle */\n\nimport {\n type KeyPath,\n isSameKeyPath,\n type DictionaryValue,\n NodeType,\n} from '@intlayer/core';\nimport { Edit } from 'lucide-react';\nimport type { FC } from 'react';\nimport { Button } from '../../Button';\nimport { ItemLayout } from '../ItemLayout';\nimport { NodeWrapper, traceKeys, type NodeWrapperProps } from './index';\n\ntype NestedObjectWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: Record<string, DictionaryValue>;\n};\n\nexport const NestedObjectWrapper: FC<NestedObjectWrapperProps> = (props) => {\n const {\n keyPath,\n section,\n focusedKeyPath = [],\n onClickEdit,\n onFocusKeyPath,\n } = props;\n\n return Object.keys(section)\n .filter((key) => !traceKeys.includes(key))\n .map((key) => {\n const newKeyPathEl: KeyPath = { key, type: NodeType.Object };\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n return (\n <ItemLayout\n level={keyPath.length}\n key={key}\n title={key}\n description=\"\"\n isSelected={isSameKeyPath(newKeyPath, focusedKeyPath)}\n onClick={(e) => {\n e.stopPropagation();\n\n onFocusKeyPath(newKeyPath);\n }}\n rightParam={\n <Button\n Icon={Edit}\n size=\"icon-sm\"\n variant=\"hoverable\"\n color=\"text\"\n label=\"Open the editor\"\n onClick={(e) => {\n e.stopPropagation();\n\n onClickEdit?.(newKeyPath);\n }}\n />\n }\n >\n <NodeWrapper {...props} keyPath={newKeyPath} section={section[key]} />\n </ItemLayout>\n );\n });\n};\n","/* eslint-disable import/no-cycle */\n\nimport {\n type KeyPath,\n NodeType,\n type TranslationContent,\n type DictionaryValue,\n} from '@intlayer/core';\nimport type { FC } from 'react';\nimport { NodeWrapper, type NodeWrapperProps } from './index';\n\ntype TranslationWrapperProps = Omit<NodeWrapperProps, 'section'> & {\n section: TranslationContent<DictionaryValue>;\n};\n\nexport const TranslationWrapper: FC<TranslationWrapperProps> = (props) => {\n const { keyPath, section, locale } = props;\n\n const newKeyPathEl: KeyPath = {\n type: NodeType.Translation,\n key: locale,\n };\n\n const newKeyPath: KeyPath[] = [...keyPath, newKeyPathEl];\n\n const subSection =\n section.translation[\n locale as unknown as keyof (typeof section)['translation']\n ]!;\n\n return <NodeWrapper {...props} keyPath={newKeyPath} section={subSection} />;\n};\n","/* eslint-disable import/no-cycle */\n'use client';\n\nimport type { Locales } from '@intlayer/config/client';\nimport {\n type EnumerationContent,\n type TranslationContent,\n NodeType,\n type KeyPath,\n type DictionaryValue,\n} from '@intlayer/core';\nimport {\n createElement,\n type ReactElement,\n type ReactNode,\n type FC,\n} from 'react';\nimport { ArrayWrapper } from './ArrayWrapper';\nimport { EnumerationWrapper } from './EnumerationWrapper';\nimport { NestedObjectWrapper } from './NestedObjectWrapper';\nimport { StringWrapper } from './StringWrapper';\nimport { TranslationWrapper } from './TranslationWrapper';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\nconst isReactNode = (node: Record<string, unknown>): boolean =>\n typeof node?.key !== 'undefined' && typeof node?.props !== 'undefined';\n\nexport type NodeWrapperProps = {\n keyPath: KeyPath[];\n section: DictionaryValue;\n onContentChange: (content: { keyPath: KeyPath[]; newValue: string }) => void;\n locale: Locales;\n editedContent: DictionaryValue;\n focusedKeyPath: KeyPath[] | undefined;\n onFocusKeyPath: (keyPath: KeyPath[]) => void;\n onClickEdit?: (keyPath: KeyPath[]) => void;\n};\n\nconst createReactElement = (element: ReactElement) => {\n if (typeof element === 'string') {\n // If it's a string, simply return it (used for text content)\n return element;\n }\n\n const convertChildrenAsArray = (element: ReactElement): ReactElement => {\n if (element?.props && typeof element.props.children === 'object') {\n const childrenResult: ReactNode[] = [];\n const { children } = element.props;\n\n // Create the children elements recursively, if any\n Object.keys(children).forEach((key) => {\n childrenResult.push(createReactElement(children[key]));\n });\n\n return {\n ...element,\n props: { ...element.props, children: childrenResult },\n };\n }\n\n return {\n ...element,\n props: { ...element.props, children: element.props.children },\n };\n };\n\n const fixedElement = convertChildrenAsArray(element);\n\n const { type, props } = fixedElement;\n\n // Create and return the React element\n return createElement(type ?? 'div', props, ...props.children);\n};\n\nexport const NodeWrapper: FC<NodeWrapperProps> = (props) => {\n const { section } = props;\n\n if (typeof section === 'object') {\n if (isReactNode(section as Record<string, unknown>)) {\n return (\n <>\n {createReactElement(section as unknown as ReactElement)}\n <span className=\"text-neutral dark:text-neutral-dark text-xs\">\n React node not editable\n </span>\n </>\n );\n }\n\n if (\n (section as TranslationContent<DictionaryValue>).nodeType ===\n NodeType.Translation\n ) {\n return (\n <TranslationWrapper\n {...props}\n section={section as TranslationContent<DictionaryValue>}\n />\n );\n }\n\n if (\n (section as EnumerationContent<DictionaryValue>).nodeType ===\n NodeType.Enumeration\n ) {\n return (\n <EnumerationWrapper\n {...props}\n section={section as EnumerationContent<DictionaryValue>}\n />\n );\n }\n\n if (Array.isArray(section)) {\n return <ArrayWrapper {...props} section={section as DictionaryValue[]} />;\n }\n\n return (\n <NestedObjectWrapper\n {...props}\n section={section as Record<string, DictionaryValue>}\n />\n );\n }\n\n if (typeof section === 'string') {\n return <StringWrapper {...props} section={section} />;\n }\n};\n"],"names":["jsx","jsxs","Fragment","element"],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ "use client";
2
+ "use strict";
3
+ const jsxRuntime = require("./jsx-runtime-CgFM7lM3.cjs");
4
+ const core = require("@intlayer/core");
5
+ const require$$0 = require("react");
6
+ const lucideReact = require("lucide-react");
7
+ const components_Button_Button = require("./components/Button/Button.cjs");
8
+ const components_DictionaryEditor_ItemLayout = require("./components/DictionaryEditor/ItemLayout.cjs");
9
+ const components_DictionaryEditor_NodeWrapper_StringWrapper = require("./components/DictionaryEditor/NodeWrapper/StringWrapper.cjs");
10
+ const ArrayWrapper = (props) => {
11
+ const {
12
+ keyPath,
13
+ section,
14
+ onFocusKeyPath,
15
+ onClickEdit,
16
+ focusedKeyPath = []
17
+ } = props;
18
+ return section.map((subSection, key) => {
19
+ const newKeyPathEl = {
20
+ key,
21
+ type: core.NodeType.Array
22
+ };
23
+ const newKeyPath = [...keyPath, newKeyPathEl];
24
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
25
+ components_DictionaryEditor_ItemLayout.ItemLayout,
26
+ {
27
+ level: keyPath.length,
28
+ title: `${key}`,
29
+ description: "",
30
+ isSelected: core.isSameKeyPath(newKeyPath, focusedKeyPath),
31
+ onClick: (e) => {
32
+ e.stopPropagation();
33
+ onFocusKeyPath(newKeyPath);
34
+ },
35
+ rightParam: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
36
+ components_Button_Button.Button,
37
+ {
38
+ Icon: lucideReact.Edit,
39
+ size: "icon-sm",
40
+ variant: "hoverable",
41
+ color: "text",
42
+ label: "Open the editor",
43
+ onClick: (e) => {
44
+ e.stopPropagation();
45
+ onClickEdit?.(newKeyPath);
46
+ }
47
+ }
48
+ ),
49
+ children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: subSection })
50
+ },
51
+ JSON.stringify(subSection)
52
+ );
53
+ });
54
+ };
55
+ const EnumerationWrapper = (props) => {
56
+ const { keyPath, section } = props;
57
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("div", { className: "ml-2 grid grid-cols-[auto,1fr] gap-2", children: Object.keys(section).filter((key) => !traceKeys.includes(key)).map((key) => {
58
+ const newKeyPathEl = {
59
+ type: core.NodeType.Enumeration,
60
+ key
61
+ };
62
+ const newKeyPath = [...keyPath, newKeyPathEl];
63
+ const subSection = section.enumeration[key];
64
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(jsxRuntime.jsxRuntimeExports.Fragment, { children: [
65
+ /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("span", { className: "flex items-center font-bold", children: key }),
66
+ /* @__PURE__ */ require$$0.createElement(
67
+ NodeWrapper,
68
+ {
69
+ ...props,
70
+ key,
71
+ keyPath: newKeyPath,
72
+ section: subSection
73
+ }
74
+ )
75
+ ] });
76
+ }) });
77
+ };
78
+ const NestedObjectWrapper = (props) => {
79
+ const {
80
+ keyPath,
81
+ section,
82
+ focusedKeyPath = [],
83
+ onClickEdit,
84
+ onFocusKeyPath
85
+ } = props;
86
+ return Object.keys(section).filter((key) => !traceKeys.includes(key)).map((key) => {
87
+ const newKeyPathEl = { key, type: core.NodeType.Object };
88
+ const newKeyPath = [...keyPath, newKeyPathEl];
89
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
90
+ components_DictionaryEditor_ItemLayout.ItemLayout,
91
+ {
92
+ level: keyPath.length,
93
+ title: key,
94
+ description: "",
95
+ isSelected: core.isSameKeyPath(newKeyPath, focusedKeyPath),
96
+ onClick: (e) => {
97
+ e.stopPropagation();
98
+ onFocusKeyPath(newKeyPath);
99
+ },
100
+ rightParam: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
101
+ components_Button_Button.Button,
102
+ {
103
+ Icon: lucideReact.Edit,
104
+ size: "icon-sm",
105
+ variant: "hoverable",
106
+ color: "text",
107
+ label: "Open the editor",
108
+ onClick: (e) => {
109
+ e.stopPropagation();
110
+ onClickEdit?.(newKeyPath);
111
+ }
112
+ }
113
+ ),
114
+ children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: section[key] })
115
+ },
116
+ key
117
+ );
118
+ });
119
+ };
120
+ const TranslationWrapper = (props) => {
121
+ const { keyPath, section, locale } = props;
122
+ const newKeyPathEl = {
123
+ type: core.NodeType.Translation,
124
+ key: locale
125
+ };
126
+ const newKeyPath = [...keyPath, newKeyPathEl];
127
+ const subSection = section.translation[locale];
128
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(NodeWrapper, { ...props, keyPath: newKeyPath, section: subSection });
129
+ };
130
+ const traceKeys = ["filePath", "id", "nodeType"];
131
+ const isReactNode = (node) => typeof node?.key !== "undefined" && typeof node?.props !== "undefined";
132
+ const createReactElement = (element) => {
133
+ if (typeof element === "string") {
134
+ return element;
135
+ }
136
+ const convertChildrenAsArray = (element2) => {
137
+ if (element2?.props && typeof element2.props.children === "object") {
138
+ const childrenResult = [];
139
+ const { children } = element2.props;
140
+ Object.keys(children).forEach((key) => {
141
+ childrenResult.push(createReactElement(children[key]));
142
+ });
143
+ return {
144
+ ...element2,
145
+ props: { ...element2.props, children: childrenResult }
146
+ };
147
+ }
148
+ return {
149
+ ...element2,
150
+ props: { ...element2.props, children: element2.props.children }
151
+ };
152
+ };
153
+ const fixedElement = convertChildrenAsArray(element);
154
+ const { type, props } = fixedElement;
155
+ return require$$0.createElement(type ?? "div", props, ...props.children);
156
+ };
157
+ const NodeWrapper = (props) => {
158
+ const { section } = props;
159
+ if (typeof section === "object") {
160
+ if (isReactNode(section)) {
161
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(jsxRuntime.jsxRuntimeExports.Fragment, { children: [
162
+ createReactElement(section),
163
+ /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx("span", { className: "text-neutral dark:text-neutral-dark text-xs", children: "React node not editable" })
164
+ ] });
165
+ }
166
+ if (section.nodeType === core.NodeType.Translation) {
167
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
168
+ TranslationWrapper,
169
+ {
170
+ ...props,
171
+ section
172
+ }
173
+ );
174
+ }
175
+ if (section.nodeType === core.NodeType.Enumeration) {
176
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
177
+ EnumerationWrapper,
178
+ {
179
+ ...props,
180
+ section
181
+ }
182
+ );
183
+ }
184
+ if (Array.isArray(section)) {
185
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ArrayWrapper, { ...props, section });
186
+ }
187
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
188
+ NestedObjectWrapper,
189
+ {
190
+ ...props,
191
+ section
192
+ }
193
+ );
194
+ }
195
+ if (typeof section === "string") {
196
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(components_DictionaryEditor_NodeWrapper_StringWrapper.StringWrapper, { ...props, section });
197
+ }
198
+ };
199
+ exports.ArrayWrapper = ArrayWrapper;
200
+ exports.EnumerationWrapper = EnumerationWrapper;
201
+ exports.NestedObjectWrapper = NestedObjectWrapper;
202
+ exports.NodeWrapper = NodeWrapper;
203
+ exports.TranslationWrapper = TranslationWrapper;
204
+ exports.traceKeys = traceKeys;
205
+ //# sourceMappingURL=index-DAsui9u9.cjs.map