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.
- package/README.md +62 -221
- package/dist/components/MessageController.d.ts +4 -6
- package/dist/components/MessageController.d.ts.map +1 -1
- package/dist/components/MessageController.js +25 -41
- package/dist/components/MessageController.js.map +1 -1
- package/dist/components/MessageFormContext.d.ts +29 -0
- package/dist/components/MessageFormContext.d.ts.map +1 -0
- package/dist/components/MessageFormContext.js +30 -0
- package/dist/components/MessageFormContext.js.map +1 -0
- package/dist/components/MessagesForm.d.ts +2 -2
- package/dist/components/MessagesForm.d.ts.map +1 -1
- package/dist/components/MessagesForm.js +126 -112
- package/dist/components/MessagesForm.js.map +1 -1
- package/dist/components/MessagesForm.module.css +41 -0
- package/dist/{exports/link.d.ts → components/MessagesLink.d.ts} +3 -3
- package/dist/components/MessagesLink.d.ts.map +1 -0
- package/dist/components/MessagesLink.js +19 -0
- package/dist/components/MessagesLink.js.map +1 -0
- package/dist/components/MessagesView.d.ts +10 -0
- package/dist/components/MessagesView.d.ts.map +1 -0
- package/dist/components/MessagesView.js +48 -0
- package/dist/components/MessagesView.js.map +1 -0
- package/dist/components/actions/JsonImport.d.ts.map +1 -1
- package/dist/components/actions/JsonImport.js +68 -61
- package/dist/components/actions/JsonImport.js.map +1 -1
- package/dist/components/actions/JsonImport.module.css +14 -0
- package/dist/components/actions/Move.d.ts.map +1 -1
- package/dist/components/actions/Move.js +41 -0
- package/dist/components/actions/Move.js.map +1 -0
- package/dist/components/actions/Move.module.css +8 -0
- package/dist/components/inputs/InputWrapper.d.ts +1 -1
- package/dist/components/inputs/InputWrapper.d.ts.map +1 -1
- package/dist/components/inputs/InputWrapper.js +31 -29
- package/dist/components/inputs/InputWrapper.js.map +1 -1
- package/dist/components/inputs/InputWrapper.module.css +34 -0
- package/dist/components/inputs/LexicalInput.d.ts +3 -3
- package/dist/components/inputs/LexicalInput.js +86 -0
- package/dist/components/inputs/LexicalInput.js.map +1 -0
- package/dist/components/inputs/MessageInput.d.ts +2 -2
- package/dist/components/inputs/MessageInput.d.ts.map +1 -1
- package/dist/components/inputs/MessageInput.js +110 -37
- package/dist/components/inputs/MessageInput.js.map +1 -1
- package/dist/components/inputs/MessageInput.module.css +25 -0
- package/dist/components/inputs/variables/VariableChip.d.ts +8 -2
- package/dist/components/inputs/variables/VariableChip.d.ts.map +1 -1
- package/dist/components/inputs/variables/VariableChip.js +86 -64
- package/dist/components/inputs/variables/VariableChip.js.map +1 -1
- package/dist/components/inputs/variables/VariableChip.module.css +66 -0
- package/dist/components/inputs/variables/VariableIcon.d.ts +1 -1
- package/dist/components/inputs/variables/VariableIcon.d.ts.map +1 -1
- package/dist/components/inputs/variables/VariableIcon.js +35 -0
- package/dist/components/inputs/variables/VariableIcon.js.map +1 -0
- package/dist/components/inputs/variables/VariableNode.d.ts +11 -0
- package/dist/components/inputs/variables/VariableNode.d.ts.map +1 -0
- package/dist/components/inputs/variables/VariableNode.js +36 -0
- package/dist/components/inputs/variables/VariableNode.js.map +1 -0
- package/dist/components/inputs/variables/VariableSuggestion.module.css +34 -0
- package/dist/components/inputs/variables/editors/DateVariableEditor.d.ts +2 -2
- package/dist/components/inputs/variables/editors/DateVariableEditor.d.ts.map +1 -1
- package/dist/components/inputs/variables/editors/DateVariableEditor.js +15 -0
- package/dist/components/inputs/variables/editors/DateVariableEditor.js.map +1 -0
- package/dist/components/inputs/variables/editors/PluralVariableEditor.d.ts +1 -1
- package/dist/components/inputs/variables/editors/PluralVariableEditor.d.ts.map +1 -1
- package/dist/components/inputs/variables/editors/PluralVariableEditor.js +191 -172
- package/dist/components/inputs/variables/editors/PluralVariableEditor.js.map +1 -1
- package/dist/components/inputs/variables/editors/PluralVariableEditor.module.css +149 -0
- package/dist/components/inputs/variables/editors/SelectVariableEditor.d.ts +1 -1
- package/dist/components/inputs/variables/editors/SelectVariableEditor.d.ts.map +1 -1
- package/dist/components/inputs/variables/editors/SelectVariableEditor.js +58 -52
- package/dist/components/inputs/variables/editors/SelectVariableEditor.js.map +1 -1
- package/dist/components/inputs/variables/editors/SelectVariableEditor.module.css +25 -0
- package/dist/components/inputs/variables/editors/TagVariableEditor.d.ts +1 -1
- package/dist/components/inputs/variables/editors/TagVariableEditor.d.ts.map +1 -1
- package/dist/components/inputs/variables/editors/TagVariableEditor.js +36 -32
- package/dist/components/inputs/variables/editors/TagVariableEditor.js.map +1 -1
- package/dist/components/inputs/variables/editors/TagVariableEditor.module.css +7 -0
- package/dist/components/inputs/variables/editors/TimeVariableEditor.d.ts +2 -2
- package/dist/components/inputs/variables/editors/TimeVariableEditor.d.ts.map +1 -1
- package/dist/components/inputs/variables/editors/TimeVariableEditor.js +15 -0
- package/dist/components/inputs/variables/editors/TimeVariableEditor.js.map +1 -0
- package/dist/components/inputs/variables/pickers/NumericVariablePicker.d.ts +1 -1
- package/dist/components/inputs/variables/pickers/NumericVariablePicker.d.ts.map +1 -1
- package/dist/components/inputs/variables/pickers/NumericVariablePicker.js +48 -51
- package/dist/components/inputs/variables/pickers/NumericVariablePicker.js.map +1 -1
- package/dist/components/inputs/variables/pickers/NumericVariablePicker.module.css +27 -0
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.d.ts +1 -1
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.d.ts.map +1 -1
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.js +58 -0
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.js.map +1 -0
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.module.css +27 -0
- package/dist/components/layout/MessageField.d.ts +3 -3
- package/dist/components/layout/MessageField.d.ts.map +1 -1
- package/dist/components/layout/MessageField.js +56 -56
- package/dist/components/layout/MessageField.js.map +1 -1
- package/dist/components/layout/MessageField.module.css +19 -0
- package/dist/components/layout/MessagesTabs.d.ts +1 -1
- package/dist/components/layout/MessagesTabs.d.ts.map +1 -1
- package/dist/components/layout/MessagesTabs.js +40 -43
- package/dist/components/layout/MessagesTabs.js.map +1 -1
- package/dist/components/layout/MessagesTabs.module.css +21 -0
- package/dist/components/layout/MessagesTree.d.ts +3 -2
- package/dist/components/layout/MessagesTree.d.ts.map +1 -1
- package/dist/components/layout/MessagesTree.js +65 -67
- package/dist/components/layout/MessagesTree.js.map +1 -1
- package/dist/components/layout/MessagesTree.module.css +36 -0
- package/dist/const.d.ts +8 -9
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +16 -13
- package/dist/const.js.map +1 -1
- package/dist/endpoints/get-messages.d.ts +1 -1
- package/dist/endpoints/get-messages.d.ts.map +1 -1
- package/dist/endpoints/get-messages.js +7 -13
- package/dist/endpoints/get-messages.js.map +1 -1
- package/dist/endpoints/set-messages.d.ts +1 -1
- package/dist/endpoints/set-messages.d.ts.map +1 -1
- package/dist/endpoints/set-messages.js +61 -45
- package/dist/endpoints/set-messages.js.map +1 -1
- package/dist/entities.d.ts +5 -0
- package/dist/entities.d.ts.map +1 -0
- package/dist/entities.js +38 -0
- package/dist/entities.js.map +1 -0
- package/dist/exports/client.d.ts +2 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +3 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/rsc.d.ts +2 -2
- package/dist/exports/rsc.d.ts.map +1 -1
- package/dist/exports/rsc.js +4 -7
- package/dist/exports/rsc.js.map +1 -1
- package/dist/hooks.d.ts +4 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +24 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +20 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +64 -80
- package/dist/index.js.map +1 -1
- package/dist/payload-types.d.ts +258 -0
- package/dist/payload-types.d.ts.map +1 -0
- package/dist/payload-types.js +15 -0
- package/dist/payload-types.js.map +1 -0
- package/dist/requests/fetchMessageFromAPI.d.ts +10 -0
- package/dist/requests/fetchMessageFromAPI.d.ts.map +1 -0
- package/dist/requests/fetchMessageFromAPI.js +15 -0
- package/dist/requests/fetchMessageFromAPI.js.map +1 -0
- package/dist/requests/fetchMessageFromPayload.d.ts +3 -0
- package/dist/requests/fetchMessageFromPayload.d.ts.map +1 -0
- package/dist/requests/fetchMessageFromPayload.js +29 -0
- package/dist/requests/fetchMessageFromPayload.js.map +1 -0
- package/dist/requests/fetchMessages.d.ts +3 -11
- package/dist/requests/fetchMessages.d.ts.map +1 -1
- package/dist/requests/fetchMessages.js +10 -40
- package/dist/requests/fetchMessages.js.map +1 -1
- package/dist/types.d.ts +7 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/config.d.ts +3 -3
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +27 -17
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/error-handling.js +14 -12
- package/dist/utils/error-handling.js.map +1 -1
- package/dist/utils/format.d.ts +1 -1
- package/dist/utils/format.js +21 -13
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/guards.d.ts +2 -1
- package/dist/utils/guards.js +8 -18
- package/dist/utils/guards.js.map +1 -1
- package/dist/utils/icu-tranform.d.ts +13 -18
- package/dist/utils/icu-tranform.d.ts.map +1 -1
- package/dist/utils/icu-tranform.js +140 -108
- package/dist/utils/icu-tranform.js.map +1 -1
- package/dist/utils/sanitize.d.ts +1 -1
- package/dist/utils/sanitize.js +36 -17
- package/dist/utils/sanitize.js.map +1 -1
- package/dist/utils/schema.d.ts +1 -3
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +42 -34
- package/dist/utils/schema.js.map +1 -1
- package/dist/utils/validate.d.ts +2 -2
- package/dist/utils/validate.js +52 -53
- package/dist/utils/validate.js.map +1 -1
- package/package.json +35 -52
- package/dist/components/inputs/variables/VariableSuggestion.d.ts +0 -9
- package/dist/components/inputs/variables/VariableSuggestion.d.ts.map +0 -1
- package/dist/components/inputs/variables/VariableSuggestion.js +0 -41
- package/dist/components/inputs/variables/VariableSuggestion.js.map +0 -1
- package/dist/components/inputs/variables/extension.d.ts +0 -4
- package/dist/components/inputs/variables/extension.d.ts.map +0 -1
- package/dist/components/inputs/variables/extension.js +0 -93
- package/dist/components/inputs/variables/extension.js.map +0 -1
- package/dist/context/messages-form.d.ts +0 -29
- package/dist/context/messages-form.d.ts.map +0 -1
- package/dist/context/messages-form.js +0 -26
- package/dist/context/messages-form.js.map +0 -1
- package/dist/exports/link.d.ts.map +0 -1
- package/dist/exports/link.js +0 -21
- package/dist/exports/link.js.map +0 -1
- package/dist/exports/view.d.ts +0 -10
- package/dist/exports/view.d.ts.map +0 -1
- package/dist/exports/view.js +0 -53
- package/dist/exports/view.js.map +0 -1
- package/dist/styles.css +0 -1
- package/dist/utils/cn.d.ts +0 -3
- package/dist/utils/cn.d.ts.map +0 -1
- package/dist/utils/cn.js +0 -9
- package/dist/utils/cn.js.map +0 -1
|
@@ -1,53 +1,59 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=SelectVariableEditor.js.map
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=SelectVariableEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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 +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;
|
|
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
|
|
2
|
-
import {
|
|
3
|
-
import { useForm
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=TagVariableEditor.js.map
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=TagVariableEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -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({
|
|
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,
|
|
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 +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;
|
|
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 {
|
|
2
|
-
import { ToggleGroup
|
|
3
|
-
import {
|
|
4
|
-
import { isNumberElement
|
|
5
|
-
import { PluralVariableEditor
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=NumericVariablePicker.js.map
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=NumericVariablePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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 +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;
|
|
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
|
-
|
|
6
|
+
hidden?: boolean;
|
|
7
7
|
}
|
|
8
|
-
export declare function MessageField({ schema, messageKey, path,
|
|
8
|
+
export declare function MessageField({ schema, messageKey, path, hidden, }: MessageFieldProps): React.ReactNode;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=MessageField.d.ts.map
|