@team-monolith/cds 1.119.2 → 1.119.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 (221) hide show
  1. package/dist/CdsProvider.d.ts +2 -2
  2. package/dist/CdsProvider.js +1 -11
  3. package/dist/i18n/i18n.d.ts +14 -3
  4. package/dist/i18n/i18n.js +32 -34
  5. package/dist/icons/custom/colored/AiHelper.d.ts +1 -1
  6. package/dist/icons/custom/colored/AiHelper.js +1 -1
  7. package/dist/icons/custom/colored/AiQuizColor.d.ts +1 -1
  8. package/dist/icons/custom/colored/AiQuizColor.js +1 -1
  9. package/dist/icons/custom/colored/BadgeColor.d.ts +1 -1
  10. package/dist/icons/custom/colored/BadgeColor.js +1 -1
  11. package/dist/icons/custom/colored/BadgeGold.d.ts +1 -1
  12. package/dist/icons/custom/colored/BadgeGold.js +1 -1
  13. package/dist/icons/custom/colored/BadgeGreen.d.ts +1 -1
  14. package/dist/icons/custom/colored/BadgeGreen.js +1 -1
  15. package/dist/icons/custom/colored/BadgeSilver.d.ts +1 -1
  16. package/dist/icons/custom/colored/BadgeSilver.js +1 -1
  17. package/dist/icons/custom/colored/Basic.d.ts +1 -1
  18. package/dist/icons/custom/colored/Basic.js +1 -1
  19. package/dist/icons/custom/colored/BasicPlus.d.ts +1 -1
  20. package/dist/icons/custom/colored/BasicPlus.js +1 -1
  21. package/dist/icons/custom/colored/BoardColor.d.ts +1 -1
  22. package/dist/icons/custom/colored/BoardColor.js +1 -1
  23. package/dist/icons/custom/colored/CastCloudyColor.d.ts +1 -1
  24. package/dist/icons/custom/colored/CastCloudyColor.js +1 -1
  25. package/dist/icons/custom/colored/CastPartlyColor.d.ts +1 -1
  26. package/dist/icons/custom/colored/CastPartlyColor.js +1 -1
  27. package/dist/icons/custom/colored/CastRainbowColor.d.ts +1 -1
  28. package/dist/icons/custom/colored/CastRainbowColor.js +1 -1
  29. package/dist/icons/custom/colored/CastSunnyColor.d.ts +1 -1
  30. package/dist/icons/custom/colored/CastSunnyColor.js +1 -1
  31. package/dist/icons/custom/colored/ClapBronze.d.ts +1 -1
  32. package/dist/icons/custom/colored/ClapBronze.js +1 -1
  33. package/dist/icons/custom/colored/ClapGold.d.ts +1 -1
  34. package/dist/icons/custom/colored/ClapGold.js +1 -1
  35. package/dist/icons/custom/colored/ClapSilver.d.ts +1 -1
  36. package/dist/icons/custom/colored/ClapSilver.js +1 -1
  37. package/dist/icons/custom/colored/Class.d.ts +1 -1
  38. package/dist/icons/custom/colored/Class.js +1 -1
  39. package/dist/icons/custom/colored/CodapColor.d.ts +1 -1
  40. package/dist/icons/custom/colored/CodapColor.js +1 -1
  41. package/dist/icons/custom/colored/EbookColor.d.ts +1 -1
  42. package/dist/icons/custom/colored/EbookColor.js +1 -1
  43. package/dist/icons/custom/colored/EmbeddedColor.d.ts +1 -1
  44. package/dist/icons/custom/colored/EmbeddedColor.js +1 -1
  45. package/dist/icons/custom/colored/EmoClapColor.d.ts +1 -1
  46. package/dist/icons/custom/colored/EmoClapColor.js +1 -1
  47. package/dist/icons/custom/colored/EmoGoodColor.d.ts +1 -1
  48. package/dist/icons/custom/colored/EmoGoodColor.js +1 -1
  49. package/dist/icons/custom/colored/EmoGreatColor.d.ts +1 -1
  50. package/dist/icons/custom/colored/EmoGreatColor.js +1 -1
  51. package/dist/icons/custom/colored/EmoHeartColor.d.ts +1 -1
  52. package/dist/icons/custom/colored/EmoHeartColor.js +1 -1
  53. package/dist/icons/custom/colored/EmoHundredColor.d.ts +1 -1
  54. package/dist/icons/custom/colored/EmoHundredColor.js +1 -1
  55. package/dist/icons/custom/colored/EmoNeutralColor.d.ts +1 -1
  56. package/dist/icons/custom/colored/EmoNeutralColor.js +1 -1
  57. package/dist/icons/custom/colored/EmoStarsColor.d.ts +1 -1
  58. package/dist/icons/custom/colored/EmoStarsColor.js +1 -1
  59. package/dist/icons/custom/colored/EmoThumbupColor.d.ts +1 -1
  60. package/dist/icons/custom/colored/EmoThumbupColor.js +1 -1
  61. package/dist/icons/custom/colored/Empty.d.ts +1 -1
  62. package/dist/icons/custom/colored/Empty.js +1 -1
  63. package/dist/icons/custom/colored/EntryColor.d.ts +1 -1
  64. package/dist/icons/custom/colored/EntryColor.js +1 -1
  65. package/dist/icons/custom/colored/FilenameAllColor.d.ts +1 -1
  66. package/dist/icons/custom/colored/FilenameAllColor.js +1 -1
  67. package/dist/icons/custom/colored/FilenameDocColor.d.ts +1 -1
  68. package/dist/icons/custom/colored/FilenameDocColor.js +1 -1
  69. package/dist/icons/custom/colored/FilenameHwpColor.d.ts +1 -1
  70. package/dist/icons/custom/colored/FilenameHwpColor.js +1 -1
  71. package/dist/icons/custom/colored/FilenameImgColor.d.ts +1 -1
  72. package/dist/icons/custom/colored/FilenameImgColor.js +1 -1
  73. package/dist/icons/custom/colored/FilenameMp4Color.d.ts +1 -1
  74. package/dist/icons/custom/colored/FilenameMp4Color.js +1 -1
  75. package/dist/icons/custom/colored/FilenamePdfColor.d.ts +1 -1
  76. package/dist/icons/custom/colored/FilenamePdfColor.js +1 -1
  77. package/dist/icons/custom/colored/FilenamePptColor.d.ts +1 -1
  78. package/dist/icons/custom/colored/FilenamePptColor.js +1 -1
  79. package/dist/icons/custom/colored/FilenameXlsColor.d.ts +1 -1
  80. package/dist/icons/custom/colored/FilenameXlsColor.js +1 -1
  81. package/dist/icons/custom/colored/FilenameZipColor.d.ts +1 -1
  82. package/dist/icons/custom/colored/FilenameZipColor.js +1 -1
  83. package/dist/icons/custom/colored/Google.d.ts +1 -1
  84. package/dist/icons/custom/colored/Google.js +1 -1
  85. package/dist/icons/custom/colored/HandFill.d.ts +1 -1
  86. package/dist/icons/custom/colored/HandFill.js +1 -1
  87. package/dist/icons/custom/colored/JudgeColor.d.ts +1 -1
  88. package/dist/icons/custom/colored/JudgeColor.js +1 -1
  89. package/dist/icons/custom/colored/MakecodeColor.d.ts +1 -1
  90. package/dist/icons/custom/colored/MakecodeColor.js +1 -1
  91. package/dist/icons/custom/colored/Master.d.ts +1 -1
  92. package/dist/icons/custom/colored/Master.js +1 -1
  93. package/dist/icons/custom/colored/Material.d.ts +1 -1
  94. package/dist/icons/custom/colored/Material.js +1 -1
  95. package/dist/icons/custom/colored/MedalBronze.d.ts +1 -1
  96. package/dist/icons/custom/colored/MedalBronze.js +1 -1
  97. package/dist/icons/custom/colored/MedalGold.d.ts +1 -1
  98. package/dist/icons/custom/colored/MedalGold.js +1 -1
  99. package/dist/icons/custom/colored/MedalSilver.d.ts +1 -1
  100. package/dist/icons/custom/colored/MedalSilver.js +1 -1
  101. package/dist/icons/custom/colored/Pro.d.ts +1 -1
  102. package/dist/icons/custom/colored/Pro.js +1 -1
  103. package/dist/icons/custom/colored/Problem.d.ts +1 -1
  104. package/dist/icons/custom/colored/Problem.js +1 -1
  105. package/dist/icons/custom/colored/PythonColor.d.ts +1 -1
  106. package/dist/icons/custom/colored/PythonColor.js +1 -1
  107. package/dist/icons/custom/colored/QuizColor.d.ts +1 -1
  108. package/dist/icons/custom/colored/QuizColor.js +1 -1
  109. package/dist/icons/custom/colored/ResourceColor.d.ts +1 -1
  110. package/dist/icons/custom/colored/ResourceColor.js +1 -1
  111. package/dist/icons/custom/colored/ScratchColor.d.ts +1 -1
  112. package/dist/icons/custom/colored/ScratchColor.js +1 -1
  113. package/dist/icons/custom/colored/TypeHelper.d.ts +1 -1
  114. package/dist/icons/custom/colored/TypeHelper.js +1 -1
  115. package/dist/icons/custom/colored/Whale.d.ts +1 -1
  116. package/dist/icons/custom/colored/Whale.js +1 -1
  117. package/dist/icons/custom/colored/WorksheetColor.d.ts +1 -1
  118. package/dist/icons/custom/colored/WorksheetColor.js +1 -1
  119. package/dist/icons/custom/default/AiQuiz.d.ts +1 -1
  120. package/dist/icons/custom/default/AiQuiz.js +1 -1
  121. package/dist/icons/custom/default/Badge.d.ts +1 -1
  122. package/dist/icons/custom/default/Badge.js +1 -1
  123. package/dist/icons/custom/default/Board.d.ts +1 -1
  124. package/dist/icons/custom/default/Board.js +1 -1
  125. package/dist/icons/custom/default/CastCloudy.d.ts +1 -1
  126. package/dist/icons/custom/default/CastCloudy.js +1 -1
  127. package/dist/icons/custom/default/CastPartly.d.ts +1 -1
  128. package/dist/icons/custom/default/CastPartly.js +1 -1
  129. package/dist/icons/custom/default/CastRainbow.d.ts +1 -1
  130. package/dist/icons/custom/default/CastRainbow.js +1 -1
  131. package/dist/icons/custom/default/CastSunny.d.ts +1 -1
  132. package/dist/icons/custom/default/CastSunny.js +1 -1
  133. package/dist/icons/custom/default/Codap.d.ts +1 -1
  134. package/dist/icons/custom/default/Codap.js +1 -1
  135. package/dist/icons/custom/default/Ebook.d.ts +1 -1
  136. package/dist/icons/custom/default/Ebook.js +1 -1
  137. package/dist/icons/custom/default/Embedded.d.ts +1 -1
  138. package/dist/icons/custom/default/Embedded.js +1 -1
  139. package/dist/icons/custom/default/EmoClap.d.ts +1 -1
  140. package/dist/icons/custom/default/EmoClap.js +1 -1
  141. package/dist/icons/custom/default/EmoGood.d.ts +1 -1
  142. package/dist/icons/custom/default/EmoGood.js +1 -1
  143. package/dist/icons/custom/default/EmoGreat.d.ts +1 -1
  144. package/dist/icons/custom/default/EmoGreat.js +1 -1
  145. package/dist/icons/custom/default/EmoHeart.d.ts +1 -1
  146. package/dist/icons/custom/default/EmoHeart.js +1 -1
  147. package/dist/icons/custom/default/EmoHundred.d.ts +1 -1
  148. package/dist/icons/custom/default/EmoHundred.js +1 -1
  149. package/dist/icons/custom/default/EmoNeutral.d.ts +1 -1
  150. package/dist/icons/custom/default/EmoNeutral.js +1 -1
  151. package/dist/icons/custom/default/EmoStars.d.ts +1 -1
  152. package/dist/icons/custom/default/EmoStars.js +1 -1
  153. package/dist/icons/custom/default/EmoThumbup.d.ts +1 -1
  154. package/dist/icons/custom/default/EmoThumbup.js +1 -1
  155. package/dist/icons/custom/default/Entry.d.ts +1 -1
  156. package/dist/icons/custom/default/Entry.js +1 -1
  157. package/dist/icons/custom/default/Fab.d.ts +1 -1
  158. package/dist/icons/custom/default/Fab.js +1 -1
  159. package/dist/icons/custom/default/Grant.d.ts +1 -1
  160. package/dist/icons/custom/default/Grant.js +1 -1
  161. package/dist/icons/custom/default/GrantAlt.d.ts +1 -1
  162. package/dist/icons/custom/default/GrantAlt.js +1 -1
  163. package/dist/icons/custom/default/HandLine.d.ts +1 -1
  164. package/dist/icons/custom/default/HandLine.js +1 -1
  165. package/dist/icons/custom/default/Judge.d.ts +1 -1
  166. package/dist/icons/custom/default/Judge.js +1 -1
  167. package/dist/icons/custom/default/Makecode.d.ts +1 -1
  168. package/dist/icons/custom/default/Makecode.js +1 -1
  169. package/dist/icons/custom/default/Pdf.d.ts +1 -1
  170. package/dist/icons/custom/default/Pdf.js +1 -1
  171. package/dist/icons/custom/default/Python.d.ts +1 -1
  172. package/dist/icons/custom/default/Python.js +1 -1
  173. package/dist/icons/custom/default/Quiz.d.ts +1 -1
  174. package/dist/icons/custom/default/Quiz.js +1 -1
  175. package/dist/icons/custom/default/Resource.d.ts +1 -1
  176. package/dist/icons/custom/default/Resource.js +1 -1
  177. package/dist/icons/custom/default/Scratch.d.ts +1 -1
  178. package/dist/icons/custom/default/Scratch.js +1 -1
  179. package/dist/icons/custom/default/ScrollAlt.d.ts +1 -1
  180. package/dist/icons/custom/default/ScrollAlt.js +1 -1
  181. package/dist/icons/custom/default/ScrollFill.d.ts +1 -1
  182. package/dist/icons/custom/default/ScrollFill.js +1 -1
  183. package/dist/icons/custom/default/ScrollLine.d.ts +1 -1
  184. package/dist/icons/custom/default/ScrollLine.js +1 -1
  185. package/dist/icons/custom/default/Symbol.d.ts +1 -1
  186. package/dist/icons/custom/default/Symbol.js +1 -1
  187. package/dist/icons/custom/default/Worksheet.d.ts +1 -1
  188. package/dist/icons/custom/default/Worksheet.js +1 -1
  189. package/dist/icons/custom/svgrColoredTemplate.js +1 -1
  190. package/dist/icons/custom/svgrDefaultTemplate.js +1 -1
  191. package/dist/index.d.ts +1 -0
  192. package/dist/index.js +1 -0
  193. package/dist/patterns/LexicalEditor/components/FileSelectInput.js +7 -8
  194. package/dist/patterns/LexicalEditor/components/UploadFileDialog/UploadFileDialog.js +3 -1
  195. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/InputComponent.js +2 -2
  196. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/FormPlaceholder.js +3 -1
  197. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/SettingForm.js +1 -1
  198. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectBox/SelectBoxView.js +15 -14
  199. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectComponent.js +1 -1
  200. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SettingForm/SettingForm.js +3 -3
  201. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormIconAndLabel/FormIconAndLabel.js +2 -2
  202. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormIconAndLabel/FormLabel.js +5 -3
  203. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormQuestion.js +1 -1
  204. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/SettingForm.js +1 -1
  205. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/EvaluationComponent.js +1 -1
  206. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/iconData.d.ts +2 -1
  207. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/iconData.js +4 -5
  208. package/dist/patterns/LexicalEditor/nodes/SheetInputNode/InputComponent.js +1 -1
  209. package/dist/patterns/LexicalEditor/nodes/SheetInputNode/SettingForm.js +2 -2
  210. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SelectComponent.js +1 -1
  211. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SettingForm/SettingForm.js +3 -3
  212. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/ComponentAdderPlugin.js +1 -0
  213. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/useContextMenuOptions.js +84 -83
  214. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuPlugin.d.ts +2 -0
  215. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuPlugin.js +49 -94
  216. package/dist/patterns/LexicalEditor/plugins/DragDropPastePlugin/index.js +4 -2
  217. package/dist/patterns/LexicalEditor/plugins/ParagraphPlaceholderPlugin/index.js +17 -8
  218. package/dist/patterns/LexicalEditor/plugins/TogglePlugin/index.js +54 -2
  219. package/dist/texts.d.ts +2 -1
  220. package/dist/texts.js +11 -12
  221. package/package.json +1 -2
