payload-intl 1.1.2 → 1.2.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 (208) hide show
  1. package/README.md +62 -221
  2. package/dist/components/MessageController.d.ts +4 -6
  3. package/dist/components/MessageController.d.ts.map +1 -1
  4. package/dist/components/MessageController.js +25 -41
  5. package/dist/components/MessageController.js.map +1 -1
  6. package/dist/components/MessageFormContext.d.ts +29 -0
  7. package/dist/components/MessageFormContext.d.ts.map +1 -0
  8. package/dist/components/MessageFormContext.js +30 -0
  9. package/dist/components/MessageFormContext.js.map +1 -0
  10. package/dist/components/MessagesForm.d.ts +2 -2
  11. package/dist/components/MessagesForm.d.ts.map +1 -1
  12. package/dist/components/MessagesForm.js +126 -112
  13. package/dist/components/MessagesForm.js.map +1 -1
  14. package/dist/components/MessagesForm.module.css +41 -0
  15. package/dist/{exports/link.d.ts → components/MessagesLink.d.ts} +3 -3
  16. package/dist/components/MessagesLink.d.ts.map +1 -0
  17. package/dist/components/MessagesLink.js +19 -0
  18. package/dist/components/MessagesLink.js.map +1 -0
  19. package/dist/components/MessagesView.d.ts +10 -0
  20. package/dist/components/MessagesView.d.ts.map +1 -0
  21. package/dist/components/MessagesView.js +48 -0
  22. package/dist/components/MessagesView.js.map +1 -0
  23. package/dist/components/actions/JsonImport.d.ts.map +1 -1
  24. package/dist/components/actions/JsonImport.js +68 -61
  25. package/dist/components/actions/JsonImport.js.map +1 -1
  26. package/dist/components/actions/JsonImport.module.css +14 -0
  27. package/dist/components/actions/Move.d.ts.map +1 -1
  28. package/dist/components/actions/Move.js +41 -0
  29. package/dist/components/actions/Move.js.map +1 -0
  30. package/dist/components/actions/Move.module.css +8 -0
  31. package/dist/components/inputs/InputWrapper.d.ts +1 -1
  32. package/dist/components/inputs/InputWrapper.d.ts.map +1 -1
  33. package/dist/components/inputs/InputWrapper.js +31 -29
  34. package/dist/components/inputs/InputWrapper.js.map +1 -1
  35. package/dist/components/inputs/InputWrapper.module.css +34 -0
  36. package/dist/components/inputs/LexicalInput.d.ts +3 -3
  37. package/dist/components/inputs/LexicalInput.js +86 -0
  38. package/dist/components/inputs/LexicalInput.js.map +1 -0
  39. package/dist/components/inputs/MessageInput.d.ts +2 -2
  40. package/dist/components/inputs/MessageInput.d.ts.map +1 -1
  41. package/dist/components/inputs/MessageInput.js +110 -37
  42. package/dist/components/inputs/MessageInput.js.map +1 -1
  43. package/dist/components/inputs/MessageInput.module.css +25 -0
  44. package/dist/components/inputs/variables/VariableChip.d.ts +8 -2
  45. package/dist/components/inputs/variables/VariableChip.d.ts.map +1 -1
  46. package/dist/components/inputs/variables/VariableChip.js +86 -64
  47. package/dist/components/inputs/variables/VariableChip.js.map +1 -1
  48. package/dist/components/inputs/variables/VariableChip.module.css +66 -0
  49. package/dist/components/inputs/variables/VariableIcon.d.ts +1 -1
  50. package/dist/components/inputs/variables/VariableIcon.d.ts.map +1 -1
  51. package/dist/components/inputs/variables/VariableIcon.js +35 -0
  52. package/dist/components/inputs/variables/VariableIcon.js.map +1 -0
  53. package/dist/components/inputs/variables/VariableNode.d.ts +11 -0
  54. package/dist/components/inputs/variables/VariableNode.d.ts.map +1 -0
  55. package/dist/components/inputs/variables/VariableNode.js +36 -0
  56. package/dist/components/inputs/variables/VariableNode.js.map +1 -0
  57. package/dist/components/inputs/variables/VariableSuggestion.module.css +34 -0
  58. package/dist/components/inputs/variables/editors/DateVariableEditor.d.ts +2 -2
  59. package/dist/components/inputs/variables/editors/DateVariableEditor.d.ts.map +1 -1
  60. package/dist/components/inputs/variables/editors/DateVariableEditor.js +15 -0
  61. package/dist/components/inputs/variables/editors/DateVariableEditor.js.map +1 -0
  62. package/dist/components/inputs/variables/editors/PluralVariableEditor.d.ts +1 -1
  63. package/dist/components/inputs/variables/editors/PluralVariableEditor.d.ts.map +1 -1
  64. package/dist/components/inputs/variables/editors/PluralVariableEditor.js +191 -172
  65. package/dist/components/inputs/variables/editors/PluralVariableEditor.js.map +1 -1
  66. package/dist/components/inputs/variables/editors/PluralVariableEditor.module.css +149 -0
  67. package/dist/components/inputs/variables/editors/SelectVariableEditor.d.ts +1 -1
  68. package/dist/components/inputs/variables/editors/SelectVariableEditor.d.ts.map +1 -1
  69. package/dist/components/inputs/variables/editors/SelectVariableEditor.js +58 -52
  70. package/dist/components/inputs/variables/editors/SelectVariableEditor.js.map +1 -1
  71. package/dist/components/inputs/variables/editors/SelectVariableEditor.module.css +25 -0
  72. package/dist/components/inputs/variables/editors/TagVariableEditor.d.ts +1 -1
  73. package/dist/components/inputs/variables/editors/TagVariableEditor.d.ts.map +1 -1
  74. package/dist/components/inputs/variables/editors/TagVariableEditor.js +36 -32
  75. package/dist/components/inputs/variables/editors/TagVariableEditor.js.map +1 -1
  76. package/dist/components/inputs/variables/editors/TagVariableEditor.module.css +7 -0
  77. package/dist/components/inputs/variables/editors/TimeVariableEditor.d.ts +2 -2
  78. package/dist/components/inputs/variables/editors/TimeVariableEditor.d.ts.map +1 -1
  79. package/dist/components/inputs/variables/editors/TimeVariableEditor.js +15 -0
  80. package/dist/components/inputs/variables/editors/TimeVariableEditor.js.map +1 -0
  81. package/dist/components/inputs/variables/pickers/NumericVariablePicker.d.ts +1 -1
  82. package/dist/components/inputs/variables/pickers/NumericVariablePicker.d.ts.map +1 -1
  83. package/dist/components/inputs/variables/pickers/NumericVariablePicker.js +48 -51
  84. package/dist/components/inputs/variables/pickers/NumericVariablePicker.js.map +1 -1
  85. package/dist/components/inputs/variables/pickers/NumericVariablePicker.module.css +27 -0
  86. package/dist/components/inputs/variables/pickers/TemporalElementEditor.d.ts +1 -1
  87. package/dist/components/inputs/variables/pickers/TemporalElementEditor.d.ts.map +1 -1
  88. package/dist/components/inputs/variables/pickers/TemporalElementEditor.js +58 -0
  89. package/dist/components/inputs/variables/pickers/TemporalElementEditor.js.map +1 -0
  90. package/dist/components/inputs/variables/pickers/TemporalElementEditor.module.css +27 -0
  91. package/dist/components/layout/MessageField.d.ts +3 -3
  92. package/dist/components/layout/MessageField.d.ts.map +1 -1
  93. package/dist/components/layout/MessageField.js +56 -56
  94. package/dist/components/layout/MessageField.js.map +1 -1
  95. package/dist/components/layout/MessageField.module.css +19 -0
  96. package/dist/components/layout/MessagesTabs.d.ts +1 -1
  97. package/dist/components/layout/MessagesTabs.d.ts.map +1 -1
  98. package/dist/components/layout/MessagesTabs.js +40 -43
  99. package/dist/components/layout/MessagesTabs.js.map +1 -1
  100. package/dist/components/layout/MessagesTabs.module.css +21 -0
  101. package/dist/components/layout/MessagesTree.d.ts +3 -2
  102. package/dist/components/layout/MessagesTree.d.ts.map +1 -1
  103. package/dist/components/layout/MessagesTree.js +65 -67
  104. package/dist/components/layout/MessagesTree.js.map +1 -1
  105. package/dist/components/layout/MessagesTree.module.css +36 -0
  106. package/dist/const.d.ts +8 -9
  107. package/dist/const.d.ts.map +1 -1
  108. package/dist/const.js +16 -13
  109. package/dist/const.js.map +1 -1
  110. package/dist/endpoints/get-messages.d.ts +1 -1
  111. package/dist/endpoints/get-messages.d.ts.map +1 -1
  112. package/dist/endpoints/get-messages.js +7 -13
  113. package/dist/endpoints/get-messages.js.map +1 -1
  114. package/dist/endpoints/set-messages.d.ts +1 -1
  115. package/dist/endpoints/set-messages.d.ts.map +1 -1
  116. package/dist/endpoints/set-messages.js +61 -45
  117. package/dist/endpoints/set-messages.js.map +1 -1
  118. package/dist/entities.d.ts +5 -0
  119. package/dist/entities.d.ts.map +1 -0
  120. package/dist/entities.js +38 -0
  121. package/dist/entities.js.map +1 -0
  122. package/dist/exports/client.d.ts +2 -0
  123. package/dist/exports/client.d.ts.map +1 -0
  124. package/dist/exports/client.js +3 -0
  125. package/dist/exports/client.js.map +1 -0
  126. package/dist/exports/rsc.d.ts +2 -2
  127. package/dist/exports/rsc.d.ts.map +1 -1
  128. package/dist/exports/rsc.js +4 -7
  129. package/dist/exports/rsc.js.map +1 -1
  130. package/dist/hooks.d.ts +4 -0
  131. package/dist/hooks.d.ts.map +1 -0
  132. package/dist/hooks.js +24 -0
  133. package/dist/hooks.js.map +1 -0
  134. package/dist/index.d.ts +20 -3
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +64 -80
  137. package/dist/index.js.map +1 -1
  138. package/dist/payload-types.d.ts +258 -0
  139. package/dist/payload-types.d.ts.map +1 -0
  140. package/dist/payload-types.js +15 -0
  141. package/dist/payload-types.js.map +1 -0
  142. package/dist/requests/fetchMessageFromAPI.d.ts +10 -0
  143. package/dist/requests/fetchMessageFromAPI.d.ts.map +1 -0
  144. package/dist/requests/fetchMessageFromAPI.js +15 -0
  145. package/dist/requests/fetchMessageFromAPI.js.map +1 -0
  146. package/dist/requests/fetchMessageFromPayload.d.ts +3 -0
  147. package/dist/requests/fetchMessageFromPayload.d.ts.map +1 -0
  148. package/dist/requests/fetchMessageFromPayload.js +29 -0
  149. package/dist/requests/fetchMessageFromPayload.js.map +1 -0
  150. package/dist/requests/fetchMessages.d.ts +3 -11
  151. package/dist/requests/fetchMessages.d.ts.map +1 -1
  152. package/dist/requests/fetchMessages.js +10 -40
  153. package/dist/requests/fetchMessages.js.map +1 -1
  154. package/dist/types.d.ts +7 -23
  155. package/dist/types.d.ts.map +1 -1
  156. package/dist/types.js +3 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/utils/config.d.ts +3 -3
  159. package/dist/utils/config.d.ts.map +1 -1
  160. package/dist/utils/config.js +27 -17
  161. package/dist/utils/config.js.map +1 -1
  162. package/dist/utils/error-handling.js +14 -12
  163. package/dist/utils/error-handling.js.map +1 -1
  164. package/dist/utils/format.d.ts +1 -1
  165. package/dist/utils/format.js +21 -13
  166. package/dist/utils/format.js.map +1 -1
  167. package/dist/utils/guards.d.ts +2 -1
  168. package/dist/utils/guards.js +8 -18
  169. package/dist/utils/guards.js.map +1 -1
  170. package/dist/utils/icu-tranform.d.ts +13 -18
  171. package/dist/utils/icu-tranform.d.ts.map +1 -1
  172. package/dist/utils/icu-tranform.js +140 -108
  173. package/dist/utils/icu-tranform.js.map +1 -1
  174. package/dist/utils/sanitize.d.ts +1 -1
  175. package/dist/utils/sanitize.js +36 -17
  176. package/dist/utils/sanitize.js.map +1 -1
  177. package/dist/utils/schema.d.ts +1 -3
  178. package/dist/utils/schema.d.ts.map +1 -1
  179. package/dist/utils/schema.js +42 -34
  180. package/dist/utils/schema.js.map +1 -1
  181. package/dist/utils/validate.d.ts +2 -2
  182. package/dist/utils/validate.js +52 -53
  183. package/dist/utils/validate.js.map +1 -1
  184. package/package.json +35 -52
  185. package/dist/components/inputs/variables/VariableSuggestion.d.ts +0 -9
  186. package/dist/components/inputs/variables/VariableSuggestion.d.ts.map +0 -1
  187. package/dist/components/inputs/variables/VariableSuggestion.js +0 -41
  188. package/dist/components/inputs/variables/VariableSuggestion.js.map +0 -1
  189. package/dist/components/inputs/variables/extension.d.ts +0 -4
  190. package/dist/components/inputs/variables/extension.d.ts.map +0 -1
  191. package/dist/components/inputs/variables/extension.js +0 -93
  192. package/dist/components/inputs/variables/extension.js.map +0 -1
  193. package/dist/context/messages-form.d.ts +0 -29
  194. package/dist/context/messages-form.d.ts.map +0 -1
  195. package/dist/context/messages-form.js +0 -26
  196. package/dist/context/messages-form.js.map +0 -1
  197. package/dist/exports/link.d.ts.map +0 -1
  198. package/dist/exports/link.js +0 -21
  199. package/dist/exports/link.js.map +0 -1
  200. package/dist/exports/view.d.ts +0 -10
  201. package/dist/exports/view.d.ts.map +0 -1
  202. package/dist/exports/view.js +0 -53
  203. package/dist/exports/view.js.map +0 -1
  204. package/dist/styles.css +0 -1
  205. package/dist/utils/cn.d.ts +0 -3
  206. package/dist/utils/cn.d.ts.map +0 -1
  207. package/dist/utils/cn.js +0 -9
  208. package/dist/utils/cn.js.map +0 -1
