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,53 +1,59 @@
1
- import { jsx as s, jsxs as f } from "react/jsx-runtime";
2
- import { useMemo as d, useEffect as x } from "react";
3
- import { useForm as g, useFieldArray as v } from "react-hook-form";
4
- import { serializeICUMessage as n, parseICUMessage as b } from "../../../../utils/icu-tranform.js";
5
- function F({
6
- element: t,
7
- onUpdate: a
8
- }) {
9
- const r = d(
10
- () => Object.entries(t.options).map(([e, o]) => ({
11
- name: e,
12
- content: n(o.value)
13
- })),
14
- [t]
15
- ), { control: i, register: l, getValues: c } = g({
16
- defaultValues: { options: r }
17
- }), { fields: m } = v({
18
- control: i,
19
- name: "options"
20
- });
21
- return x(() => () => {
22
- const e = c(), o = {
23
- ...t,
24
- options: Object.fromEntries(
25
- e.options.map(({ name: p, content: u }) => [
26
- p,
27
- { value: b(u) }
28
- ])
29
- )
30
- };
31
- a(n([o]));
32
- }, []), /* @__PURE__ */ s("div", { className: "flex flex-col gap-2 p-3", children: m.map((e, o) => /* @__PURE__ */ f("div", { className: "flex flex-col gap-1", children: [
33
- /* @__PURE__ */ s(
34
- "label",
35
- {
36
- className: "font-medium text-sm",
37
- htmlFor: `options.${o}.content`,
38
- children: e.name
39
- }
40
- ),
41
- /* @__PURE__ */ s(
42
- "input",
43
- {
44
- className: "focus:outline-none",
45
- ...l(`options.${o}.content`)
46
- }
47
- )
48
- ] }, e.name)) });
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo } from 'react';
3
+ import { useFieldArray, useForm } from 'react-hook-form';
4
+ import { parseICUMessage, serializeICUMessage } from '../../../../utils/icu-tranform';
5
+ import styles from './SelectVariableEditor.module.css';
6
+ export function SelectVariableEditor({ element, onUpdate }) {
7
+ const options = useMemo(()=>Object.entries(element.options).map(([name, option])=>({
8
+ name,
9
+ content: serializeICUMessage(option.value)
10
+ })), [
11
+ element
12
+ ]);
13
+ const { control, register, getValues } = useForm({
14
+ defaultValues: {
15
+ options
16
+ }
17
+ });
18
+ const { fields } = useFieldArray({
19
+ control,
20
+ name: 'options'
21
+ });
22
+ // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent
23
+ useEffect(()=>{
24
+ return ()=>{
25
+ const values = getValues();
26
+ const updatedElement = {
27
+ ...element,
28
+ options: Object.fromEntries(values.options.map(({ name, content })=>[
29
+ name,
30
+ {
31
+ value: parseICUMessage(content)
32
+ }
33
+ ]))
34
+ };
35
+ onUpdate(serializeICUMessage([
36
+ updatedElement
37
+ ]));
38
+ };
39
+ }, []);
40
+ return /*#__PURE__*/ _jsx("div", {
41
+ className: styles.root,
42
+ children: fields.map((field, index)=>/*#__PURE__*/ _jsxs("div", {
43
+ className: styles.field,
44
+ children: [
45
+ /*#__PURE__*/ _jsx("label", {
46
+ className: styles.label,
47
+ htmlFor: `options.${index}.content`,
48
+ children: field.name
49
+ }),
50
+ /*#__PURE__*/ _jsx("input", {
51
+ className: styles.input,
52
+ ...register(`options.${index}.content`)
53
+ })
54
+ ]
55
+ }, field.name))
56
+ });
49
57
  }