@@ -35,7 +35,6 @@ import { InsertVideoDialog } from "../../components/InsertVideoDialog";
35
35
  import { INSERT_VIDEO_COMMAND } from "../VideosPlugin";
36
36
  import { UploadFileDialog } from "../../components/UploadFileDialog";
37
37
  import { UPLOAD_FILE_COMMAND } from "../FilePlugin";
38
- import { i18n } from "../../../../i18n/i18n";
39
38
  import { useTranslation } from "react-i18next";
40
39
  import { getTexts } from "../../../../texts";
41
40
  import { INSERT_TOGGLE_COMMAND } from "../TogglePlugin";
@@ -92,9 +91,9 @@ function getDynamicOptions(editor, queryString) {
92
91
  }
93
92
  return options;
94
93
  }
95
- function getSheetContextOptions(editor, theme) {
94
+ function getSheetContextOptions(editor, theme, t) {
96
95
  return [
97
- new ComponentPickerOption(i18n.t("선택형 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
96
+ new ComponentPickerOption(t("선택형 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
98
97
  icon: _jsx(ListRadioIcon, { color: theme.color.foreground.primary }),
99
98
  // eslint-disable-next-line i18next/no-literal-string
100
99
  keywords: ["sheet select", "선택형 입력"],
@@ -112,28 +111,24 @@ function getSheetContextOptions(editor, theme) {
112
111
  allowMultipleAnswers: false,
113
112
  }),
114
113
  }),
115
- new ComponentPickerOption(i18n.t("3단계 평가 입력 칸"), {
114
+ new ComponentPickerOption(t("3단계 평가 입력 칸"), {
116
115
  icon: _jsx(EmojiStickerLineIcon, { color: theme.color.foreground.primary }),
117
116
  // eslint-disable-next-line i18next/no-literal-string
118
117
  keywords: ["self evaluation", "3단계 평가 입력"],
119
118
  onSelect: () => editor.dispatchCommand(INSERT_SELF_EVALUATION_COMMAND, {
120
119
  iconType: "emoji",
121
- labels: [
122
- i18n.t("아주 잘했어요!"),
123
- i18n.t("보통이에요."),
124
- i18n.t("잘 모르겠어요."),
125
- ],
120
+ labels: [t("아주 잘했어요!"), t("보통이에요."), t("잘 모르겠어요.")],
126
121
  evaluations: [
127
122
  {
128
123
  question: {
129
- text: getTexts("placeholderEvaluationItem"),
124
+ text: getTexts(t, "placeholderEvaluationItem"),
130
125
  },
131
126
  selectedLabelIndex: null,
132
127
  },
133
128
  ],
134
129
  }),
135
130
  }),
136
- new ComponentPickerOption(i18n.t("단답형 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
131
+ new ComponentPickerOption(t("단답형 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
137
132
  icon: _jsx(InputMethodLineIcon, { color: theme.color.foreground.primary }),
138
133
  // eslint-disable-next-line i18next/no-literal-string
139
134
  keywords: ["sheet short input", "단답형 입력"],
@@ -143,7 +138,7 @@ function getSheetContextOptions(editor, theme) {
143
138
  placeholder: "",
144
139
  }),
145
140
  }),
146
- new ComponentPickerOption(i18n.t("서술형 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
141
+ new ComponentPickerOption(t("서술형 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
147
142
  icon: _jsx(FileList2LineIcon, { color: theme.color.foreground.primary }),
148
143
  // eslint-disable-next-line i18next/no-literal-string
149
144
  keywords: ["sheet long input", "서술형 입력"],
@@ -153,7 +148,7 @@ function getSheetContextOptions(editor, theme) {
153
148
  placeholder: "",
154
149
  }),
155
150
  }),
156
- new ComponentDrawerOption(i18n.t("활동지 메뉴구분선"), (_jsx("div", { css: css `
151
+ new ComponentDrawerOption(t("활동지 메뉴구분선"), (_jsx("div", { css: css `
157
152
  width: 100%;
158
153
  height: 1px;
159
154
  background: ${theme.color.background.neutralAltActive};
@@ -161,9 +156,9 @@ function getSheetContextOptions(editor, theme) {
161
156
  ` }))),
162
157
  ];
163
158
  }
164
- function getQuizContextOptions(editor, theme) {
159
+ function getQuizContextOptions(editor, theme, t) {
165
160
  return [
166
- new ComponentPickerOption(i18n.t("주관식 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
161
+ new ComponentPickerOption(t("주관식 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
167
162
  icon: _jsx(InputMethodLineIcon, { color: theme.color.foreground.primary }),
168
163
  // eslint-disable-next-line i18next/no-literal-string
169
164
  keywords: ["problem input", "주관식 입력"],
@@ -181,7 +176,7 @@ function getQuizContextOptions(editor, theme) {
181
176
  ignoreWhitespace: true,
182
177
  }),
183
178
  }),
184
- new ComponentPickerOption(i18n.t("객관식 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
179
+ new ComponentPickerOption(t("객관식 입력 칸", { context: "렉시컬 드롭다운 메뉴" }), {
185
180
  icon: _jsx(ListRadioIcon, { color: theme.color.foreground.primary }),
186
181
  // eslint-disable-next-line i18next/no-literal-string
187
182
  keywords: ["problem select", "객관식 입력"],
@@ -201,7 +196,7 @@ function getQuizContextOptions(editor, theme) {
201
196
  });
202
197
  },
203
198
  }),
204
- new ComponentDrawerOption(i18n.t("퀴즈 메뉴구분선"), (_jsx("div", { css: css `
199
+ new ComponentDrawerOption(t("퀴즈 메뉴구분선"), (_jsx("div", { css: css `
205
200
  width: 100%;
206
201
  height: 1px;
207
202
  background: ${theme.color.background.neutralAltActive};
@@ -209,48 +204,10 @@ function getQuizContextOptions(editor, theme) {
209
204
  ` }))),
210
205
  ];
211
206
  }
212
- function getToggleTitleOptions(props) {
213
- const { editor } = props;
214
- return [
215
- new ComponentPickerOption(i18n.t("본문", { context: "렉시컬 드롭다운 메뉴" }), {
216
- icon: _jsx(TextIcon, {}),
217
- // eslint-disable-next-line i18next/no-literal-string
218
- keywords: ["normal", "paragraph", "p", "text", "본문", "단락", "내용"],
219
- onSelect: () => editor.update(() => {
220
- const selection = $getSelection();
221
- if ($isRangeSelection(selection)) {
222
- $setBlocksType(selection, () => $createParagraphNode());
223
- }
224
- }),
225
- }),
226
- ...[1, 2, 3].map((n) => {
227
- const titleMap = {
228
- 1: i18n.t("큰 제목", { context: "렉시컬 드롭다운 메뉴" }),
229
- 2: i18n.t("중간 제목", { context: "렉시컬 드롭다운 메뉴" }),
230
- 3: i18n.t("작은 제목", { context: "렉시컬 드롭다운 메뉴" }),
231
- };
232
- const iconMap = {
233
- 1: _jsx(H1Icon, {}),
234
- 2: _jsx(H2Icon, {}),
235
- 3: _jsx(H3Icon, {}),
236
- };
237
- return new ComponentPickerOption(titleMap[n], {
238
- icon: iconMap[n],
239
- keywords: ["heading", "header", `h${n}`, titleMap[n]],
240
- onSelect: () => editor.update(() => {
241
- const selection = $getSelection();
242
- if ($isRangeSelection(selection)) {
243
- $setBlocksType(selection, () => $createHeadingNode(`h${n}`));
244
- }
245
- }),
246
- });
247
- }),
248
- ];
249
- }
250
207
  export function getBaseOptions(props) {
251
- const { editor, theme, setImageOpen, setVideoOpen, setFileOpen, isSheetEnabled, isQuizEnabled, showFileUpload, } = props;
208
+ const { editor, theme, t, setImageOpen, setVideoOpen, setFileOpen, isSheetEnabled, isQuizEnabled, showFileUpload, } = props;
252
209
  const baseOptions = [
253
- new ComponentPickerOption(i18n.t("본문", { context: "렉시컬 드롭다운 메뉴" }), {
210
+ new ComponentPickerOption(t("본문", { context: "렉시컬 드롭다운 메뉴" }), {
254
211
  icon: _jsx(TextIcon, {}),
255
212
  // eslint-disable-next-line i18next/no-literal-string
256
213
  keywords: ["normal", "paragraph", "p", "text", "본문", "단락", "내용"],
@@ -263,9 +220,9 @@ export function getBaseOptions(props) {
263
220
  }),
264
221
  ...[1, 2, 3].map((n) => {
265
222
  const titleMap = {
266
- 1: i18n.t("큰 제목", { context: "렉시컬 드롭다운 메뉴" }),
267
- 2: i18n.t("중간 제목", { context: "렉시컬 드롭다운 메뉴" }),
268
- 3: i18n.t("작은 제목", { context: "렉시컬 드롭다운 메뉴" }),
223
+ 1: t("큰 제목", { context: "렉시컬 드롭다운 메뉴" }),
224
+ 2: t("중간 제목", { context: "렉시컬 드롭다운 메뉴" }),
225
+ 3: t("작은 제목", { context: "렉시컬 드롭다운 메뉴" }),
269
226
  };
270
227
  const iconMap = {
271
228
  1: _jsx(H1Icon, {}),
@@ -283,22 +240,22 @@ export function getBaseOptions(props) {
283
240
  }),
284
241
  });
285
242
  }),
286
- new ComponentPickerOption(i18n.t("일반 목록", { context: "렉시컬 드롭다운 메뉴" }), {
243
+ new ComponentPickerOption(t("일반 목록", { context: "렉시컬 드롭다운 메뉴" }), {
287
244
  icon: _jsx(ListUnorderedIcon, {}),
288
245
  keywords: ["bulleted list", "unordered list", "ul"],
289
246
  onSelect: () => editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined),
290
247
  }),
291
- new ComponentPickerOption(i18n.t("숫자 목록", { context: "렉시컬 드롭다운 메뉴" }), {
248
+ new ComponentPickerOption(t("숫자 목록", { context: "렉시컬 드롭다운 메뉴" }), {
292
249
  icon: _jsx(ListOrderedIcon, {}),
293
250
  keywords: ["numbered list", "ordered list", "ol"],
294
251
  onSelect: () => editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined),
295
252
  }),
296
- new ComponentPickerOption(i18n.t("토글 목록", { context: "렉시컬 드롭다운 메뉴" }), {
253
+ new ComponentPickerOption(t("토글 목록", { context: "렉시컬 드롭다운 메뉴" }), {
297
254
  icon: _jsx(PlayList2FillIcon, {}),
298
255
  keywords: ["toggle", "collapsible"],
299
256
  onSelect: () => editor.dispatchCommand(INSERT_TOGGLE_COMMAND, undefined),
300
257
  }),
301
- new ComponentPickerOption(i18n.t("인용 블록", { context: "렉시컬 드롭다운 메뉴" }), {
258
+ new ComponentPickerOption(t("인용 블록", { context: "렉시컬 드롭다운 메뉴" }), {
302
259
  icon: _jsx(DoubleQuotesLIcon, {}),
303
260
  keywords: ["block quote"],
304
261
  onSelect: () => editor.update(() => {
@@ -308,7 +265,7 @@ export function getBaseOptions(props) {
308
265
  }
309
266
  }),
310
267
  }),
311
- new ComponentPickerOption(i18n.t("코드 블록", { context: "렉시컬 드롭다운 메뉴" }), {
268
+ new ComponentPickerOption(t("코드 블록", { context: "렉시컬 드롭다운 메뉴" }), {
312
269
  icon: _jsx(CodeViewIcon, {}),
313
270
  keywords: ["javascript", "python", "js", "codeblock"],
314
271
  onSelect: () => editor.update(() => {
@@ -327,17 +284,17 @@ export function getBaseOptions(props) {
327
284
  }
328
285
  }),
329
286
  }),
330
- new ComponentPickerOption(i18n.t("구분선"), {
287
+ new ComponentPickerOption(t("구분선"), {
331
288
  icon: _jsx(SeparatorIcon, {}),
332
289
  keywords: ["horizontal rule", "divider", "hr"],
333
290
  onSelect: () => editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined),
334
291
  }),
335
- new ComponentPickerOption(i18n.t("이미지"), {
292
+ new ComponentPickerOption(t("이미지"), {
336
293
  icon: _jsx(ImageLineIcon, {}),
337
294
  keywords: ["image", "photo", "picture", "file"],
338
295
  onSelect: () => setImageOpen(true),
339
296
  }),
340
- new ComponentPickerOption(i18n.t("동영상"), {
297
+ new ComponentPickerOption(t("동영상"), {
341
298
  icon: _jsx(VideoLineIcon, {}),
342
299
  keywords: ["video", "movie"],
343
300
  onSelect: () => setVideoOpen(true),
@@ -348,15 +305,15 @@ export function getBaseOptions(props) {
348
305
  const isLabMode = localStorage.getItem("labMode") === "true";
349
306
  // isQuizEnabled이거나 devMode이면 퀴즈 컨텍스트 메뉴를 꼭대기에 추가합니다.
350
307
  if (isQuizEnabled || isDevMode) {
351
- baseOptions.unshift(...getQuizContextOptions(editor, theme));
308
+ baseOptions.unshift(...getQuizContextOptions(editor, theme, t));
352
309
  }
353
310
  // isSheetEnabled이거나 devMode이면 활동지 컨텍스트 메뉴를 꼭대기에 추가합니다.
354
311
  if (isSheetEnabled || isDevMode) {
355
- baseOptions.unshift(...getSheetContextOptions(editor, theme));
312
+ baseOptions.unshift(...getSheetContextOptions(editor, theme, t));
356
313
  }
357
314
  // devMode || labMode이면 칼럼 컨텍스트 메뉴를 추가합니다. (일부공개)
358
315
  if (isDevMode || isLabMode) {
359
- baseOptions.push(new ComponentPickerOption(i18n.t("칼럼"), {
316
+ baseOptions.push(new ComponentPickerOption(t("칼럼"), {
360
317
  icon: _jsx(LayoutColumnLineIcon, {}),
361
318
  keywords: ["columns", "layout", "grid"],
362
319
  onSelect: () => editor.dispatchCommand(INSERT_LAYOUT_COMMAND, "1fr 1fr"),
@@ -364,7 +321,7 @@ export function getBaseOptions(props) {
364
321
  }
365
322
  // showFileUpload 이면 파일블록을 추가합니다.
366
323
  if (showFileUpload || isDevMode) {
367
- baseOptions.push(new ComponentPickerOption(i18n.t("파일 게시"), {
324
+ baseOptions.push(new ComponentPickerOption(t("파일 게시"), {
368
325
  icon: _jsx(File3LineIcon, {}),
369
326
  keywords: ["file", "upload"],
370
327
  onSelect: () => setFileOpen(true),
@@ -378,30 +335,28 @@ export function ComponentPickerMenuPlugin(props) {
378
335
  const [editor] = useLexicalComposerContext();
379
336
  const theme = useTheme();
380
337
  const [queryString, setQueryString] = useState(null);
381
- const [isInsideToggleTitle, setIsInsideToggleTitle] = useState(() => isSelectionInsideToggleTitle(editor));
382
338
  const [imageOpen, setImageOpen] = useState(false);
383
339
  const [videoOpen, setVideoOpen] = useState(false);
384
340
  const [fileOpen, setFileOpen] = useState(false);
385
- const checkForTriggerMatch = useBasicTypeaheadTriggerMatch("/", {
386
- minLength: 0,
387
- });
388
- const handleQueryChange = useCallback((nextQuery) => {
389
- setQueryString(nextQuery);
390
- setIsInsideToggleTitle(() => isSelectionInsideToggleTitle(editor));
391
- }, [editor]);
341
+ const baseTrigger = useBasicTypeaheadTriggerMatch("/", { minLength: 0 });
342
+ const triggerFn = useCallback((text, editor) => {
343
+ if (isSelectionInsideToggleTitle(editor)) {
344
+ return null; // 메뉴를 열지 않음 → "/" 명령 무시
345
+ }
346
+ return baseTrigger(text, editor);
347
+ }, [baseTrigger]);
392
348
  const options = useMemo(() => {
393
- const baseOptions = isInsideToggleTitle
394
- ? getToggleTitleOptions({ editor })
395
- : getBaseOptions({
396
- editor,
397
- theme,
398
- setImageOpen,
399
- setVideoOpen,
400
- isSheetEnabled,
401
- isQuizEnabled,
402
- setFileOpen,
403
- showFileUpload,
404
- });
349
+ const baseOptions = getBaseOptions({
350
+ editor,
351
+ theme,
352
+ t,
353
+ setImageOpen,
354
+ setVideoOpen,
355
+ isSheetEnabled,
356
+ isQuizEnabled,
357
+ setFileOpen,
358
+ showFileUpload,
359
+ });
405
360
  if (!queryString) {
406
361
  return baseOptions;
407
362
  }
@@ -413,7 +368,7 @@ export function ComponentPickerMenuPlugin(props) {
413
368
  option.keywords.some((keyword) => regex.test(keyword)))),
414
369
  ];
415
370
  // eslint-disable-next-line react-hooks/exhaustive-deps
416
- }, [editor, queryString, isInsideToggleTitle]);
371
+ }, [editor, queryString]);
417
372
  const onSelectOption = useCallback((selectedOption, nodeToRemove, closeMenu, matchingString) => {
418
373
  if (selectedOption instanceof ComponentDrawerOption) {
419
374
  return;
@@ -434,7 +389,7 @@ export function ComponentPickerMenuPlugin(props) {
434
389
  editor.dispatchCommand(INSERT_VIDEO_COMMAND, props);
435
390
  }, onClose: () => setVideoOpen(false), shouldReset: true }), _jsx(UploadFileDialog, { open: fileOpen, onClose: () => setFileOpen(false), onChange: (props) => {
436
391
  editor.dispatchCommand(UPLOAD_FILE_COMMAND, props);
437
- } }), _jsx(LexicalTypeaheadMenuPlugin, { onQueryChange: handleQueryChange, onSelectOption: onSelectOption, triggerFn: checkForTriggerMatch, options: options, anchorClassName: cssToClassName `
392
+ } }), _jsx(LexicalTypeaheadMenuPlugin, { onQueryChange: setQueryString, onSelectOption: onSelectOption, triggerFn: triggerFn, options: options, anchorClassName: cssToClassName `
438
393
  z-index: ${ZINDEX.DIALOG + 1};
439
394
  `, menuRenderFn: (anchorElementRef, { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }) => anchorElementRef.current && options.length
440
395
  ? ReactDOM.createPortal(_jsx(ComponentPickerMenuList, { options: options, selectedIndex: selectedIndex, selectOptionAndCleanUp: selectOptionAndCleanUp, setHighlightedIndex: setHighlightedIndex }), anchorElementRef.current)
@@ -24,6 +24,7 @@ import { CdsContext } from "../../../../CdsProvider";
24
24
  import { UPLOAD_FILE_COMMAND } from "../FilePlugin";
25
25
  import moment from "moment";
26
26
  import { getTexts } from "../../../../texts";
27
+ import { useTranslation } from "react-i18next";
27
28
  const ACCEPTABLE_IMAGE_TYPES = [
28
29
  "image/",
29
30
  "image/heic",
@@ -42,6 +43,7 @@ export function DragDropPastePlugin() {
42
43
  const cdsContext = useContext(CdsContext);
43
44
  const uploadByFile = (_a = cdsContext.lexical) === null || _a === void 0 ? void 0 : _a.uploadByFile;
44
45
  const showFileError = (_b = cdsContext.lexical) === null || _b === void 0 ? void 0 : _b.showFileError;
46
+ const { t } = useTranslation();
45
47
  // eslint-disable-next-line arrow-body-style
46
48
  useEffect(() => {
47
49
  return editor.registerCommand(DRAG_DROP_PASTE, (files) => {
@@ -60,7 +62,7 @@ export function DragDropPastePlugin() {
60
62
  }
61
63
  else {
62
64
  if (file.size >= MAX_FILE_SIZE) {
63
- showFileError === null || showFileError === void 0 ? void 0 : showFileError("upload", getTexts("errorFileTooLarge"));
65
+ showFileError === null || showFileError === void 0 ? void 0 : showFileError("upload", getTexts(t, "errorFileTooLarge"));
64
66
  }
65
67
  else {
66
68
  const result = yield uploadByFile(file);
@@ -76,6 +78,6 @@ export function DragDropPastePlugin() {
76
78
  }))();
77
79
  return true;
78
80
  }, COMMAND_PRIORITY_LOW);
79
- }, [editor, showFileError, uploadByFile]);
81
+ }, [editor, showFileError, uploadByFile, t]);
80
82
  return null;
81
83
  }
@@ -3,13 +3,15 @@ import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext
3
3
  import { $getSelection, $isParagraphNode, $isRangeSelection } from "lexical";
4
4
  import { css as cssToClassName } from "@emotion/css";
5
5
  import { useTheme } from "@emotion/react";
6
- const getPlaceholderClassName = (theme) => cssToClassName `
7
- &::before {
8
- position: absolute;
9
- content: attr(data-placeholder);
10
- color: ${theme.color.foreground.neutralBaseDisabled};
11
- pointer-events: none;
12
- }
6
+ import { $isToggleTitleNode } from "../../nodes";
7
+ import { useTranslation } from "react-i18next";
8
+ const getPlaceholderClassName = (theme) => cssToClassName `
9
+ &::before {
10
+ position: absolute;
11
+ content: attr(data-placeholder);
12
+ color: ${theme.color.foreground.neutralBaseDisabled};
13
+ pointer-events: none;
14
+ }
13
15
  `;
14
16
  export const ParagraphPlaceholderPlugin = ({ placeholder, }) => {
15
17
  const [editor] = useLexicalComposerContext();
@@ -17,6 +19,7 @@ export const ParagraphPlaceholderPlugin = ({ placeholder, }) => {
17
19
  const theme = useTheme();
18
20
  const placeholderClassName = useMemo(() => getPlaceholderClassName(theme), [theme]);
19
21
  useEffect(() => {
22
+ const { t } = useTranslation();
20
23
  const removeUpdateListener = editor.registerUpdateListener(({ editorState }) => {
21
24
  editorState.read(() => {
22
25
  // 기존에 있던 placeholder를 제거합니다.
@@ -36,10 +39,16 @@ export const ParagraphPlaceholderPlugin = ({ placeholder, }) => {
36
39
  const focusedNode = selection.focus.getNode();
37
40
  if (!$isParagraphNode(focusedNode) || !focusedNode.isEmpty())
38
41
  return;
42
+ const parentNode = focusedNode.getParent();
43
+ // 토글 제목 노드인 경우, / 명령어를 사용하지 않으므로
44
+ // 기존 placeholder 값을 "토글 제목"으로 고정합니다.
45
+ const placeholderText = $isToggleTitleNode(parentNode)
46
+ ? t("토글 제목")
47
+ : placeholder;
39
48
  const el = editor.getElementByKey(focusedNode.getKey());
40
49
  if (el instanceof HTMLParagraphElement) {
41
50
  paragraphRef.current = el;
42
- paragraphRef.current.setAttribute("data-placeholder", placeholder);
51
+ paragraphRef.current.setAttribute("data-placeholder", placeholderText);
43
52
  paragraphRef.current.classList.add(placeholderClassName);
44
53
  }
45
54
  });
@@ -9,7 +9,7 @@
9
9
  import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
10
10
  import { $setBlocksType } from "@lexical/selection";
11
11
  import { $findMatchingParent, $insertNodeToNearestRoot, mergeRegister, } from "@lexical/utils";
12
- import { $createParagraphNode, $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, createCommand, INSERT_PARAGRAPH_COMMAND, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, KEY_ARROW_UP_COMMAND, } from "lexical";
12
+ import { $createParagraphNode, $getSelection, $isElementNode, $isParagraphNode, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, createCommand, INSERT_PARAGRAPH_COMMAND, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, KEY_ARROW_UP_COMMAND, } from "lexical";
13
13
  import { useEffect } from "react";
14
14
  import { $createToggleContainerNode, $createToggleTitleNode, $createToggleContentNode, $isToggleContainerNode, $isToggleTitleNode, $isToggleContentNode, ToggleContainerNode, ToggleTitleNode, ToggleContentNode, } from "../../nodes";
15
15
  export const INSERT_TOGGLE_COMMAND = createCommand("INSERT_TOGGLE_COMMAND");
@@ -77,12 +77,64 @@ export function TogglePlugin() {
77
77
  }
78
78
  node.remove();
79
79
  }
80
- }), editor.registerNodeTransform(ToggleTitleNode, (node) => {
80
+ }),
81
+ /**
82
+ * ToggleTitleNode 변경 시 내부 요소는 ParagraphNode만 허용하도록
83
+ * 각 자식 요소를 순회하면서 내부 텍스트를 ParagraphNode로 호이스트합니다.
84
+ */
85
+ editor.registerNodeTransform(ToggleTitleNode, (node) => {
81
86
  const parent = node.getParent();
82
87
  if (!$isToggleContainerNode(parent)) {
83
88
  node.replace($createParagraphNode().append(...node.getChildren()));
84
89
  return;
85
90
  }
91
+ let paragraph = node.getFirstChild();
92
+ if (!$isParagraphNode(paragraph)) {
93
+ const p = $createParagraphNode();
94
+ if (paragraph) {
95
+ paragraph.insertBefore(p);
96
+ }
97
+ else {
98
+ node.append(p);
99
+ }
100
+ paragraph = p;
101
+ }
102
+ // AIDEV-NOTE:
103
+ // paragraph의 타입이 LexicalNode인 경우 append 메서드가 없기 때문에
104
+ // $isParagraphNode 체크를 통해 타입 가드를 수행합니다.
105
+ if (!$isParagraphNode(paragraph)) {
106
+ return;
107
+ }
108
+ const hoistTexts = (n) => {
109
+ if ($isTextNode(n)) {
110
+ paragraph.append(n);
111
+ return;
112
+ }
113
+ if ($isElementNode(n)) {
114
+ const children = n.getChildren();
115
+ for (const c of children) {
116
+ hoistTexts(c);
117
+ }
118
+ if (n !== paragraph && n.getChildrenSize() === 0) {
119
+ n.remove();
120
+ }
121
+ return;
122
+ }
123
+ };
124
+ let child = node.getFirstChild();
125
+ while (child) {
126
+ const next = child.getNextSibling();
127
+ if (child !== paragraph) {
128
+ hoistTexts(child);
129
+ if ($isElementNode(child) && child.getChildrenSize() === 0) {
130
+ child.remove();
131
+ }
132
+ }
133
+ child = next;
134
+ }
135
+ if (paragraph.getParent() !== node) {
136
+ node.append(paragraph);
137
+ }
86
138
  }), editor.registerNodeTransform(ToggleContainerNode, (node) => {
87
139
  const children = node.getChildren();
88
140
  if (children.length !== 2 ||
package/dist/texts.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { TFunction } from "i18next";
1
2
  type TranslationMap = {
2
3
  placeholderEnterHere: string;
3
4
  errorFileTooLarge: string;
@@ -9,5 +10,5 @@ type TranslationMap = {
9
10
  errorMaxChoicesExceeded: string;
10
11
  multipleChoicesProblem: string;
11
12
  };
12
- export declare function getTexts<K extends keyof TranslationMap>(key: K): TranslationMap[K];
13
+ export declare function getTexts<K extends keyof TranslationMap>(t: TFunction, key: K): TranslationMap[K];
13
14
  export {};
package/dist/texts.js CHANGED
@@ -1,15 +1,14 @@
1
- import { i18n } from "./i18n/i18n";
2
1
  const TRANSLATION_TEXT = {
3
- placeholderEnterHere: () => i18n.t("여기에 입력하세요."),
4
- errorFileTooLarge: () => i18n.t("용량이 너무 큽니다. 1GB 이하의 파일을 선택해 주세요."),
5
- descriptionDefaultInputText: () => i18n.t("입력 칸에 기본으로 노출되는 텍스트입니다."),
6
- exampleEnterHere: () => i18n.t("예) 여기에 입력하세요."),
7
- placeholderEvaluationItem: () => i18n.t("평가 항목을 입력하세요."),
8
- errorRequiredField: () => i18n.t("필수 입력 항목입니다."),
9
- errorDuplicateChoice: () => (indexes) => i18n.t("{{indexes}}번 선택지가 같은 내용입니다.", { indexes }),
10
- errorMaxChoicesExceeded: () => i18n.t("선택지는 9개까지 등록이 가능합니다."),
11
- multipleChoicesProblem: () => i18n.t("질문에 해당하는 답을 모두 고르는 문제입니다."),
2
+ placeholderEnterHere: (t) => t("여기에 입력하세요."),
3
+ errorFileTooLarge: (t) => t("용량이 너무 큽니다. 1GB 이하의 파일을 선택해 주세요."),
4
+ descriptionDefaultInputText: (t) => t("입력 칸에 기본으로 노출되는 텍스트입니다."),
5
+ exampleEnterHere: (t) => t("예) 여기에 입력하세요."),
6
+ placeholderEvaluationItem: (t) => t("평가 항목을 입력하세요."),
7
+ errorRequiredField: (t) => t("필수 입력 항목입니다."),
8
+ errorDuplicateChoice: (t) => (indexes) => t("{{indexes}}번 선택지가 같은 내용입니다.", { indexes }),
9
+ errorMaxChoicesExceeded: (t) => t("선택지는 9개까지 등록이 가능합니다."),
10
+ multipleChoicesProblem: (t) => t("질문에 해당하는 답을 모두 고르는 문제입니다."),
12
11
  };
13
- export function getTexts(key) {
14
- return TRANSLATION_TEXT[key]();
12
+ export function getTexts(t, key) {
13
+ return TRANSLATION_TEXT[key](t);
15
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@team-monolith/cds",
3
- "version": "1.119.2",
3
+ "version": "1.119.4",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "sideEffects": false,
@@ -19,7 +19,6 @@
19
19
  "i18next-browser-languagedetector": "^8.2.0",
20
20
  "i18next-locize-backend": "^7.0.4",
21
21
  "lexical": "^0.36.1",
22
- "locize": "^4.0.14",
23
22
  "lodash": "^4.17.21",
24
23
  "moment": "^2.30.1",
25
24
  "react": "^18.2.0",