@@ -1,13 +1,15 @@
1
- import { z as t } from "zod/v4-mini";
2
- async function o(s) {
3
- try {
4
- const e = await s.json(), r = t.object({ message: t.string() }).safeParse(e);
5
- return r.success ? r.data.message : `${s.status} Error`;
6
- } catch {
7
- return "Unknown error";
8
- }
1
+ import { z } from 'zod/v4-mini';
2
+ export async function getErrorMessage(response) {
3
+ try {
4
+ const json = await response.json();
5
+ const schema = z.object({
6
+ message: z.string()
7
+ });
8
+ const result = schema.safeParse(json);
9
+ return result.success ? result.data.message : `${response.status} Error`;
10
+ } catch {
11
+ return 'Unknown error';
12
+ }
9
13
  }
10
- export {
11
- o as getErrorMessage
12
- };
13
- //# sourceMappingURL=error-handling.js.map
14
+
15
+ //# sourceMappingURL=error-handling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-handling.js","sources":["../../src/utils/error-handling.ts"],"sourcesContent":["import { z } from 'zod/v4-mini';\n\nexport async function getErrorMessage(response: Response) {\n try {\n const json = await response.json();\n const schema = z.object({ message: z.string() });\n const result = schema.safeParse(json);\n\n return result.success ? result.data.message : `${response.status} Error`;\n } catch {\n return 'Unknown error';\n }\n}\n"],"names":["getErrorMessage","response","json","result","z"],"mappings":";AAEA,eAAsBA,EAAgBC,GAAoB;AACxD,MAAI;AACF,UAAMC,IAAO,MAAMD,EAAS,KAAA,GAEtBE,IADSC,EAAE,OAAO,EAAE,SAASA,EAAE,OAAA,GAAU,EACzB,UAAUF,CAAI;AAEpC,WAAOC,EAAO,UAAUA,EAAO,KAAK,UAAU,GAAGF,EAAS,MAAM;AAAA,EAClE,QAAQ;AACN,WAAO;AAAA,EACT;AACF;"}
1
+ {"version":3,"sources":["../../src/utils/error-handling.ts"],"sourcesContent":["import { z } from 'zod/v4-mini';\n\nexport async function getErrorMessage(response: Response) {\n try {\n const json = await response.json();\n const schema = z.object({ message: z.string() });\n const result = schema.safeParse(json);\n\n return result.success ? result.data.message : `${response.status} Error`;\n } catch {\n return 'Unknown error';\n }\n}\n"],"names":["z","getErrorMessage","response","json","schema","object","message","string","result","safeParse","success","data","status"],"mappings":"AAAA,SAASA,CAAC,QAAQ,cAAc;AAEhC,OAAO,eAAeC,gBAAgBC,QAAkB;IACtD,IAAI;QACF,MAAMC,OAAO,MAAMD,SAASC,IAAI;QAChC,MAAMC,SAASJ,EAAEK,MAAM,CAAC;YAAEC,SAASN,EAAEO,MAAM;QAAG;QAC9C,MAAMC,SAASJ,OAAOK,SAAS,CAACN;QAEhC,OAAOK,OAAOE,OAAO,GAAGF,OAAOG,IAAI,CAACL,OAAO,GAAG,GAAGJ,SAASU,MAAM,CAAC,MAAM,CAAC;IAC1E,EAAE,OAAM;QACN,OAAO;IACT;AACF"}
@@ -1,4 +1,4 @@
1
- import { TemplateVariable } from '../types';
1
+ import type { TemplateVariable } from '../types';
2
2
  export declare const toWords: (inputString: string, joinWords?: boolean) => string;
3
3
  export declare const formatVariableLabel: (variable: TemplateVariable) => string;
4
4
  //# sourceMappingURL=format.d.ts.map
@@ -1,15 +1,23 @@
1
- import { isTagElement as l } from "@formatjs/icu-messageformat-parser";
2
- const m = (t, o = !1) => {
3
- const i = (r) => r.charAt(0).toUpperCase() + r.slice(1), n = (t || "").trim().split(/[\s-]/), s = [];
4
- return n.forEach((r) => {
5
- if (r !== "") {
6
- const e = r.split(/(?=[A-Z])/).join(" ");
7
- s.push(i(e));
1
+ import { isTagElement } from './guards';
2
+ export const toWords = (inputString, joinWords = false)=>{
3
+ const capitalizeFirstLetter = (string)=>string.charAt(0).toUpperCase() + string.slice(1);
4
+ const notNullString = inputString || '';
5
+ const trimmedString = notNullString.trim();
6
+ const arrayOfStrings = trimmedString.split(/[\s-]/);
7
+ const splitStringsArray = [];
8
+ arrayOfStrings.forEach((tempString)=>{
9
+ if (tempString !== '') {
10
+ const splitWords = tempString.split(/(?=[A-Z])/).join(' ');
11
+ splitStringsArray.push(capitalizeFirstLetter(splitWords));
12
+ }
13
+ });
14
+ return joinWords ? splitStringsArray.join('').replace(/\s/g, '') : splitStringsArray.join(' ');
15
+ };
16
+ export const formatVariableLabel = (variable)=>{
17
+ if (isTagElement(variable)) {
18
+ return `<${variable.value}/>`;
8
19
  }
9
- }), o ? s.join("").replace(/\s/g, "") : s.join(" ");
10
- }, u = (t) => l(t) ? `<${t.value}/>` : t.value;
11
- export {
12
- u as formatVariableLabel,
13
- m as toWords
20
+ return variable.value;
14
21
  };
15
- //# sourceMappingURL=format.js.map
22
+
23
+ //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sources":["../../src/utils/format.ts"],"sourcesContent":["import type { TemplateVariable } from '@/types';\n\nimport { isTagElement } from './guards';\n\nexport const toWords = (inputString: string, joinWords = false): string => {\n const capitalizeFirstLetter = (string: string): string =>\n string.charAt(0).toUpperCase() + string.slice(1);\n const notNullString = inputString || '';\n const trimmedString = notNullString.trim();\n const arrayOfStrings = trimmedString.split(/[\\s-]/);\n\n const splitStringsArray: string[] = [];\n arrayOfStrings.forEach((tempString) => {\n if (tempString !== '') {\n const splitWords = tempString.split(/(?=[A-Z])/).join(' ');\n splitStringsArray.push(capitalizeFirstLetter(splitWords));\n }\n });\n\n return joinWords\n ? splitStringsArray.join('').replace(/\\s/g, '')\n : splitStringsArray.join(' ');\n};\n\nexport const formatVariableLabel = (variable: TemplateVariable) => {\n if (isTagElement(variable)) {\n return `<${variable.value}/>`;\n }\n return variable.value;\n};\n"],"names":["toWords","inputString","joinWords","capitalizeFirstLetter","string","arrayOfStrings","splitStringsArray","tempString","splitWords","formatVariableLabel","variable","isTagElement"],"mappings":";AAIO,MAAMA,IAAU,CAACC,GAAqBC,IAAY,OAAkB;AACzE,QAAMC,IAAwB,CAACC,MAC7BA,EAAO,OAAO,CAAC,EAAE,YAAA,IAAgBA,EAAO,MAAM,CAAC,GAG3CC,KAFgBJ,KAAe,IACD,KAAA,EACC,MAAM,OAAO,GAE5CK,IAA8B,CAAA;AACpC,SAAAD,EAAe,QAAQ,CAACE,MAAe;AACrC,QAAIA,MAAe,IAAI;AACrB,YAAMC,IAAaD,EAAW,MAAM,WAAW,EAAE,KAAK,GAAG;AACzD,MAAAD,EAAkB,KAAKH,EAAsBK,CAAU,CAAC;AAAA,IAC1D;AAAA,EACF,CAAC,GAEMN,IACHI,EAAkB,KAAK,EAAE,EAAE,QAAQ,OAAO,EAAE,IAC5CA,EAAkB,KAAK,GAAG;AAChC,GAEaG,IAAsB,CAACC,MAC9BC,EAAaD,CAAQ,IAChB,IAAIA,EAAS,KAAK,OAEpBA,EAAS;"}
1
+ {"version":3,"sources":["../../src/utils/format.ts"],"sourcesContent":["import type { TemplateVariable } from '@/types';\n\nimport { isTagElement } from './guards';\n\nexport const toWords = (inputString: string, joinWords = false): string => {\n const capitalizeFirstLetter = (string: string): string =>\n string.charAt(0).toUpperCase() + string.slice(1);\n const notNullString = inputString || '';\n const trimmedString = notNullString.trim();\n const arrayOfStrings = trimmedString.split(/[\\s-]/);\n\n const splitStringsArray: string[] = [];\n arrayOfStrings.forEach((tempString) => {\n if (tempString !== '') {\n const splitWords = tempString.split(/(?=[A-Z])/).join(' ');\n splitStringsArray.push(capitalizeFirstLetter(splitWords));\n }\n });\n\n return joinWords\n ? splitStringsArray.join('').replace(/\\s/g, '')\n : splitStringsArray.join(' ');\n};\n\nexport const formatVariableLabel = (variable: TemplateVariable) => {\n if (isTagElement(variable)) {\n return `<${variable.value}/>`;\n }\n return variable.value;\n};\n"],"names":["isTagElement","toWords","inputString","joinWords","capitalizeFirstLetter","string","charAt","toUpperCase","slice","notNullString","trimmedString","trim","arrayOfStrings","split","splitStringsArray","forEach","tempString","splitWords","join","push","replace","formatVariableLabel","variable","value"],"mappings":"AAEA,SAASA,YAAY,QAAQ,WAAW;AAExC,OAAO,MAAMC,UAAU,CAACC,aAAqBC,YAAY,KAAK;IAC5D,MAAMC,wBAAwB,CAACC,SAC7BA,OAAOC,MAAM,CAAC,GAAGC,WAAW,KAAKF,OAAOG,KAAK,CAAC;IAChD,MAAMC,gBAAgBP,eAAe;IACrC,MAAMQ,gBAAgBD,cAAcE,IAAI;IACxC,MAAMC,iBAAiBF,cAAcG,KAAK,CAAC;IAE3C,MAAMC,oBAA8B,EAAE;IACtCF,eAAeG,OAAO,CAAC,CAACC;QACtB,IAAIA,eAAe,IAAI;YACrB,MAAMC,aAAaD,WAAWH,KAAK,CAAC,aAAaK,IAAI,CAAC;YACtDJ,kBAAkBK,IAAI,CAACf,sBAAsBa;QAC/C;IACF;IAEA,OAAOd,YACHW,kBAAkBI,IAAI,CAAC,IAAIE,OAAO,CAAC,OAAO,MAC1CN,kBAAkBI,IAAI,CAAC;AAC7B,EAAE;AAEF,OAAO,MAAMG,sBAAsB,CAACC;IAClC,IAAItB,aAAasB,WAAW;QAC1B,OAAO,CAAC,CAAC,EAAEA,SAASC,KAAK,CAAC,EAAE,CAAC;IAC/B;IACA,OAAOD,SAASC,KAAK;AACvB,EAAE"}
@@ -1,4 +1,5 @@
1
- import { DateElement, MessageFormatElement, NumberElement, PluralElement, TimeElement, isArgumentElement, isDateElement, isLiteralElement, isNumberElement, isPluralElement, isSelectElement, isTagElement, isTimeElement } from '@formatjs/icu-messageformat-parser';
1
+ import type { DateElement, MessageFormatElement, NumberElement, PluralElement, TimeElement } from '@formatjs/icu-messageformat-parser';
2
+ import { isArgumentElement, isDateElement, isLiteralElement, isNumberElement, isPluralElement, isSelectElement, isTagElement, isTimeElement } from '@formatjs/icu-messageformat-parser';
2
3
  export declare const isNumericElement: (element: MessageFormatElement) => element is NumberElement | PluralElement;
3
4
  export declare const isTemporalElement: (element: MessageFormatElement) => element is DateElement | TimeElement;
4
5
  export { isLiteralElement, isArgumentElement, isNumberElement, isSelectElement, isPluralElement, isDateElement, isTimeElement, isTagElement, };
@@ -1,19 +1,9 @@
1
- import { isNumberElement as t, isPluralElement as m, isDateElement as i, isTimeElement as l } from "@formatjs/icu-messageformat-parser";
2
- import { isArgumentElement as c, isDateElement as u, isLiteralElement as h, isNumberElement as p, isPluralElement as w, isSelectElement as T, isTagElement as g, isTimeElement as N } from "@formatjs/icu-messageformat-parser";
3
- const s = (e) => t(e) || m(e), r = (e) => i(e) || l(e), E = (e) => {
4
- throw new Error(`Unhandled switch case: ${e}`);
1
+ import { isArgumentElement, isDateElement, isLiteralElement, isNumberElement, isPluralElement, isSelectElement, isTagElement, isTimeElement } from '@formatjs/icu-messageformat-parser';
2
+ export const isNumericElement = (element)=>isNumberElement(element) || isPluralElement(element);
3
+ export const isTemporalElement = (element)=>isDateElement(element) || isTimeElement(element);
4
+ export { isLiteralElement, isArgumentElement, isNumberElement, isSelectElement, isPluralElement, isDateElement, isTimeElement, isTagElement };
5
+ export const uncaughtSwitchCase = (value)=>{
6
+ throw new Error(`Unhandled switch case: ${value}`);
5
7
  };
6
- export {
7
- c as isArgumentElement,
8
- u as isDateElement,
9
- h as isLiteralElement,
10
- p as isNumberElement,
11
- s as isNumericElement,
12
- w as isPluralElement,
13
- T as isSelectElement,
14
- g as isTagElement,
15
- r as isTemporalElement,
16
- N as isTimeElement,
17
- E as uncaughtSwitchCase
18
- };
19
- //# sourceMappingURL=guards.js.map
8
+
9
+ //# sourceMappingURL=guards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"guards.js","sources":["../../src/utils/guards.ts"],"sourcesContent":["import type {\n DateElement,\n MessageFormatElement,\n NumberElement,\n PluralElement,\n TimeElement,\n} from '@formatjs/icu-messageformat-parser';\nimport {\n isArgumentElement,\n isDateElement,\n isLiteralElement,\n isNumberElement,\n isPluralElement,\n isSelectElement,\n isTagElement,\n isTimeElement,\n} from '@formatjs/icu-messageformat-parser';\n\nexport const isNumericElement = (\n element: MessageFormatElement,\n): element is NumberElement | PluralElement =>\n isNumberElement(element) || isPluralElement(element);\n\nexport const isTemporalElement = (\n element: MessageFormatElement,\n): element is DateElement | TimeElement =>\n isDateElement(element) || isTimeElement(element);\n\nexport {\n isLiteralElement,\n isArgumentElement,\n isNumberElement,\n isSelectElement,\n isPluralElement,\n isDateElement,\n isTimeElement,\n isTagElement,\n};\n\nexport const uncaughtSwitchCase = (value: never) => {\n throw new Error(`Unhandled switch case: ${value}`);\n};\n"],"names":["isNumericElement","element","isNumberElement","isPluralElement","isTemporalElement","isDateElement","isTimeElement","uncaughtSwitchCase","value"],"mappings":";;AAkBO,MAAMA,IAAmB,CAC9BC,MAEAC,EAAgBD,CAAO,KAAKE,EAAgBF,CAAO,GAExCG,IAAoB,CAC/BH,MAEAI,EAAcJ,CAAO,KAAKK,EAAcL,CAAO,GAapCM,IAAqB,CAACC,MAAiB;AAClD,QAAM,IAAI,MAAM,0BAA0BA,CAAK,EAAE;AACnD;"}
1
+ {"version":3,"sources":["../../src/utils/guards.ts"],"sourcesContent":["import type {\n DateElement,\n MessageFormatElement,\n NumberElement,\n PluralElement,\n TimeElement,\n} from '@formatjs/icu-messageformat-parser';\nimport {\n isArgumentElement,\n isDateElement,\n isLiteralElement,\n isNumberElement,\n isPluralElement,\n isSelectElement,\n isTagElement,\n isTimeElement,\n} from '@formatjs/icu-messageformat-parser';\n\nexport const isNumericElement = (\n element: MessageFormatElement,\n): element is NumberElement | PluralElement =>\n isNumberElement(element) || isPluralElement(element);\n\nexport const isTemporalElement = (\n element: MessageFormatElement,\n): element is DateElement | TimeElement =>\n isDateElement(element) || isTimeElement(element);\n\nexport {\n isLiteralElement,\n isArgumentElement,\n isNumberElement,\n isSelectElement,\n isPluralElement,\n isDateElement,\n isTimeElement,\n isTagElement,\n};\n\nexport const uncaughtSwitchCase = (value: never) => {\n throw new Error(`Unhandled switch case: ${value}`);\n};\n"],"names":["isArgumentElement","isDateElement","isLiteralElement","isNumberElement","isPluralElement","isSelectElement","isTagElement","isTimeElement","isNumericElement","element","isTemporalElement","uncaughtSwitchCase","value","Error"],"mappings":"AAOA,SACEA,iBAAiB,EACjBC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,aAAa,QACR,qCAAqC;AAE5C,OAAO,MAAMC,mBAAmB,CAC9BC,UAEAN,gBAAgBM,YAAYL,gBAAgBK,SAAS;AAEvD,OAAO,MAAMC,oBAAoB,CAC/BD,UAEAR,cAAcQ,YAAYF,cAAcE,SAAS;AAEnD,SACEP,gBAAgB,EAChBF,iBAAiB,EACjBG,eAAe,EACfE,eAAe,EACfD,eAAe,EACfH,aAAa,EACbM,aAAa,EACbD,YAAY,GACZ;AAEF,OAAO,MAAMK,qBAAqB,CAACC;IACjC,MAAM,IAAIC,MAAM,CAAC,uBAAuB,EAAED,OAAO;AACnD,EAAE"}
@@ -1,5 +1,5 @@
1
- import { MessageFormatElement } from '@formatjs/icu-messageformat-parser';
2
- import { VariableMentionNodeAttrs } from '../types';
1
+ import type { MessageFormatElement } from '@formatjs/icu-messageformat-parser';
2
+ import type { SerializedParagraphNode } from '@payloadcms/richtext-lexical/lexical';
3
3
  /**
4
4
  * Parse an ICU message string into a AST array
5
5
  */
@@ -8,24 +8,19 @@ export declare const parseICUMessage: (message: string) => MessageFormatElement[
8
8
  * Serialize an ICU message AST array into a ICU message string
9
9
  */
10
10
  export declare const serializeICUMessage: (elements: MessageFormatElement[]) => string;
11
- type TextContent = {
12
- type: 'text';
13
- text: string;
14
- };
15
- type VariableContent = {
16
- type: 'variable';
17
- attrs: VariableMentionNodeAttrs;
18
- };
19
- type ProseMirrorJSONRepresentation = {
20
- type: 'doc';
21
- content: {
22
- type: 'paragraph';
23
- content: (TextContent | VariableContent)[];
24
- }[];
11
+ type SerializedICUEditorState = {
12
+ root: {
13
+ type: 'root';
14
+ version: 1;
15
+ direction: null;
16
+ format: '';
17
+ indent: 0;
18
+ children: [SerializedParagraphNode];
19
+ };
25
20
  };
26
21
  /**
27
- * Parse an ICU message string into a ProseMirror JSON representation
22
+ * Parse an ICU message string into a Lexical serialized editor state
28
23
  */
29
- export declare const parseIcuToProseMirrorJSON: (icuMessage: string) => ProseMirrorJSONRepresentation;
24
+ export declare const parseIcuToLexicalState: (icuMessage: string) => SerializedICUEditorState;
30
25
  export {};
31
26
  //# sourceMappingURL=icu-tranform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icu-tranform.d.ts","sourceRoot":"","sources":["../../src/utils/icu-tranform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAKxD;;GAEG;AACH,eAAO,MAAM,eAAe,YAAa,MAAM,KAAG,oBAAoB,EACtD,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,mBAAmB,aAAc,oBAAoB,EAAE,KAAG,MA8C1D,CAAC;AAkBd,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,wBAAwB,CAAC;CACjC,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE;QACP,IAAI,EAAE,WAAW,CAAC;QAClB,OAAO,EAAE,CAAC,WAAW,GAAG,eAAe,CAAC,EAAE,CAAC;KAC5C,EAAE,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,eACxB,MAAM,KACjB,6BAoEF,CAAC"}
1
+ {"version":3,"file":"icu-tranform.d.ts","sourceRoot":"","sources":["../../src/utils/icu-tranform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,OAAO,KAAK,EAEV,uBAAuB,EAExB,MAAM,sCAAsC,CAAC;AAK9C;;GAEG;AACH,eAAO,MAAM,eAAe,YAAa,MAAM,KAAG,oBAAoB,EACtD,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,mBAAmB,aAAc,oBAAoB,EAAE,KAAG,MA8C1D,CAAC;AA4Cd,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,CAAC;QACX,SAAS,EAAE,IAAI,CAAC;QAChB,MAAM,EAAE,EAAE,CAAC;QACX,MAAM,EAAE,CAAC,CAAC;QACV,QAAQ,EAAE,CAAC,uBAAuB,CAAC,CAAC;KACrC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,eACrB,MAAM,KACjB,wBAwEF,CAAC"}
@@ -1,115 +1,147 @@
1
- import { TYPE as r, parse as i } from "@formatjs/icu-messageformat-parser";
2
- import { formatVariableLabel as p } from "./format.js";
3
- import { uncaughtSwitchCase as o } from "./guards.js";
4
- const l = (e) => i(e), c = (e) => e.map((t) => {
5
- switch (t.type) {
6
- case r.literal:
7
- return t.value;
8
- case r.argument:
9
- return u(t.value);
10
- case r.number:
11
- return u(t.value, "number");
12
- case r.select:
13
- return u(
14
- t.value,
15
- "select",
16
- Object.entries(t.options).map(
17
- ([s, a]) => `${s} {${a.value.length > 0 ? c(a.value) : s}}`
18
- )
19
- );
20
- case r.plural:
21
- return u(t.value, "plural", [
22
- t.offset < 0 && `offset:${t.offset}`,
23
- ...Object.entries(t.options).map(
24
- ([s, a]) => `${s} {${a.value.length > 0 ? c(a.value) : s}}`
25
- )
26
- ]);
27
- case r.tag:
28
- return `<${t.value}>${c(t.children)}</${t.value}>`;
29
- case r.date:
30
- return u(t.value, "date");
31
- case r.time:
32
- return u(t.value, "time");
33
- case r.pound:
34
- return "#";
35
- default:
36
- return o(t);
37
- }
38
- }).join(""), u = (e, t, s = []) => {
39
- if (t === void 0) return `{${e}}`;
40
- const a = s.filter(
41
- (n) => typeof n == "string" && n.length > 0
42
- );
43
- return a.length === 0 ? `{${e}, ${t}}` : `{${e}, ${t}, ${a.join(" ")}}`;
44
- }, $ = (e) => {
45
- try {
1
+ import { parse, TYPE } from '@formatjs/icu-messageformat-parser';
2
+ import { formatVariableLabel } from './format';
3
+ import { uncaughtSwitchCase } from './guards';
4
+ /**
5
+ * Parse an ICU message string into a AST array
6
+ */ export const parseICUMessage = (message)=>parse(message);
7
+ /**
8
+ * Serialize an ICU message AST array into a ICU message string
9
+ */ export const serializeICUMessage = (elements)=>elements.map((element)=>{
10
+ switch(element.type){
11
+ case TYPE.literal:
12
+ return element.value;
13
+ case TYPE.argument:
14
+ return stringifyElement(element.value);
15
+ case TYPE.number:
16
+ // TODO serialize element.style
17
+ return stringifyElement(element.value, 'number');
18
+ case TYPE.select:
19
+ return stringifyElement(element.value, 'select', Object.entries(element.options).map(([key, option])=>`${key} {${option.value.length > 0 ? serializeICUMessage(option.value) : key}}`));
20
+ case TYPE.plural:
21
+ return stringifyElement(element.value, 'plural', [
22
+ element.offset < 0 && `offset:${element.offset}`,
23
+ ...Object.entries(element.options).map(([key, option])=>`${key} {${option.value.length > 0 ? serializeICUMessage(option.value) : key}}`)
24
+ ]);
25
+ case TYPE.tag:
26
+ return `<${element.value}>${serializeICUMessage(element.children)}</${element.value}>`;
27
+ case TYPE.date:
28
+ // TODO serialize element.style
29
+ return stringifyElement(element.value, 'date');
30
+ case TYPE.time:
31
+ // TODO serialize element.style
32
+ return stringifyElement(element.value, 'time');
33
+ case TYPE.pound:
34
+ return '#';
35
+ default:
36
+ return uncaughtSwitchCase(element);
37
+ }
38
+ }).join('');
39
+ const stringifyElement = (name, type, options = [])=>{
40
+ if (type === undefined) return `{${name}}`;
41
+ const filteredOptions = options.filter((option)=>typeof option === 'string' && option.length > 0);
42
+ if (filteredOptions.length === 0) return `{${name}, ${type}}`;
43
+ return `{${name}, ${type}, ${filteredOptions.join(' ')}}`;
44
+ };
45
+ function serializeTextNode(text) {
46
46
  return {
47
- type: "doc",
48
- content: [
49
- {
50
- type: "paragraph",
51
- content: l(e).flatMap(
52
- (a) => {
53
- switch (a.type) {
54
- case r.literal:
55
- return [
56
- {
57
- type: "text",
58
- text: a.value
59
- }
60
- ];
61
- case r.pound:
62
- return [
47
+ type: 'text',
48
+ version: 1,
49
+ text,
50
+ detail: 0,
51
+ format: 0,
52
+ mode: 'normal',
53
+ style: ''
54
+ };
55
+ }
56
+ function serializeMentionNode(name, label, icu) {
57
+ return {
58
+ type: 'variableMention',
59
+ version: 1,
60
+ trigger: '@',
61
+ value: name,
62
+ data: {
63
+ label,
64
+ icu
65
+ }
66
+ };
67
+ }
68
+ /**
69
+ * Parse an ICU message string into a Lexical serialized editor state
70
+ */ export const parseIcuToLexicalState = (icuMessage)=>{
71
+ try {
72
+ const elements = parseICUMessage(icuMessage);
73
+ const children = elements.flatMap((element)=>{
74
+ switch(element.type){
75
+ case TYPE.literal:
76
+ return [
77
+ serializeTextNode(element.value)
78
+ ];
79
+ case TYPE.pound:
80
+ return [
81
+ serializeTextNode('#')
82
+ ];
83
+ case TYPE.argument:
84
+ case TYPE.number:
85
+ case TYPE.date:
86
+ case TYPE.time:
87
+ case TYPE.select:
88
+ case TYPE.plural:
89
+ case TYPE.tag:
90
+ return [
91
+ serializeMentionNode(element.value, formatVariableLabel(element), serializeICUMessage([
92
+ element
93
+ ]))
94
+ ];
95
+ default:
96
+ return uncaughtSwitchCase(element);
97
+ }
98
+ });
99
+ return {
100
+ root: {
101
+ type: 'root',
102
+ version: 1,
103
+ direction: null,
104
+ format: '',
105
+ indent: 0,
106
+ children: [
63
107
  {
64
- type: "text",
65
- text: "#"
108
+ type: 'paragraph',
109
+ version: 1,
110
+ direction: null,
111
+ format: '',
112
+ indent: 0,
113
+ textFormat: 0,
114
+ textStyle: '',
115
+ children
66
116
  }
67
- ];
68
- case r.argument:
69
- case r.number:
70
- case r.date:
71
- case r.time:
72
- case r.select:
73
- case r.plural:
74
- case r.tag:
75
- return [
117
+ ]
118
+ }
119
+ };
120
+ } catch {
121
+ return {
122
+ root: {
123
+ type: 'root',
124
+ version: 1,
125
+ direction: null,
126
+ format: '',
127
+ indent: 0,
128
+ children: [
76
129
  {
77
- type: "variable",
78
- attrs: {
79
- name: a.value,
80
- label: p(a),
81
- icu: c([a])
82
- }
130
+ type: 'paragraph',
131
+ version: 1,
132
+ direction: null,
133
+ format: '',
134
+ indent: 0,
135
+ textFormat: 0,
136
+ textStyle: '',
137
+ children: [
138
+ serializeTextNode(icuMessage)
139
+ ]
83
140
  }
84
- ];
85
- default:
86
- return o(a);
87
- }
141
+ ]
88
142
  }
89
- )
90
- }
91
- ]
92
- };
93
- } catch {
94
- return {
95
- type: "doc",
96
- content: [
97
- {
98
- type: "paragraph",
99
- content: [
100
- {
101
- type: "text",
102
- text: e
103
- }
104
- ]
105
- }
106
- ]
107
- };
108
- }
109
- };
110
- export {
111
- l as parseICUMessage,
112
- $ as parseIcuToProseMirrorJSON,
113
- c as serializeICUMessage
143
+ };
144
+ }
114
145
  };
115
- //# sourceMappingURL=icu-tranform.js.map
146
+
147
+ //# sourceMappingURL=icu-tranform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icu-tranform.js","sources":["../../src/utils/icu-tranform.ts"],"sourcesContent":["import type { MessageFormatElement } from '@formatjs/icu-messageformat-parser';\nimport { parse, TYPE } from '@formatjs/icu-messageformat-parser';\nimport type { VariableMentionNodeAttrs } from '@/types';\n\nimport { formatVariableLabel } from './format';\nimport { uncaughtSwitchCase } from './guards';\n\n/**\n * Parse an ICU message string into a AST array\n */\nexport const parseICUMessage = (message: string): MessageFormatElement[] =>\n parse(message);\n\n/**\n * Serialize an ICU message AST array into a ICU message string\n */\nexport const serializeICUMessage = (elements: MessageFormatElement[]): string =>\n elements\n .map((element) => {\n switch (element.type) {\n case TYPE.literal:\n return element.value;\n case TYPE.argument:\n return stringifyElement(element.value);\n case TYPE.number:\n // TODO serialize element.style\n return stringifyElement(element.value, 'number');\n case TYPE.select:\n return stringifyElement(\n element.value,\n 'select',\n Object.entries(element.options).map(\n ([key, option]) =>\n `${key} {${option.value.length > 0 ? serializeICUMessage(option.value) : key}}`,\n ),\n );\n case TYPE.plural:\n return stringifyElement(element.value, 'plural', [\n element.offset < 0 && `offset:${element.offset}`,\n ...Object.entries(element.options).map(\n ([key, option]) =>\n `${key} {${\n option.value.length > 0\n ? serializeICUMessage(option.value)\n : key\n }}`,\n ),\n ]);\n case TYPE.tag:\n return `<${element.value}>${serializeICUMessage(element.children)}</${element.value}>`;\n case TYPE.date:\n // TODO serialize element.style\n return stringifyElement(element.value, 'date');\n case TYPE.time:\n // TODO serialize element.style\n return stringifyElement(element.value, 'time');\n case TYPE.pound:\n return '#';\n default:\n return uncaughtSwitchCase(element);\n }\n })\n .join('');\n\nconst stringifyElement = (\n name: string,\n type?: string,\n options: (string | boolean)[] = [],\n) => {\n if (type === undefined) return `{${name}}`;\n\n const filteredOptions = options.filter(\n (option): option is string =>\n typeof option === 'string' && option.length > 0,\n );\n if (filteredOptions.length === 0) return `{${name}, ${type}}`;\n\n return `{${name}, ${type}, ${filteredOptions.join(' ')}}`;\n};\n\ntype TextContent = {\n type: 'text';\n text: string;\n};\n\ntype VariableContent = {\n type: 'variable';\n attrs: VariableMentionNodeAttrs;\n};\n\ntype ProseMirrorJSONRepresentation = {\n type: 'doc';\n content: {\n type: 'paragraph';\n content: (TextContent | VariableContent)[];\n }[];\n};\n\n/**\n * Parse an ICU message string into a ProseMirror JSON representation\n */\nexport const parseIcuToProseMirrorJSON = (\n icuMessage: string,\n): ProseMirrorJSONRepresentation => {\n try {\n const elements = parseICUMessage(icuMessage);\n const content = elements.flatMap<TextContent | VariableContent>(\n (element) => {\n switch (element.type) {\n case TYPE.literal:\n return [\n {\n type: 'text',\n text: element.value,\n },\n ];\n case TYPE.pound:\n return [\n {\n type: 'text',\n text: '#',\n },\n ];\n case TYPE.argument:\n case TYPE.number:\n case TYPE.date:\n case TYPE.time:\n case TYPE.select:\n case TYPE.plural:\n case TYPE.tag:\n return [\n {\n type: 'variable',\n attrs: {\n name: element.value,\n label: formatVariableLabel(element),\n icu: serializeICUMessage([element]),\n },\n },\n ];\n default:\n return uncaughtSwitchCase(element);\n }\n },\n );\n\n return {\n type: 'doc',\n content: [\n {\n type: 'paragraph',\n content,\n },\n ],\n };\n } catch (error) {\n return {\n type: 'doc',\n content: [\n {\n type: 'paragraph',\n content: [\n {\n type: 'text',\n text: icuMessage,\n },\n ],\n },\n ],\n };\n }\n};\n"],"names":["parseICUMessage","message","parse","serializeICUMessage","elements","element","TYPE","stringifyElement","key","option","uncaughtSwitchCase","name","type","options","filteredOptions","parseIcuToProseMirrorJSON","icuMessage","formatVariableLabel"],"mappings":";;;AAUO,MAAMA,IAAkB,CAACC,MAC9BC,EAAMD,CAAO,GAKFE,IAAsB,CAACC,MAClCA,EACG,IAAI,CAACC,MAAY;AAChB,UAAQA,EAAQ,MAAA;AAAA,IACd,KAAKC,EAAK;AACR,aAAOD,EAAQ;AAAA,IACjB,KAAKC,EAAK;AACR,aAAOC,EAAiBF,EAAQ,KAAK;AAAA,IACvC,KAAKC,EAAK;AAER,aAAOC,EAAiBF,EAAQ,OAAO,QAAQ;AAAA,IACjD,KAAKC,EAAK;AACR,aAAOC;AAAA,QACLF,EAAQ;AAAA,QACR;AAAA,QACA,OAAO,QAAQA,EAAQ,OAAO,EAAE;AAAA,UAC9B,CAAC,CAACG,GAAKC,CAAM,MACX,GAAGD,CAAG,KAAKC,EAAO,MAAM,SAAS,IAAIN,EAAoBM,EAAO,KAAK,IAAID,CAAG;AAAA,QAAA;AAAA,MAChF;AAAA,IAEJ,KAAKF,EAAK;AACR,aAAOC,EAAiBF,EAAQ,OAAO,UAAU;AAAA,QAC/CA,EAAQ,SAAS,KAAK,UAAUA,EAAQ,MAAM;AAAA,QAC9C,GAAG,OAAO,QAAQA,EAAQ,OAAO,EAAE;AAAA,UACjC,CAAC,CAACG,GAAKC,CAAM,MACX,GAAGD,CAAG,KACJC,EAAO,MAAM,SAAS,IAClBN,EAAoBM,EAAO,KAAK,IAChCD,CACN;AAAA,QAAA;AAAA,MACJ,CACD;AAAA,IACH,KAAKF,EAAK;AACR,aAAO,IAAID,EAAQ,KAAK,IAAIF,EAAoBE,EAAQ,QAAQ,CAAC,KAAKA,EAAQ,KAAK;AAAA,IACrF,KAAKC,EAAK;AAER,aAAOC,EAAiBF,EAAQ,OAAO,MAAM;AAAA,IAC/C,KAAKC,EAAK;AAER,aAAOC,EAAiBF,EAAQ,OAAO,MAAM;AAAA,IAC/C,KAAKC,EAAK;AACR,aAAO;AAAA,IACT;AACE,aAAOI,EAAmBL,CAAO;AAAA,EAAA;AAEvC,CAAC,EACA,KAAK,EAAE,GAENE,IAAmB,CACvBI,GACAC,GACAC,IAAgC,CAAA,MAC7B;AACH,MAAID,MAAS,OAAW,QAAO,IAAID,CAAI;AAEvC,QAAMG,IAAkBD,EAAQ;AAAA,IAC9B,CAACJ,MACC,OAAOA,KAAW,YAAYA,EAAO,SAAS;AAAA,EAAA;AAElD,SAAIK,EAAgB,WAAW,IAAU,IAAIH,CAAI,KAAKC,CAAI,MAEnD,IAAID,CAAI,KAAKC,CAAI,KAAKE,EAAgB,KAAK,GAAG,CAAC;AACxD,GAuBaC,IAA4B,CACvCC,MACkC;AAClC,MAAI;AA0CF,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,SA9CWhB,EAAgBgB,CAAU,EAClB;AAAA,YACvB,CAACX,MAAY;AACX,sBAAQA,EAAQ,MAAA;AAAA,gBACd,KAAKC,EAAK;AACR,yBAAO;AAAA,oBACL;AAAA,sBACE,MAAM;AAAA,sBACN,MAAMD,EAAQ;AAAA,oBAAA;AAAA,kBAChB;AAAA,gBAEJ,KAAKC,EAAK;AACR,yBAAO;AAAA,oBACL;AAAA,sBACE,MAAM;AAAA,sBACN,MAAM;AAAA,oBAAA;AAAA,kBACR;AAAA,gBAEJ,KAAKA,EAAK;AAAA,gBACV,KAAKA,EAAK;AAAA,gBACV,KAAKA,EAAK;AAAA,gBACV,KAAKA,EAAK;AAAA,gBACV,KAAKA,EAAK;AAAA,gBACV,KAAKA,EAAK;AAAA,gBACV,KAAKA,EAAK;AACR,yBAAO;AAAA,oBACL;AAAA,sBACE,MAAM;AAAA,sBACN,OAAO;AAAA,wBACL,MAAMD,EAAQ;AAAA,wBACd,OAAOY,EAAoBZ,CAAO;AAAA,wBAClC,KAAKF,EAAoB,CAACE,CAAO,CAAC;AAAA,sBAAA;AAAA,oBACpC;AAAA,kBACF;AAAA,gBAEJ;AACE,yBAAOK,EAAmBL,CAAO;AAAA,cAAA;AAAA,YAEvC;AAAA,UAAA;AAAA,QAQI;AAAA,MACF;AAAA,IACF;AAAA,EAEJ,QAAgB;AACd,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAMW;AAAA,YAAA;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EAEJ;AACF;"}
1
+ {"version":3,"sources":["../../src/utils/icu-tranform.ts"],"sourcesContent":["import type { MessageFormatElement } from '@formatjs/icu-messageformat-parser';\nimport { parse, TYPE } from '@formatjs/icu-messageformat-parser';\nimport type {\n SerializedLexicalNode,\n SerializedParagraphNode,\n SerializedTextNode,\n} from '@payloadcms/richtext-lexical/lexical';\nimport type { SerializedBeautifulMentionNode } from 'lexical-beautiful-mentions';\nimport { formatVariableLabel } from './format';\nimport { uncaughtSwitchCase } from './guards';\n\n/**\n * Parse an ICU message string into a AST array\n */\nexport const parseICUMessage = (message: string): MessageFormatElement[] =>\n parse(message);\n\n/**\n * Serialize an ICU message AST array into a ICU message string\n */\nexport const serializeICUMessage = (elements: MessageFormatElement[]): string =>\n elements\n .map((element) => {\n switch (element.type) {\n case TYPE.literal:\n return element.value;\n case TYPE.argument:\n return stringifyElement(element.value);\n case TYPE.number:\n // TODO serialize element.style\n return stringifyElement(element.value, 'number');\n case TYPE.select:\n return stringifyElement(\n element.value,\n 'select',\n Object.entries(element.options).map(\n ([key, option]) =>\n `${key} {${option.value.length > 0 ? serializeICUMessage(option.value) : key}}`,\n ),\n );\n case TYPE.plural:\n return stringifyElement(element.value, 'plural', [\n element.offset < 0 && `offset:${element.offset}`,\n ...Object.entries(element.options).map(\n ([key, option]) =>\n `${key} {${\n option.value.length > 0\n ? serializeICUMessage(option.value)\n : key\n }}`,\n ),\n ]);\n case TYPE.tag:\n return `<${element.value}>${serializeICUMessage(element.children)}</${element.value}>`;\n case TYPE.date:\n // TODO serialize element.style\n return stringifyElement(element.value, 'date');\n case TYPE.time:\n // TODO serialize element.style\n return stringifyElement(element.value, 'time');\n case TYPE.pound:\n return '#';\n default:\n return uncaughtSwitchCase(element);\n }\n })\n .join('');\n\nconst stringifyElement = (\n name: string,\n type?: string,\n options: (string | boolean)[] = [],\n) => {\n if (type === undefined) return `{${name}}`;\n\n const filteredOptions = options.filter(\n (option): option is string =>\n typeof option === 'string' && option.length > 0,\n );\n if (filteredOptions.length === 0) return `{${name}, ${type}}`;\n\n return `{${name}, ${type}, ${filteredOptions.join(' ')}}`;\n};\n\nfunction serializeTextNode(text: string): SerializedTextNode {\n return {\n type: 'text',\n version: 1,\n text,\n detail: 0,\n format: 0,\n mode: 'normal',\n style: '',\n };\n}\n\nfunction serializeMentionNode(\n name: string,\n label: string,\n icu: string,\n): SerializedBeautifulMentionNode {\n return {\n type: 'variableMention',\n version: 1,\n trigger: '@',\n value: name,\n data: { label, icu },\n };\n}\n\ntype SerializedICUEditorState = {\n root: {\n type: 'root';\n version: 1;\n direction: null;\n format: '';\n indent: 0;\n children: [SerializedParagraphNode];\n };\n};\n\n/**\n * Parse an ICU message string into a Lexical serialized editor state\n */\nexport const parseIcuToLexicalState = (\n icuMessage: string,\n): SerializedICUEditorState => {\n try {\n const elements = parseICUMessage(icuMessage);\n const children = elements.flatMap<SerializedLexicalNode>((element) => {\n switch (element.type) {\n case TYPE.literal:\n return [serializeTextNode(element.value)];\n case TYPE.pound:\n return [serializeTextNode('#')];\n case TYPE.argument:\n case TYPE.number:\n case TYPE.date:\n case TYPE.time:\n case TYPE.select:\n case TYPE.plural:\n case TYPE.tag:\n return [\n serializeMentionNode(\n element.value,\n formatVariableLabel(element),\n serializeICUMessage([element]),\n ),\n ];\n default:\n return uncaughtSwitchCase(element);\n }\n });\n\n return {\n root: {\n type: 'root',\n version: 1,\n direction: null,\n format: '',\n indent: 0,\n children: [\n {\n type: 'paragraph',\n version: 1,\n direction: null,\n format: '',\n indent: 0,\n textFormat: 0,\n textStyle: '',\n children,\n },\n ],\n },\n };\n } catch {\n return {\n root: {\n type: 'root',\n version: 1,\n direction: null,\n format: '',\n indent: 0,\n children: [\n {\n type: 'paragraph',\n version: 1,\n direction: null,\n format: '',\n indent: 0,\n textFormat: 0,\n textStyle: '',\n children: [serializeTextNode(icuMessage)],\n },\n ],\n },\n };\n }\n};\n"],"names":["parse","TYPE","formatVariableLabel","uncaughtSwitchCase","parseICUMessage","message","serializeICUMessage","elements","map","element","type","literal","value","argument","stringifyElement","number","select","Object","entries","options","key","option","length","plural","offset","tag","children","date","time","pound","join","name","undefined","filteredOptions","filter","serializeTextNode","text","version","detail","format","mode","style","serializeMentionNode","label","icu","trigger","data","parseIcuToLexicalState","icuMessage","flatMap","root","direction","indent","textFormat","textStyle"],"mappings":"AACA,SAASA,KAAK,EAAEC,IAAI,QAAQ,qCAAqC;AAOjE,SAASC,mBAAmB,QAAQ,WAAW;AAC/C,SAASC,kBAAkB,QAAQ,WAAW;AAE9C;;CAEC,GACD,OAAO,MAAMC,kBAAkB,CAACC,UAC9BL,MAAMK,SAAS;AAEjB;;CAEC,GACD,OAAO,MAAMC,sBAAsB,CAACC,WAClCA,SACGC,GAAG,CAAC,CAACC;QACJ,OAAQA,QAAQC,IAAI;YAClB,KAAKT,KAAKU,OAAO;gBACf,OAAOF,QAAQG,KAAK;YACtB,KAAKX,KAAKY,QAAQ;gBAChB,OAAOC,iBAAiBL,QAAQG,KAAK;YACvC,KAAKX,KAAKc,MAAM;gBACd,+BAA+B;gBAC/B,OAAOD,iBAAiBL,QAAQG,KAAK,EAAE;YACzC,KAAKX,KAAKe,MAAM;gBACd,OAAOF,iBACLL,QAAQG,KAAK,EACb,UACAK,OAAOC,OAAO,CAACT,QAAQU,OAAO,EAAEX,GAAG,CACjC,CAAC,CAACY,KAAKC,OAAO,GACZ,GAAGD,IAAI,EAAE,EAAEC,OAAOT,KAAK,CAACU,MAAM,GAAG,IAAIhB,oBAAoBe,OAAOT,KAAK,IAAIQ,IAAI,CAAC,CAAC;YAGvF,KAAKnB,KAAKsB,MAAM;gBACd,OAAOT,iBAAiBL,QAAQG,KAAK,EAAE,UAAU;oBAC/CH,QAAQe,MAAM,GAAG,KAAK,CAAC,OAAO,EAAEf,QAAQe,MAAM,EAAE;uBAC7CP,OAAOC,OAAO,CAACT,QAAQU,OAAO,EAAEX,GAAG,CACpC,CAAC,CAACY,KAAKC,OAAO,GACZ,GAAGD,IAAI,EAAE,EACPC,OAAOT,KAAK,CAACU,MAAM,GAAG,IAClBhB,oBAAoBe,OAAOT,KAAK,IAChCQ,IACL,CAAC,CAAC;iBAER;YACH,KAAKnB,KAAKwB,GAAG;gBACX,OAAO,CAAC,CAAC,EAAEhB,QAAQG,KAAK,CAAC,CAAC,EAAEN,oBAAoBG,QAAQiB,QAAQ,EAAE,EAAE,EAAEjB,QAAQG,KAAK,CAAC,CAAC,CAAC;YACxF,KAAKX,KAAK0B,IAAI;gBACZ,+BAA+B;gBAC/B,OAAOb,iBAAiBL,QAAQG,KAAK,EAAE;YACzC,KAAKX,KAAK2B,IAAI;gBACZ,+BAA+B;gBAC/B,OAAOd,iBAAiBL,QAAQG,KAAK,EAAE;YACzC,KAAKX,KAAK4B,KAAK;gBACb,OAAO;YACT;gBACE,OAAO1B,mBAAmBM;QAC9B;IACF,GACCqB,IAAI,CAAC,IAAI;AAEd,MAAMhB,mBAAmB,CACvBiB,MACArB,MACAS,UAAgC,EAAE;IAElC,IAAIT,SAASsB,WAAW,OAAO,CAAC,CAAC,EAAED,KAAK,CAAC,CAAC;IAE1C,MAAME,kBAAkBd,QAAQe,MAAM,CACpC,CAACb,SACC,OAAOA,WAAW,YAAYA,OAAOC,MAAM,GAAG;IAElD,IAAIW,gBAAgBX,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAES,KAAK,EAAE,EAAErB,KAAK,CAAC,CAAC;IAE7D,OAAO,CAAC,CAAC,EAAEqB,KAAK,EAAE,EAAErB,KAAK,EAAE,EAAEuB,gBAAgBH,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D;AAEA,SAASK,kBAAkBC,IAAY;IACrC,OAAO;QACL1B,MAAM;QACN2B,SAAS;QACTD;QACAE,QAAQ;QACRC,QAAQ;QACRC,MAAM;QACNC,OAAO;IACT;AACF;AAEA,SAASC,qBACPX,IAAY,EACZY,KAAa,EACbC,GAAW;IAEX,OAAO;QACLlC,MAAM;QACN2B,SAAS;QACTQ,SAAS;QACTjC,OAAOmB;QACPe,MAAM;YAAEH;YAAOC;QAAI;IACrB;AACF;AAaA;;CAEC,GACD,OAAO,MAAMG,yBAAyB,CACpCC;IAEA,IAAI;QACF,MAAMzC,WAAWH,gBAAgB4C;QACjC,MAAMtB,WAAWnB,SAAS0C,OAAO,CAAwB,CAACxC;YACxD,OAAQA,QAAQC,IAAI;gBAClB,KAAKT,KAAKU,OAAO;oBACf,OAAO;wBAACwB,kBAAkB1B,QAAQG,KAAK;qBAAE;gBAC3C,KAAKX,KAAK4B,KAAK;oBACb,OAAO;wBAACM,kBAAkB;qBAAK;gBACjC,KAAKlC,KAAKY,QAAQ;gBAClB,KAAKZ,KAAKc,MAAM;gBAChB,KAAKd,KAAK0B,IAAI;gBACd,KAAK1B,KAAK2B,IAAI;gBACd,KAAK3B,KAAKe,MAAM;gBAChB,KAAKf,KAAKsB,MAAM;gBAChB,KAAKtB,KAAKwB,GAAG;oBACX,OAAO;wBACLiB,qBACEjC,QAAQG,KAAK,EACbV,oBAAoBO,UACpBH,oBAAoB;4BAACG;yBAAQ;qBAEhC;gBACH;oBACE,OAAON,mBAAmBM;YAC9B;QACF;QAEA,OAAO;YACLyC,MAAM;gBACJxC,MAAM;gBACN2B,SAAS;gBACTc,WAAW;gBACXZ,QAAQ;gBACRa,QAAQ;gBACR1B,UAAU;oBACR;wBACEhB,MAAM;wBACN2B,SAAS;wBACTc,WAAW;wBACXZ,QAAQ;wBACRa,QAAQ;wBACRC,YAAY;wBACZC,WAAW;wBACX5B;oBACF;iBACD;YACH;QACF;IACF,EAAE,OAAM;QACN,OAAO;YACLwB,MAAM;gBACJxC,MAAM;gBACN2B,SAAS;gBACTc,WAAW;gBACXZ,QAAQ;gBACRa,QAAQ;gBACR1B,UAAU;oBACR;wBACEhB,MAAM;wBACN2B,SAAS;wBACTc,WAAW;wBACXZ,QAAQ;wBACRa,QAAQ;wBACRC,YAAY;wBACZC,WAAW;wBACX5B,UAAU;4BAACS,kBAAkBa;yBAAY;oBAC3C;iBACD;YACH;QACF;IACF;AACF,EAAE"}
@@ -1,4 +1,4 @@
1
- import { DeepPartial, Messages } from '../types';
1
+ import type { DeepPartial, Messages } from '../types';
2
2
  /**
3
3
  * Sanitize messages data to match the schema.
4
4
  * Stored messages might contain keys that are not in the config.
@@ -1,19 +1,38 @@
1
- function y(s, r) {
2
- const e = {}, f = c(r) ? r : {};
3
- for (const t of Object.keys(s)) {
4
- const i = s[t], n = f[t];
5
- if (c(i)) {
6
- const o = y(i, n);
7
- c(o) && Object.keys(o).length > 0 && (e[t] = o);
8
- } else
9
- typeof n == "string" && (e[t] = n);
10
- }
11
- return e;
1
+ /**
2
+ * Sanitize messages data to match the schema.
3
+ * Stored messages might contain keys that are not in the config.
4
+ * This happens when messages in the config were (re)moved.
5
+ *
6
+ * Keep exactly the keys from `shape`, fill values from `source` when present.
7
+ * - Leaf present as string -> included
8
+ * - Leaf missing/non-string -> omitted
9
+ * - Empty nested groups -> omitted
10
+ */ /**
11
+
12
+ */ export function sanitizeMessages(config, data) {
13
+ const out = {};
14
+ const src = isObj(data) ? data : {};
15
+ for (const key of Object.keys(config)){
16
+ const shapeVal = config[key];
17
+ const srcVal = src[key];
18
+ if (isObj(shapeVal)) {
19
+ const child = sanitizeMessages(shapeVal, srcVal);
20
+ if (isObj(child) && Object.keys(child).length > 0) {
21
+ out[key] = child;
22
+ }
23
+ // else: omit empty group
24
+ } else {
25
+ // Leaf: only keep if the source has a string
26
+ if (typeof srcVal === 'string') {
27
+ out[key] = srcVal;
28
+ }
29
+ // else: omit leaf
30
+ }
31
+ }
32
+ return out;
12
33
  }
13
- function c(s) {
14
- return !!s && typeof s == "object" && !Array.isArray(s);
34
+ function isObj(x) {
35
+ return !!x && typeof x === 'object' && !Array.isArray(x);
15
36
  }
16
- export {
17
- y as sanitizeMessages
18
- };
19
- //# sourceMappingURL=sanitize.js.map
37
+
38
+ //# sourceMappingURL=sanitize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sources":["../../src/utils/sanitize.ts"],"sourcesContent":["import type { DeepPartial, Messages } from '@/types';\n\n/**\n * Sanitize messages data to match the schema.\n * Stored messages might contain keys that are not in the config.\n * This happens when messages in the config were (re)moved.\n *\n * Keep exactly the keys from `shape`, fill values from `source` when present.\n * - Leaf present as string -> included\n * - Leaf missing/non-string -> omitted\n * - Empty nested groups -> omitted\n */\n\n/**\n\n */\nexport function sanitizeMessages(\n config: Messages,\n data: unknown,\n): DeepPartial<Messages> {\n const out: Record<string, unknown> = {};\n const src = isObj(data) ? data : {};\n\n for (const key of Object.keys(config)) {\n const shapeVal = (config as Record<string, unknown>)[key];\n const srcVal = src[key];\n\n if (isObj(shapeVal)) {\n const child = sanitizeMessages(shapeVal as Messages, srcVal);\n if (isObj(child) && Object.keys(child).length > 0) {\n out[key] = child;\n }\n // else: omit empty group\n } else {\n // Leaf: only keep if the source has a string\n if (typeof srcVal === 'string') {\n out[key] = srcVal;\n }\n // else: omit leaf\n }\n }\n\n return out as DeepPartial<Messages>;\n}\n\nfunction isObj(x: unknown): x is Record<string, unknown> {\n return !!x && typeof x === 'object' && !Array.isArray(x);\n}\n"],"names":["sanitizeMessages","config","data","out","src","isObj","key","shapeVal","srcVal","child","x"],"mappings":"AAgBO,SAASA,EACdC,GACAC,GACuB;AACvB,QAAMC,IAA+B,CAAA,GAC/BC,IAAMC,EAAMH,CAAI,IAAIA,IAAO,CAAA;AAEjC,aAAWI,KAAO,OAAO,KAAKL,CAAM,GAAG;AACrC,UAAMM,IAAYN,EAAmCK,CAAG,GAClDE,IAASJ,EAAIE,CAAG;AAEtB,QAAID,EAAME,CAAQ,GAAG;AACnB,YAAME,IAAQT,EAAiBO,GAAsBC,CAAM;AAC3D,MAAIH,EAAMI,CAAK,KAAK,OAAO,KAAKA,CAAK,EAAE,SAAS,MAC9CN,EAAIG,CAAG,IAAIG;AAAA,IAGf;AAEE,MAAI,OAAOD,KAAW,aACpBL,EAAIG,CAAG,IAAIE;AAAA,EAIjB;AAEA,SAAOL;AACT;AAEA,SAASE,EAAMK,GAA0C;AACvD,SAAO,CAAC,CAACA,KAAK,OAAOA,KAAM,YAAY,CAAC,MAAM,QAAQA,CAAC;AACzD;"}
1
+ {"version":3,"sources":["../../src/utils/sanitize.ts"],"sourcesContent":["import type { DeepPartial, Messages } from '@/types';\n\n/**\n * Sanitize messages data to match the schema.\n * Stored messages might contain keys that are not in the config.\n * This happens when messages in the config were (re)moved.\n *\n * Keep exactly the keys from `shape`, fill values from `source` when present.\n * - Leaf present as string -> included\n * - Leaf missing/non-string -> omitted\n * - Empty nested groups -> omitted\n */\n\n/**\n\n */\nexport function sanitizeMessages(\n config: Messages,\n data: unknown,\n): DeepPartial<Messages> {\n const out: Record<string, unknown> = {};\n const src = isObj(data) ? data : {};\n\n for (const key of Object.keys(config)) {\n const shapeVal = (config as Record<string, unknown>)[key];\n const srcVal = src[key];\n\n if (isObj(shapeVal)) {\n const child = sanitizeMessages(shapeVal as Messages, srcVal);\n if (isObj(child) && Object.keys(child).length > 0) {\n out[key] = child;\n }\n // else: omit empty group\n } else {\n // Leaf: only keep if the source has a string\n if (typeof srcVal === 'string') {\n out[key] = srcVal;\n }\n // else: omit leaf\n }\n }\n\n return out as DeepPartial<Messages>;\n}\n\nfunction isObj(x: unknown): x is Record<string, unknown> {\n return !!x && typeof x === 'object' && !Array.isArray(x);\n}\n"],"names":["sanitizeMessages","config","data","out","src","isObj","key","Object","keys","shapeVal","srcVal","child","length","x","Array","isArray"],"mappings":"AAEA;;;;;;;;;CASC,GAED;;CAEC,GACD,OAAO,SAASA,iBACdC,MAAgB,EAChBC,IAAa;IAEb,MAAMC,MAA+B,CAAC;IACtC,MAAMC,MAAMC,MAAMH,QAAQA,OAAO,CAAC;IAElC,KAAK,MAAMI,OAAOC,OAAOC,IAAI,CAACP,QAAS;QACrC,MAAMQ,WAAW,AAACR,MAAkC,CAACK,IAAI;QACzD,MAAMI,SAASN,GAAG,CAACE,IAAI;QAEvB,IAAID,MAAMI,WAAW;YACnB,MAAME,QAAQX,iBAAiBS,UAAsBC;YACrD,IAAIL,MAAMM,UAAUJ,OAAOC,IAAI,CAACG,OAAOC,MAAM,GAAG,GAAG;gBACjDT,GAAG,CAACG,IAAI,GAAGK;YACb;QACA,yBAAyB;QAC3B,OAAO;YACL,6CAA6C;YAC7C,IAAI,OAAOD,WAAW,UAAU;gBAC9BP,GAAG,CAACG,IAAI,GAAGI;YACb;QACA,kBAAkB;QACpB;IACF;IAEA,OAAOP;AACT;AAEA,SAASE,MAAMQ,CAAU;IACvB,OAAO,CAAC,CAACA,KAAK,OAAOA,MAAM,YAAY,CAACC,MAAMC,OAAO,CAACF;AACxD"}
@@ -1,10 +1,8 @@
1
- import { MessageSchema, TemplateVariable } from '../types';
1
+ import type { MessageSchema, TemplateVariable } from '../types';
2
2
  export declare const parseMessageSchema: (schema: MessageSchema) => MessageConfig;
3
3
  export declare const extractTemplateVariables: (schema: MessageSchema) => TemplateVariable[];
4
- export type MessageType = 'icu';
5
4
  export type MessageConfig = {
6
5
  description: string | undefined;
7
- type: MessageType;
8
6
  variables: TemplateVariable[];
9
7
  };
10
8
  //# sourceMappingURL=schema.d.ts.map