50
- export {
51
- F as SelectVariableEditor
52
- };
53
- //# sourceMappingURL=SelectVariableEditor.js.map
58
+
59
+ //# sourceMappingURL=SelectVariableEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectVariableEditor.js","sources":["../../../../../src/components/inputs/variables/editors/SelectVariableEditor.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { useFieldArray, useForm } from 'react-hook-form';\nimport type { SelectElement } from '@/types';\n\nimport { parseICUMessage, serializeICUMessage } from '@/utils/icu-tranform';\n\nexport interface SelectVariableEditorProps {\n element: SelectElement;\n onUpdate: (value: string) => void;\n}\n\nexport function SelectVariableEditor({\n element,\n onUpdate,\n}: SelectVariableEditorProps) {\n const options = useMemo<{ name: string; content: string }[]>(\n () =>\n Object.entries(element.options).map(([name, option]) => ({\n name,\n content: serializeICUMessage(option.value),\n })),\n [element],\n );\n\n const { control, register, getValues } = useForm<{\n options: { name: string; content: string }[];\n }>({\n defaultValues: { options },\n });\n const { fields } = useFieldArray({\n control,\n name: 'options',\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent\n useEffect(() => {\n return () => {\n const values = getValues();\n const updatedElement: SelectElement = {\n ...element,\n options: Object.fromEntries(\n values.options.map(({ name, content }) => [\n name,\n { value: parseICUMessage(content) },\n ]),\n ),\n };\n onUpdate(serializeICUMessage([updatedElement]));\n };\n }, []);\n\n return (\n <div className=\"flex flex-col gap-2 p-3\">\n {fields.map((field, index) => (\n <div className=\"flex flex-col gap-1\" key={field.name}>\n <label\n className=\"font-medium text-sm\"\n htmlFor={`options.${index}.content`}\n >\n {field.name}\n </label>\n {/* // TODO add support for variable mentions */}\n <input\n className=\"focus:outline-none\"\n {...register(`options.${index}.content`)}\n />\n </div>\n ))}\n </div>\n );\n}\n"],"names":["SelectVariableEditor","element","onUpdate","options","useMemo","name","option","serializeICUMessage","control","register","getValues","useForm","fields","useFieldArray","useEffect","values","updatedElement","content","parseICUMessage","jsx","field","index","jsxs"],"mappings":";;;;AAWO,SAASA,EAAqB;AAAA,EACnC,SAAAC;AAAA,EACA,UAAAC;AACF,GAA8B;AAC5B,QAAMC,IAAUC;AAAA,IACd,MACE,OAAO,QAAQH,EAAQ,OAAO,EAAE,IAAI,CAAC,CAACI,GAAMC,CAAM,OAAO;AAAA,MACvD,MAAAD;AAAA,MACA,SAASE,EAAoBD,EAAO,KAAK;AAAA,IAAA,EACzC;AAAA,IACJ,CAACL,CAAO;AAAA,EAAA,GAGJ,EAAE,SAAAO,GAAS,UAAAC,GAAU,WAAAC,EAAA,IAAcC,EAEtC;AAAA,IACD,eAAe,EAAE,SAAAR,EAAA;AAAA,EAAQ,CAC1B,GACK,EAAE,QAAAS,EAAA,IAAWC,EAAc;AAAA,IAC/B,SAAAL;AAAA,IACA,MAAM;AAAA,EAAA,CACP;AAGD,SAAAM,EAAU,MACD,MAAM;AACX,UAAMC,IAASL,EAAA,GACTM,IAAgC;AAAA,MACpC,GAAGf;AAAA,MACH,SAAS,OAAO;AAAA,QACdc,EAAO,QAAQ,IAAI,CAAC,EAAE,MAAAV,GAAM,SAAAY,QAAc;AAAA,UACxCZ;AAAA,UACA,EAAE,OAAOa,EAAgBD,CAAO,EAAA;AAAA,QAAE,CACnC;AAAA,MAAA;AAAA,IACH;AAEF,IAAAf,EAASK,EAAoB,CAACS,CAAc,CAAC,CAAC;AAAA,EAChD,GACC,CAAA,CAAE,GAGH,gBAAAG,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAAP,EAAO,IAAI,CAACQ,GAAOC,MAClB,gBAAAC,EAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,IAAA,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,WAAWE,CAAK;AAAA,QAExB,UAAAD,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAGT,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACT,GAAGV,EAAS,WAAWY,CAAK,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACzC,EAAA,GAXwCD,EAAM,IAYhD,CACD,GACH;AAEJ;"}
1
+ {"version":3,"sources":["../../../../../src/components/inputs/variables/editors/SelectVariableEditor.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { useFieldArray, useForm } from 'react-hook-form';\nimport type { SelectElement } from '@/types';\n\nimport { parseICUMessage, serializeICUMessage } from '@/utils/icu-tranform';\n\nimport styles from './SelectVariableEditor.module.css';\n\nexport interface SelectVariableEditorProps {\n element: SelectElement;\n onUpdate: (value: string) => void;\n}\n\nexport function SelectVariableEditor({\n element,\n onUpdate,\n}: SelectVariableEditorProps) {\n const options = useMemo<{ name: string; content: string }[]>(\n () =>\n Object.entries(element.options).map(([name, option]) => ({\n name,\n content: serializeICUMessage(option.value),\n })),\n [element],\n );\n\n const { control, register, getValues } = useForm<{\n options: { name: string; content: string }[];\n }>({\n defaultValues: { options },\n });\n const { fields } = useFieldArray({\n control,\n name: 'options',\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent\n useEffect(() => {\n return () => {\n const values = getValues();\n const updatedElement: SelectElement = {\n ...element,\n options: Object.fromEntries(\n values.options.map(({ name, content }) => [\n name,\n { value: parseICUMessage(content) },\n ]),\n ),\n };\n onUpdate(serializeICUMessage([updatedElement]));\n };\n }, []);\n\n return (\n <div className={styles.root}>\n {fields.map((field, index) => (\n <div className={styles.field} key={field.name}>\n <label className={styles.label} htmlFor={`options.${index}.content`}>\n {field.name}\n </label>\n {/* // TODO add support for variable mentions */}\n <input\n className={styles.input}\n {...register(`options.${index}.content`)}\n />\n </div>\n ))}\n </div>\n );\n}\n"],"names":["useEffect","useMemo","useFieldArray","useForm","parseICUMessage","serializeICUMessage","styles","SelectVariableEditor","element","onUpdate","options","Object","entries","map","name","option","content","value","control","register","getValues","defaultValues","fields","values","updatedElement","fromEntries","div","className","root","field","index","label","htmlFor","input"],"mappings":";AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,QAAQ;AAC3C,SAASC,aAAa,EAAEC,OAAO,QAAQ,kBAAkB;AAGzD,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,uBAAuB;AAE5E,OAAOC,YAAY,oCAAoC;AAOvD,OAAO,SAASC,qBAAqB,EACnCC,OAAO,EACPC,QAAQ,EACkB;IAC1B,MAAMC,UAAUT,QACd,IACEU,OAAOC,OAAO,CAACJ,QAAQE,OAAO,EAAEG,GAAG,CAAC,CAAC,CAACC,MAAMC,OAAO,GAAM,CAAA;gBACvDD;gBACAE,SAASX,oBAAoBU,OAAOE,KAAK;YAC3C,CAAA,IACF;QAACT;KAAQ;IAGX,MAAM,EAAEU,OAAO,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGjB,QAEtC;QACDkB,eAAe;YAAEX;QAAQ;IAC3B;IACA,MAAM,EAAEY,MAAM,EAAE,GAAGpB,cAAc;QAC/BgB;QACAJ,MAAM;IACR;IAEA,0EAA0E;IAC1Ed,UAAU;QACR,OAAO;YACL,MAAMuB,SAASH;YACf,MAAMI,iBAAgC;gBACpC,GAAGhB,OAAO;gBACVE,SAASC,OAAOc,WAAW,CACzBF,OAAOb,OAAO,CAACG,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEE,OAAO,EAAE,GAAK;wBACxCF;wBACA;4BAAEG,OAAOb,gBAAgBY;wBAAS;qBACnC;YAEL;YACAP,SAASJ,oBAAoB;gBAACmB;aAAe;QAC/C;IACF,GAAG,EAAE;IAEL,qBACE,KAACE;QAAIC,WAAWrB,OAAOsB,IAAI;kBACxBN,OAAOT,GAAG,CAAC,CAACgB,OAAOC,sBAClB,MAACJ;gBAAIC,WAAWrB,OAAOuB,KAAK;;kCAC1B,KAACE;wBAAMJ,WAAWrB,OAAOyB,KAAK;wBAAEC,SAAS,CAAC,QAAQ,EAAEF,MAAM,QAAQ,CAAC;kCAChED,MAAMf,IAAI;;kCAGb,KAACmB;wBACCN,WAAWrB,OAAO2B,KAAK;wBACtB,GAAGd,SAAS,CAAC,QAAQ,EAAEW,MAAM,QAAQ,CAAC,CAAC;;;eAPTD,MAAMf,IAAI;;AAarD"}
@@ -0,0 +1,25 @@
1
+ .root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 0.5rem;
5
+ padding: 0.75rem;
6
+ }
7
+
8
+ .field {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 0.25rem;
12
+ }
13
+
14
+ .label {
15
+ font-weight: 500;
16
+ font-size: var(--font-size-small);
17
+ }
18
+
19
+ .input {
20
+ outline: none;
21
+ }
22
+
23
+ .input:focus {
24
+ outline: none;
25
+ }
@@ -1,4 +1,4 @@
1
- import { TagElement } from '../../../../types';
1
+ import type { TagElement } from '../../../../types';
2
2
  export interface TagVariableEditorProps {
3
3
  element: TagElement;
4
4
  onUpdate: (value: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"TagVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/TagVariableEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,GACT,EAAE,sBAAsB,2CA+BxB"}
1
+ {"version":3,"file":"TagVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/TagVariableEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAM1C,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,GACT,EAAE,sBAAsB,2CA2BxB"}
@@ -1,33 +1,37 @@
1
- import { jsx as i } from "react/jsx-runtime";
2
- import { useMemo as u, useEffect as m } from "react";
3
- import { useForm as f } from "react-hook-form";
4
- import { serializeICUMessage as t, parseICUMessage as l } from "../../../../utils/icu-tranform.js";
5
- function E({
6
- element: e,
7
- onUpdate: o
8
- }) {
9
- const r = u(
10
- () => t(e.children),
11
- [e]
12
- ), { register: s, getValues: n } = f({
13
- defaultValues: { content: r }
14
- });
15
- return m(() => () => {
16
- const { content: a } = n(), c = {
17
- ...e,
18
- children: l(a)
19
- };
20
- o(t([c]));
21
- }, []), /* @__PURE__ */ i(
22
- "textarea",
23
- {
24
- className: "p-3 focus:outline-none",
25
- ...s("content"),
26
- rows: 1
27
- }
28
- );
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useMemo } from 'react';
3
+ import { useForm } from 'react-hook-form';
4
+ import { parseICUMessage, serializeICUMessage } from '../../../../utils/icu-tranform';
5
+ import styles from './TagVariableEditor.module.css';
6
+ export function TagVariableEditor({ element, onUpdate }) {
7
+ const content = useMemo(()=>serializeICUMessage(element.children), [
8
+ element
9
+ ]);
10
+ const { register, getValues } = useForm({
11
+ defaultValues: {
12
+ content
13
+ }
14
+ });
15
+ // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent
16
+ useEffect(()=>{
17
+ return ()=>{
18
+ const { content } = getValues();
19
+ // TODO find better solution for this
20
+ const updatedElement = {
21
+ ...element,
22
+ children: parseICUMessage(content)
23
+ };
24
+ onUpdate(serializeICUMessage([
25
+ updatedElement
26
+ ]));
27
+ };
28
+ }, []);
29
+ // TODO add support for variable mentions
30
+ return /*#__PURE__*/ _jsx("textarea", {
31
+ className: styles.textarea,
32
+ ...register('content'),
33
+ rows: 1
34
+ });
29
35
  }
30
- export {
31
- E as TagVariableEditor
32
- };
33
- //# sourceMappingURL=TagVariableEditor.js.map
36
+
37
+ //# sourceMappingURL=TagVariableEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TagVariableEditor.js","sources":["../../../../../src/components/inputs/variables/editors/TagVariableEditor.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport type { TagElement } from '@/types';\n\nimport { parseICUMessage, serializeICUMessage } from '@/utils/icu-tranform';\n\nexport interface TagVariableEditorProps {\n element: TagElement;\n onUpdate: (value: string) => void;\n}\n\nexport function TagVariableEditor({\n element,\n onUpdate,\n}: TagVariableEditorProps) {\n const content = useMemo<string>(\n () => serializeICUMessage(element.children),\n [element],\n );\n\n const { register, getValues } = useForm<{ content: string }>({\n defaultValues: { content },\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent\n useEffect(() => {\n return () => {\n const { content } = getValues();\n // TODO find better solution for this\n const updatedElement: TagElement = {\n ...element,\n children: parseICUMessage(content),\n };\n onUpdate(serializeICUMessage([updatedElement]));\n };\n }, []);\n\n // TODO add support for variable mentions\n return (\n <textarea\n className=\"p-3 focus:outline-none\"\n {...register('content')}\n rows={1}\n />\n );\n}\n"],"names":["TagVariableEditor","element","onUpdate","content","useMemo","serializeICUMessage","register","getValues","useForm","useEffect","updatedElement","parseICUMessage","jsx"],"mappings":";;;;AAWO,SAASA,EAAkB;AAAA,EAChC,SAAAC;AAAA,EACA,UAAAC;AACF,GAA2B;AACzB,QAAMC,IAAUC;AAAA,IACd,MAAMC,EAAoBJ,EAAQ,QAAQ;AAAA,IAC1C,CAACA,CAAO;AAAA,EAAA,GAGJ,EAAE,UAAAK,GAAU,WAAAC,EAAA,IAAcC,EAA6B;AAAA,IAC3D,eAAe,EAAE,SAAAL,EAAA;AAAA,EAAQ,CAC1B;AAGD,SAAAM,EAAU,MACD,MAAM;AACX,UAAM,EAAE,SAAAN,EAAAA,IAAYI,EAAA,GAEdG,IAA6B;AAAA,MACjC,GAAGT;AAAA,MACH,UAAUU,EAAgBR,CAAO;AAAA,IAAA;AAEnC,IAAAD,EAASG,EAAoB,CAACK,CAAc,CAAC,CAAC;AAAA,EAChD,GACC,CAAA,CAAE,GAIH,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACT,GAAGN,EAAS,SAAS;AAAA,MACtB,MAAM;AAAA,IAAA;AAAA,EAAA;AAGZ;"}
1
+ {"version":3,"sources":["../../../../../src/components/inputs/variables/editors/TagVariableEditor.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport type { TagElement } from '@/types';\n\nimport { parseICUMessage, serializeICUMessage } from '@/utils/icu-tranform';\n\nimport styles from './TagVariableEditor.module.css';\n\nexport interface TagVariableEditorProps {\n element: TagElement;\n onUpdate: (value: string) => void;\n}\n\nexport function TagVariableEditor({\n element,\n onUpdate,\n}: TagVariableEditorProps) {\n const content = useMemo<string>(\n () => serializeICUMessage(element.children),\n [element],\n );\n\n const { register, getValues } = useForm<{ content: string }>({\n defaultValues: { content },\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent\n useEffect(() => {\n return () => {\n const { content } = getValues();\n // TODO find better solution for this\n const updatedElement: TagElement = {\n ...element,\n children: parseICUMessage(content),\n };\n onUpdate(serializeICUMessage([updatedElement]));\n };\n }, []);\n\n // TODO add support for variable mentions\n return (\n <textarea className={styles.textarea} {...register('content')} rows={1} />\n );\n}\n"],"names":["useEffect","useMemo","useForm","parseICUMessage","serializeICUMessage","styles","TagVariableEditor","element","onUpdate","content","children","register","getValues","defaultValues","updatedElement","textarea","className","rows"],"mappings":";AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,QAAQ;AAC3C,SAASC,OAAO,QAAQ,kBAAkB;AAG1C,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,uBAAuB;AAE5E,OAAOC,YAAY,iCAAiC;AAOpD,OAAO,SAASC,kBAAkB,EAChCC,OAAO,EACPC,QAAQ,EACe;IACvB,MAAMC,UAAUR,QACd,IAAMG,oBAAoBG,QAAQG,QAAQ,GAC1C;QAACH;KAAQ;IAGX,MAAM,EAAEI,QAAQ,EAAEC,SAAS,EAAE,GAAGV,QAA6B;QAC3DW,eAAe;YAAEJ;QAAQ;IAC3B;IAEA,0EAA0E;IAC1ET,UAAU;QACR,OAAO;YACL,MAAM,EAAES,OAAO,EAAE,GAAGG;YACpB,qCAAqC;YACrC,MAAME,iBAA6B;gBACjC,GAAGP,OAAO;gBACVG,UAAUP,gBAAgBM;YAC5B;YACAD,SAASJ,oBAAoB;gBAACU;aAAe;QAC/C;IACF,GAAG,EAAE;IAEL,yCAAyC;IACzC,qBACE,KAACC;QAASC,WAAWX,OAAOU,QAAQ;QAAG,GAAGJ,SAAS,UAAU;QAAEM,MAAM;;AAEzE"}
@@ -0,0 +1,7 @@
1
+ .textarea {
2
+ padding: 0.75rem;
3
+ }
4
+
5
+ .textarea:focus {
6
+ outline: none;
7
+ }
@@ -1,4 +1,4 @@
1
- import { TimeElement } from '../../../../types';
1
+ import type { TimeElement } from '../../../../types';
2
2
  export interface TimeElementEditorProps {
3
3
  name: string;
4
4
  element: TimeElement | undefined;
@@ -6,5 +6,5 @@ export interface TimeElementEditorProps {
6
6
  getValue: () => string;
7
7
  }>;
8
8
  }
9
- export declare function TimeElementEditor({ name, element, ref, }: TimeElementEditorProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function TimeElementEditor({ ref }: TimeElementEditorProps): import("react/jsx-runtime").JSX.Element;
10
10
  //# sourceMappingURL=TimeVariableEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/TimeVariableEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,GAAG,GACJ,EAAE,sBAAsB,2CASxB"}
1
+ {"version":3,"file":"TimeVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/TimeVariableEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAED,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,EAAE,sBAAsB,2CAShE"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useImperativeHandle } from 'react';
3
+ export function TimeElementEditor({ ref }) {
4
+ useImperativeHandle(ref, ()=>({
5
+ getValue: ()=>{
6
+ // TODO
7
+ return '';
8
+ }
9
+ }));
10
+ return /*#__PURE__*/ _jsx(_Fragment, {
11
+ children: "TimeElementEditor"
12
+ });
13
+ }
14
+
15
+ //# sourceMappingURL=TimeVariableEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/inputs/variables/editors/TimeVariableEditor.tsx"],"sourcesContent":["import { useImperativeHandle } from 'react';\nimport type { TimeElement } from '@/types';\n\nexport interface TimeElementEditorProps {\n name: string;\n element: TimeElement | undefined;\n ref: React.Ref<{ getValue: () => string }>;\n}\n\nexport function TimeElementEditor({ ref }: TimeElementEditorProps) {\n useImperativeHandle(ref, () => ({\n getValue: () => {\n // TODO\n return '';\n },\n }));\n\n return <>TimeElementEditor</>;\n}\n"],"names":["useImperativeHandle","TimeElementEditor","ref","getValue"],"mappings":";AAAA,SAASA,mBAAmB,QAAQ,QAAQ;AAS5C,OAAO,SAASC,kBAAkB,EAAEC,GAAG,EAA0B;IAC/DF,oBAAoBE,KAAK,IAAO,CAAA;YAC9BC,UAAU;gBACR,OAAO;gBACP,OAAO;YACT;QACF,CAAA;IAEA,qBAAO;kBAAE;;AACX"}
@@ -1,4 +1,4 @@
1
- import { NumberElement, PluralElement } from '../../../../types';
1
+ import type { NumberElement, PluralElement } from '../../../../types';
2
2
  export interface NumericVariablePickerProps {
3
3
  element: NumberElement | PluralElement;
4
4
  onUpdate: (value: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"NumericVariablePicker.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/pickers/NumericVariablePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAc5D,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,aAAa,GAAG,aAAa,CAAC;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,2CA8C5B"}
1
+ {"version":3,"file":"NumericVariablePicker.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/pickers/NumericVariablePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAe5D,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,aAAa,GAAG,aAAa,CAAC;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,2CA8C5B"}
@@ -1,53 +1,50 @@
1
- import { jsxs as s, jsx as a } from "react/jsx-runtime";
2
- import { ToggleGroup as l } from "radix-ui";
3
- import { useState as f, useRef as c, useEffect as m } from "react";
4
- import { isNumberElement as p, isPluralElement as i } from "@formatjs/icu-messageformat-parser";
5
- import { PluralVariableEditor as d } from "../editors/PluralVariableEditor.js";
6
- const v = [
7
- "number",
8
- "plural"
9
- // "selectordinal"
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ToggleGroup } from 'radix-ui';
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { isNumberElement, isPluralElement } from '../../../../utils/guards';
5
+ import { PluralVariableEditor } from '../editors/PluralVariableEditor';
6
+ import styles from './NumericVariablePicker.module.css';
7
+ const NUMERIC_TYPES = [
8
+ 'number',
9
+ 'plural'
10
10
  ];
11
- function E({
12
- element: e,
13
- onUpdate: n
14
- }) {
15
- const [o, u] = f(() => {
16
- if (p(e)) return "number";
17
- if (i(e)) return "plural";
18
- }), t = c(null);
19
- return m(() => () => {
20
- t.current && n(t.current.getValue());
21
- }, []), /* @__PURE__ */ s("div", { className: "", children: [
22
- /* @__PURE__ */ a(
23
- l.Root,
24
- {
25
- className: "flex bg-elevation-100",
26
- onValueChange: (r) => u(r),
27
- type: "single",
28
- value: o,
29
- children: v.map((r) => /* @__PURE__ */ a(
30
- l.Item,
31
- {
32
- className: "flex-1 border-none data-[state=off]:cursor-pointer data-[state=on]:bg-elevation-800 data-[state=on]:text-elevation-0 data-[state=off]:opacity-50 data-[state=off]:hover:opacity-100",
33
- value: r,
34
- children: r
35
- },
36
- r
37
- ))
38
- }
39
- ),
40
- /* @__PURE__ */ a("div", { className: "p-3", children: o === "plural" && /* @__PURE__ */ a(
41
- d,
42
- {
43
- element: i(e) ? e : void 0,
44
- ref: t,
45
- variableName: e.value
46
- }
47
- ) })
48
- ] });
11
+ export function NumericVariablePicker({ element, onUpdate }) {
12
+ const [type, setType] = useState(()=>{
13
+ if (isNumberElement(element)) return 'number';
14
+ if (isPluralElement(element)) return 'plural';
15
+ return undefined;
16
+ });
17
+ const getValueRef = useRef(null);
18
+ // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent
19
+ useEffect(()=>{
20
+ return ()=>{
21
+ if (!getValueRef.current) return;
22
+ onUpdate(getValueRef.current.getValue());
23
+ };
24
+ }, []);
25
+ return /*#__PURE__*/ _jsxs("div", {
26
+ children: [
27
+ /*#__PURE__*/ _jsx(ToggleGroup.Root, {
28
+ className: styles.toggleGroup,
29
+ onValueChange: (value)=>setType(value),
30
+ type: "single",
31
+ value: type,
32
+ children: NUMERIC_TYPES.map((type)=>/*#__PURE__*/ _jsx(ToggleGroup.Item, {
33
+ className: styles.toggleItem,
34
+ value: type,
35
+ children: type
36
+ }, type))
37
+ }),
38
+ /*#__PURE__*/ _jsx("div", {
39
+ className: styles.content,
40
+ children: type === 'plural' && /*#__PURE__*/ _jsx(PluralVariableEditor, {
41
+ element: isPluralElement(element) ? element : undefined,
42
+ ref: getValueRef,
43
+ variableName: element.value
44
+ })
45
+ })
46
+ ]
47
+ });
49
48
  }
50
- export {
51
- E as NumericVariablePicker
52
- };
53
- //# sourceMappingURL=NumericVariablePicker.js.map
49
+
50
+ //# sourceMappingURL=NumericVariablePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumericVariablePicker.js","sources":["../../../../../src/components/inputs/variables/pickers/NumericVariablePicker.tsx"],"sourcesContent":["import { ToggleGroup } from 'radix-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport type { NumberElement, PluralElement } from '@/types';\n\nimport { isNumberElement, isPluralElement } from '@/utils/guards';\n\nimport { PluralVariableEditor } from '../editors/PluralVariableEditor';\n\nconst NUMERIC_TYPES = [\n 'number',\n 'plural',\n // \"selectordinal\"\n] as const;\n\ntype NumericType = (typeof NUMERIC_TYPES)[number];\n\nexport interface NumericVariablePickerProps {\n element: NumberElement | PluralElement;\n onUpdate: (value: string) => void;\n}\n\nexport function NumericVariablePicker({\n element,\n onUpdate,\n}: NumericVariablePickerProps) {\n const [type, setType] = useState<NumericType | undefined>(() => {\n if (isNumberElement(element)) return 'number';\n if (isPluralElement(element)) return 'plural';\n return undefined;\n });\n const getValueRef = useRef<{ getValue: () => string }>(null);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent\n useEffect(() => {\n return () => {\n if (!getValueRef.current) return;\n onUpdate(getValueRef.current.getValue());\n };\n }, []);\n\n return (\n <div className=\"\">\n <ToggleGroup.Root\n className=\"flex bg-elevation-100\"\n onValueChange={(value) => setType(value as NumericType)}\n type=\"single\"\n value={type}\n >\n {NUMERIC_TYPES.map((type) => (\n <ToggleGroup.Item\n className=\"flex-1 border-none data-[state=off]:cursor-pointer data-[state=on]:bg-elevation-800 data-[state=on]:text-elevation-0 data-[state=off]:opacity-50 data-[state=off]:hover:opacity-100\"\n key={type}\n value={type}\n >\n {type}\n </ToggleGroup.Item>\n ))}\n </ToggleGroup.Root>\n\n <div className=\"p-3\">\n {type === 'plural' && (\n <PluralVariableEditor\n element={isPluralElement(element) ? element : undefined}\n ref={getValueRef}\n variableName={element.value}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["NUMERIC_TYPES","NumericVariablePicker","element","onUpdate","type","setType","useState","isNumberElement","isPluralElement","getValueRef","useRef","useEffect","jsxs","jsx","ToggleGroup","value","PluralVariableEditor"],"mappings":";;;;;AAQA,MAAMA,IAAgB;AAAA,EACpB;AAAA,EACA;AAAA;AAEF;AASO,SAASC,EAAsB;AAAA,EACpC,SAAAC;AAAA,EACA,UAAAC;AACF,GAA+B;AAC7B,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAkC,MAAM;AAC9D,QAAIC,EAAgBL,CAAO,EAAG,QAAO;AACrC,QAAIM,EAAgBN,CAAO,EAAG,QAAO;AAAA,EAEvC,CAAC,GACKO,IAAcC,EAAmC,IAAI;AAG3D,SAAAC,EAAU,MACD,MAAM;AACX,IAAKF,EAAY,WACjBN,EAASM,EAAY,QAAQ,UAAU;AAAA,EACzC,GACC,CAAA,CAAE,GAGH,gBAAAG,EAAC,OAAA,EAAI,WAAU,IACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC,EAAY;AAAA,MAAZ;AAAA,QACC,WAAU;AAAA,QACV,eAAe,CAACC,MAAUV,EAAQU,CAAoB;AAAA,QACtD,MAAK;AAAA,QACL,OAAOX;AAAA,QAEN,UAAAJ,EAAc,IAAI,CAACI,MAClB,gBAAAS;AAAA,UAACC,EAAY;AAAA,UAAZ;AAAA,YACC,WAAU;AAAA,YAEV,OAAOV;AAAAA,YAEN,UAAAA;AAAAA,UAAA;AAAA,UAHIA;AAAAA,QAAA,CAKR;AAAA,MAAA;AAAA,IAAA;AAAA,IAGH,gBAAAS,EAAC,OAAA,EAAI,WAAU,OACZ,gBAAS,YACR,gBAAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,SAASR,EAAgBN,CAAO,IAAIA,IAAU;AAAA,QAC9C,KAAKO;AAAA,QACL,cAAcP,EAAQ;AAAA,MAAA;AAAA,IAAA,EACxB,CAEJ;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"sources":["../../../../../src/components/inputs/variables/pickers/NumericVariablePicker.tsx"],"sourcesContent":["import { ToggleGroup } from 'radix-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport type { NumberElement, PluralElement } from '@/types';\n\nimport { isNumberElement, isPluralElement } from '@/utils/guards';\n\nimport { PluralVariableEditor } from '../editors/PluralVariableEditor';\nimport styles from './NumericVariablePicker.module.css';\n\nconst NUMERIC_TYPES = [\n 'number',\n 'plural',\n // \"selectordinal\"\n] as const;\n\ntype NumericType = (typeof NUMERIC_TYPES)[number];\n\nexport interface NumericVariablePickerProps {\n element: NumberElement | PluralElement;\n onUpdate: (value: string) => void;\n}\n\nexport function NumericVariablePicker({\n element,\n onUpdate,\n}: NumericVariablePickerProps) {\n const [type, setType] = useState<NumericType | undefined>(() => {\n if (isNumberElement(element)) return 'number';\n if (isPluralElement(element)) return 'plural';\n return undefined;\n });\n const getValueRef = useRef<{ getValue: () => string }>(null);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent\n useEffect(() => {\n return () => {\n if (!getValueRef.current) return;\n onUpdate(getValueRef.current.getValue());\n };\n }, []);\n\n return (\n <div>\n <ToggleGroup.Root\n className={styles.toggleGroup}\n onValueChange={(value) => setType(value as NumericType)}\n type=\"single\"\n value={type}\n >\n {NUMERIC_TYPES.map((type) => (\n <ToggleGroup.Item\n className={styles.toggleItem}\n key={type}\n value={type}\n >\n {type}\n </ToggleGroup.Item>\n ))}\n </ToggleGroup.Root>\n\n <div className={styles.content}>\n {type === 'plural' && (\n <PluralVariableEditor\n element={isPluralElement(element) ? element : undefined}\n ref={getValueRef}\n variableName={element.value}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["ToggleGroup","useEffect","useRef","useState","isNumberElement","isPluralElement","PluralVariableEditor","styles","NUMERIC_TYPES","NumericVariablePicker","element","onUpdate","type","setType","undefined","getValueRef","current","getValue","div","Root","className","toggleGroup","onValueChange","value","map","Item","toggleItem","content","ref","variableName"],"mappings":";AAAA,SAASA,WAAW,QAAQ,WAAW;AACvC,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AAGpD,SAASC,eAAe,EAAEC,eAAe,QAAQ,iBAAiB;AAElE,SAASC,oBAAoB,QAAQ,kCAAkC;AACvE,OAAOC,YAAY,qCAAqC;AAExD,MAAMC,gBAAgB;IACpB;IACA;CAED;AASD,OAAO,SAASC,sBAAsB,EACpCC,OAAO,EACPC,QAAQ,EACmB;IAC3B,MAAM,CAACC,MAAMC,QAAQ,GAAGV,SAAkC;QACxD,IAAIC,gBAAgBM,UAAU,OAAO;QACrC,IAAIL,gBAAgBK,UAAU,OAAO;QACrC,OAAOI;IACT;IACA,MAAMC,cAAcb,OAAmC;IAEvD,0EAA0E;IAC1ED,UAAU;QACR,OAAO;YACL,IAAI,CAACc,YAAYC,OAAO,EAAE;YAC1BL,SAASI,YAAYC,OAAO,CAACC,QAAQ;QACvC;IACF,GAAG,EAAE;IAEL,qBACE,MAACC;;0BACC,KAAClB,YAAYmB,IAAI;gBACfC,WAAWb,OAAOc,WAAW;gBAC7BC,eAAe,CAACC,QAAUV,QAAQU;gBAClCX,MAAK;gBACLW,OAAOX;0BAENJ,cAAcgB,GAAG,CAAC,CAACZ,qBAClB,KAACZ,YAAYyB,IAAI;wBACfL,WAAWb,OAAOmB,UAAU;wBAE5BH,OAAOX;kCAENA;uBAHIA;;0BAQX,KAACM;gBAAIE,WAAWb,OAAOoB,OAAO;0BAC3Bf,SAAS,0BACR,KAACN;oBACCI,SAASL,gBAAgBK,WAAWA,UAAUI;oBAC9Cc,KAAKb;oBACLc,cAAcnB,QAAQa,KAAK;;;;;AAMvC"}
@@ -0,0 +1,27 @@
1
+ .toggleGroup {
2
+ display: flex;
3
+ background-color: var(--theme-elevation-100);
4
+ }
5
+
6
+ .toggleItem {
7
+ flex: 1;
8
+ border: none;
9
+ }
10
+
11
+ .toggleItem[data-state="off"] {
12
+ cursor: pointer;
13
+ opacity: 0.5;
14
+ }
15
+
16
+ .toggleItem[data-state="off"]:hover {
17
+ opacity: 1;
18
+ }
19
+
20
+ .toggleItem[data-state="on"] {
21
+ background-color: var(--theme-elevation-800);
22
+ color: var(--theme-elevation-0);
23
+ }
24
+
25
+ .content {
26
+ padding: 0.75rem;
27
+ }
@@ -1,4 +1,4 @@
1
- import { DateElement, TimeElement } from '../../../../types';
1
+ import type { DateElement, TimeElement } from '../../../../types';
2
2
  export interface TemporalElementEditorProps {
3
3
  element: DateElement | TimeElement;
4
4
  onUpdate: (value: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"TemporalElementEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/pickers/TemporalElementEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAWxD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,2CAqD5B"}
1
+ {"version":3,"file":"TemporalElementEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/pickers/TemporalElementEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAYxD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,2CAqD5B"}
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ToggleGroup } from 'radix-ui';
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { isDateElement, isTimeElement } from '../../../../utils/guards';
5
+ import { DateVariableEditor } from '../editors/DateVariableEditor';
6
+ import { TimeElementEditor } from '../editors/TimeVariableEditor';
7
+ import styles from './TemporalElementEditor.module.css';
8
+ const TEMPORAL_TYPES = [
9
+ 'date',
10
+ 'time'
11
+ ];
12
+ export function TemporalElementEditor({ element, onUpdate }) {
13
+ const [type, setType] = useState(()=>{
14
+ if (isDateElement(element)) return 'date';
15
+ if (isTimeElement(element)) return 'time';
16
+ return undefined;
17
+ });
18
+ const getValueRef = useRef(null);
19
+ // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent
20
+ useEffect(()=>{
21
+ return ()=>{
22
+ if (!getValueRef.current) return;
23
+ onUpdate(getValueRef.current.getValue());
24
+ };
25
+ }, []);
26
+ return /*#__PURE__*/ _jsxs("div", {
27
+ children: [
28
+ /*#__PURE__*/ _jsx(ToggleGroup.Root, {
29
+ className: styles.toggleGroup,
30
+ onValueChange: (value)=>setType(value),
31
+ type: "single",
32
+ value: type,
33
+ children: TEMPORAL_TYPES.map((type)=>/*#__PURE__*/ _jsx(ToggleGroup.Item, {
34
+ className: styles.toggleItem,
35
+ value: type,
36
+ children: type
37
+ }, type))
38
+ }),
39
+ /*#__PURE__*/ _jsxs("div", {
40
+ className: styles.content,
41
+ children: [
42
+ type === 'date' && /*#__PURE__*/ _jsx(DateVariableEditor, {
43
+ element: isDateElement(element) ? element : undefined,
44
+ name: element.value,
45
+ ref: getValueRef
46
+ }),
47
+ type === 'time' && /*#__PURE__*/ _jsx(TimeElementEditor, {
48
+ element: isTimeElement(element) ? element : undefined,
49
+ name: element.value,
50
+ ref: getValueRef
51
+ })
52
+ ]
53
+ })
54
+ ]
55
+ });
56
+ }
57
+
58
+ //# sourceMappingURL=TemporalElementEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/inputs/variables/pickers/TemporalElementEditor.tsx"],"sourcesContent":["import { ToggleGroup } from 'radix-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport type { DateElement, TimeElement } from '@/types';\n\nimport { isDateElement, isTimeElement } from '@/utils/guards';\n\nimport { DateVariableEditor } from '../editors/DateVariableEditor';\nimport { TimeElementEditor } from '../editors/TimeVariableEditor';\nimport styles from './TemporalElementEditor.module.css';\n\nconst TEMPORAL_TYPES = ['date', 'time'] as const;\n\ntype TemporalType = (typeof TEMPORAL_TYPES)[number];\n\nexport interface TemporalElementEditorProps {\n element: DateElement | TimeElement;\n onUpdate: (value: string) => void;\n}\n\nexport function TemporalElementEditor({\n element,\n onUpdate,\n}: TemporalElementEditorProps) {\n const [type, setType] = useState<TemporalType | undefined>(() => {\n if (isDateElement(element)) return 'date';\n if (isTimeElement(element)) return 'time';\n return undefined;\n });\n const getValueRef = useRef<{ getValue: () => string }>(null);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffectEvent\n useEffect(() => {\n return () => {\n if (!getValueRef.current) return;\n onUpdate(getValueRef.current.getValue());\n };\n }, []);\n\n return (\n <div>\n <ToggleGroup.Root\n className={styles.toggleGroup}\n onValueChange={(value) => setType(value as TemporalType)}\n type=\"single\"\n value={type}\n >\n {TEMPORAL_TYPES.map((type) => (\n <ToggleGroup.Item\n className={styles.toggleItem}\n key={type}\n value={type}\n >\n {type}\n </ToggleGroup.Item>\n ))}\n </ToggleGroup.Root>\n\n <div className={styles.content}>\n {type === 'date' && (\n <DateVariableEditor\n element={isDateElement(element) ? element : undefined}\n name={element.value}\n ref={getValueRef}\n />\n )}\n {type === 'time' && (\n <TimeElementEditor\n element={isTimeElement(element) ? element : undefined}\n name={element.value}\n ref={getValueRef}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["ToggleGroup","useEffect","useRef","useState","isDateElement","isTimeElement","DateVariableEditor","TimeElementEditor","styles","TEMPORAL_TYPES","TemporalElementEditor","element","onUpdate","type","setType","undefined","getValueRef","current","getValue","div","Root","className","toggleGroup","onValueChange","value","map","Item","toggleItem","content","name","ref"],"mappings":";AAAA,SAASA,WAAW,QAAQ,WAAW;AACvC,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AAGpD,SAASC,aAAa,EAAEC,aAAa,QAAQ,iBAAiB;AAE9D,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,OAAOC,YAAY,qCAAqC;AAExD,MAAMC,iBAAiB;IAAC;IAAQ;CAAO;AASvC,OAAO,SAASC,sBAAsB,EACpCC,OAAO,EACPC,QAAQ,EACmB;IAC3B,MAAM,CAACC,MAAMC,QAAQ,GAAGX,SAAmC;QACzD,IAAIC,cAAcO,UAAU,OAAO;QACnC,IAAIN,cAAcM,UAAU,OAAO;QACnC,OAAOI;IACT;IACA,MAAMC,cAAcd,OAAmC;IAEvD,0EAA0E;IAC1ED,UAAU;QACR,OAAO;YACL,IAAI,CAACe,YAAYC,OAAO,EAAE;YAC1BL,SAASI,YAAYC,OAAO,CAACC,QAAQ;QACvC;IACF,GAAG,EAAE;IAEL,qBACE,MAACC;;0BACC,KAACnB,YAAYoB,IAAI;gBACfC,WAAWb,OAAOc,WAAW;gBAC7BC,eAAe,CAACC,QAAUV,QAAQU;gBAClCX,MAAK;gBACLW,OAAOX;0BAENJ,eAAegB,GAAG,CAAC,CAACZ,qBACnB,KAACb,YAAY0B,IAAI;wBACfL,WAAWb,OAAOmB,UAAU;wBAE5BH,OAAOX;kCAENA;uBAHIA;;0BAQX,MAACM;gBAAIE,WAAWb,OAAOoB,OAAO;;oBAC3Bf,SAAS,wBACR,KAACP;wBACCK,SAASP,cAAcO,WAAWA,UAAUI;wBAC5Cc,MAAMlB,QAAQa,KAAK;wBACnBM,KAAKd;;oBAGRH,SAAS,wBACR,KAACN;wBACCI,SAASN,cAAcM,WAAWA,UAAUI;wBAC5Cc,MAAMlB,QAAQa,KAAK;wBACnBM,KAAKd;;;;;;AAMjB"}
@@ -0,0 +1,27 @@
1
+ .toggleGroup {
2
+ display: flex;
3
+ background-color: var(--theme-elevation-100);
4
+ }
5
+
6
+ .toggleItem {
7
+ flex: 1;
8
+ border: none;
9
+ }
10
+
11
+ .toggleItem[data-state="off"] {
12
+ cursor: pointer;
13
+ opacity: 0.5;
14
+ }
15
+
16
+ .toggleItem[data-state="off"]:hover {
17
+ opacity: 1;
18
+ }
19
+
20
+ .toggleItem[data-state="on"] {
21
+ background-color: var(--theme-elevation-800);
22
+ color: var(--theme-elevation-0);
23
+ }
24
+
25
+ .content {
26
+ padding: 0.75rem;
27
+ }
@@ -1,10 +1,10 @@
1
- import { MessageSchema } from '../../types';
1
+ import type { MessageSchema } from '../../types';
2
2
  interface MessageFieldProps {
3
3
  schema: MessageSchema;
4
4
  messageKey: string;
5
5
  path: string;
6
- className?: string;
6
+ hidden?: boolean;
7
7
  }
8
- export declare function MessageField({ schema, messageKey, path, className, }: MessageFieldProps): React.ReactNode;
8
+ export declare function MessageField({ schema, messageKey, path, hidden, }: MessageFieldProps): React.ReactNode;
9
9
  export {};
10
10
  //# sourceMappingURL=MessageField.d.ts.map