@intlayer/design-system 5.8.0-canary.0 → 5.8.1
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/dist/.vite/manifest.json +45 -37
- package/dist/components/Breadcrumb/index.cjs +2 -3
- package/dist/components/Breadcrumb/index.cjs.map +1 -1
- package/dist/components/Breadcrumb/index.d.ts.map +1 -1
- package/dist/components/Breadcrumb/index.mjs +3 -4
- package/dist/components/Breadcrumb/index.mjs.map +1 -1
- package/dist/components/CopyButton/CopyButton.content.cjs.map +1 -0
- package/dist/components/CopyButton/CopyButton.content.d.ts.map +1 -0
- package/dist/components/CopyButton/CopyButton.content.mjs.map +1 -0
- package/dist/components/CopyButton/index.cjs +1 -2
- package/dist/components/CopyButton/index.cjs.map +1 -1
- package/dist/components/CopyButton/index.d.ts.map +1 -1
- package/dist/components/CopyButton/index.mjs +2 -3
- package/dist/components/CopyButton/index.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.cjs +3 -7
- package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +4 -8
- package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs +1 -4
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +2 -5
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.cjs +1 -2
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs +2 -3
- package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs +1 -2
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +2 -3
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +2 -24
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.cjs +1 -2
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs +2 -3
- package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs +1 -5
- package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +2 -6
- package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs +1 -2
- package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +2 -3
- package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/NodeTypeSelector.cjs +1 -2
- package/dist/components/DictionaryFieldEditor/NodeTypeSelector.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/NodeTypeSelector.mjs +2 -3
- package/dist/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs +1 -2
- package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +2 -3
- package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +2 -24
- package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/StructureView/StructureView.cjs +2 -3
- package/dist/components/DictionaryFieldEditor/StructureView/StructureView.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/StructureView/StructureView.mjs +3 -4
- package/dist/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.cjs +1 -1
- package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.mjs +1 -1
- package/dist/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.cjs +1 -4
- package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.cjs.map +1 -1
- package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
- package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs +2 -5
- package/dist/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
- package/dist/components/ExpandCollapse/ExpandCollapse.cjs +56 -0
- package/dist/components/ExpandCollapse/ExpandCollapse.cjs.map +1 -0
- package/dist/components/ExpandCollapse/ExpandCollapse.d.ts +9 -0
- package/dist/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -0
- package/dist/components/ExpandCollapse/ExpandCollapse.mjs +56 -0
- package/dist/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -0
- package/dist/components/ExpandCollapse/expandCollapse.content.cjs +41 -0
- package/dist/components/ExpandCollapse/expandCollapse.content.cjs.map +1 -0
- package/dist/components/ExpandCollapse/expandCollapse.content.d.ts +40 -0
- package/dist/components/ExpandCollapse/expandCollapse.content.d.ts.map +1 -0
- package/dist/components/ExpandCollapse/expandCollapse.content.mjs +42 -0
- package/dist/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -0
- package/dist/components/ExpandCollapse/index.cjs +5 -0
- package/dist/components/ExpandCollapse/index.cjs.map +1 -0
- package/dist/components/ExpandCollapse/index.d.ts +2 -0
- package/dist/components/ExpandCollapse/index.d.ts.map +1 -0
- package/dist/components/ExpandCollapse/index.mjs +5 -0
- package/dist/components/ExpandCollapse/index.mjs.map +1 -0
- package/dist/components/IDE/Code.cjs +12 -1
- package/dist/components/IDE/Code.cjs.map +1 -1
- package/dist/components/IDE/Code.d.ts +1 -0
- package/dist/components/IDE/Code.d.ts.map +1 -1
- package/dist/components/IDE/Code.mjs +12 -1
- package/dist/components/IDE/Code.mjs.map +1 -1
- package/dist/components/IDE/CopyCode.cjs +1 -2
- package/dist/components/IDE/CopyCode.cjs.map +1 -1
- package/dist/components/IDE/CopyCode.d.ts.map +1 -1
- package/dist/components/IDE/CopyCode.mjs +2 -3
- package/dist/components/IDE/CopyCode.mjs.map +1 -1
- package/dist/components/Loader/index.content.d.ts +2 -24
- package/dist/components/Loader/index.content.d.ts.map +1 -1
- package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.cjs +1 -2
- package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.cjs.map +1 -1
- package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
- package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +2 -3
- package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
- package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.cjs +1 -2
- package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.cjs.map +1 -1
- package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
- package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +2 -3
- package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
- package/dist/components/MarkDownRender/index.cjs +7 -0
- package/dist/components/MarkDownRender/index.cjs.map +1 -1
- package/dist/components/MarkDownRender/index.d.ts.map +1 -1
- package/dist/components/MarkDownRender/index.mjs +7 -0
- package/dist/components/MarkDownRender/index.mjs.map +1 -1
- package/dist/components/Modal/Modal.cjs +1 -1
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.mjs +1 -1
- package/dist/components/Modal/Modal.mjs.map +1 -1
- package/dist/components/Navbar/DesktopNavbar.cjs +1 -1
- package/dist/components/Navbar/DesktopNavbar.cjs.map +1 -1
- package/dist/components/Navbar/DesktopNavbar.mjs +1 -1
- package/dist/components/Navbar/DesktopNavbar.mjs.map +1 -1
- package/dist/components/Navbar/index.cjs +1 -1
- package/dist/components/Navbar/index.cjs.map +1 -1
- package/dist/components/Navbar/index.mjs +1 -1
- package/dist/components/Navbar/index.mjs.map +1 -1
- package/dist/components/Popover/index.cjs.map +1 -1
- package/dist/components/Popover/index.d.ts +2 -2
- package/dist/components/Popover/index.d.ts.map +1 -1
- package/dist/components/Popover/index.mjs.map +1 -1
- package/dist/components/SocialNetworks/index.cjs +1 -1
- package/dist/components/SocialNetworks/index.cjs.map +1 -1
- package/dist/components/SocialNetworks/index.mjs +1 -1
- package/dist/components/SocialNetworks/index.mjs.map +1 -1
- package/dist/components/Table/Table.cjs +4 -50
- package/dist/components/Table/Table.cjs.map +1 -1
- package/dist/components/Table/Table.d.ts +3 -1
- package/dist/components/Table/Table.d.ts.map +1 -1
- package/dist/components/Table/Table.mjs +5 -51
- package/dist/components/Table/Table.mjs.map +1 -1
- package/dist/components/Table/table.content.cjs +0 -30
- package/dist/components/Table/table.content.cjs.map +1 -1
- package/dist/components/Table/table.content.d.ts +0 -66
- package/dist/components/Table/table.content.d.ts.map +1 -1
- package/dist/components/Table/table.content.mjs +0 -30
- package/dist/components/Table/table.content.mjs.map +1 -1
- package/dist/components/index.cjs +2 -0
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.mjs +2 -0
- package/dist/components/index.mjs.map +1 -1
- package/package.json +19 -18
- package/dist/components/IDE/CopyButton.content.cjs.map +0 -1
- package/dist/components/IDE/CopyButton.content.d.ts.map +0 -1
- package/dist/components/IDE/CopyButton.content.mjs.map +0 -1
- /package/dist/components/{IDE → CopyButton}/CopyButton.content.cjs +0 -0
- /package/dist/components/{IDE → CopyButton}/CopyButton.content.d.ts +0 -0
- /package/dist/components/{IDE → CopyButton}/CopyButton.content.mjs +0 -0
package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDictionaryFormSchema.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useDictionaryFormSchema.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.ts"],"sourcesContent":["import { useIntlayer } from 'react-intlayer';\nimport { z } from 'zod/v4';\n\nexport const useDictionarySchema = (projectId: string) => {\n const {\n requiredErrorName,\n invalidTypeErrorName,\n requiredErrorProjectId,\n invalidTypeErrorProjectId,\n } = useIntlayer('dictionary-form-schema');\n\n return z.object({\n key: z\n .string({\n error: (issue) =>\n issue.input === undefined\n ? requiredErrorName.value\n : invalidTypeErrorName.value,\n })\n .min(1, { error: invalidTypeErrorName.value })\n .default(''),\n projectIds: z\n .array(\n z.string({\n error: (issue) =>\n issue.input === undefined\n ? requiredErrorProjectId.value\n : invalidTypeErrorProjectId.value,\n })\n )\n .default([projectId]),\n });\n};\n\nexport type DictionaryFormData = z.infer<\n ReturnType<typeof useDictionarySchema>\n>;\n"],"names":["z.object","z.string","z.array"],"mappings":";;AAGO,MAAM,sBAAsB,CAAC,cAAsB;AACxD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,YAAY,wBAAwB;AAExC,SAAOA,OAAS;AAAA,IACd,KAAKC,OACK;AAAA,MACN,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,kBAAkB,QAClB,qBAAqB;AAAA,IAAA,CAC5B,EACA,IAAI,GAAG,EAAE,OAAO,qBAAqB,MAAA,CAAO,EAC5C,QAAQ,EAAE;AAAA,IACb,YAAYC;AAAAA,MAERD,OAAS;AAAA,QACP,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,uBAAuB,QACvB,0BAA0B;AAAA,MAAA,CACjC;AAAA,IAAA,EAEF,QAAQ,CAAC,SAAS,CAAC;AAAA,EAAA,CACvB;AACH;"}
|
|
@@ -22,7 +22,6 @@ const components_Form_layout_FormItemLayout = require("../../../Form-DJrUK3mm.cj
|
|
|
22
22
|
const components_Loader_index = require("../../Loader/index.cjs");
|
|
23
23
|
const components_Select_Multiselect = require("../../Select/Multiselect.cjs");
|
|
24
24
|
require("../../Select/Select.cjs");
|
|
25
|
-
const components_DictionaryFieldEditor_DictionaryDetails_dictionaryDetails_content = require("./dictionaryDetails.content.cjs");
|
|
26
25
|
const components_DictionaryFieldEditor_DictionaryDetails_useDictionaryDetailsSchema = require("./useDictionaryDetailsSchema.cjs");
|
|
27
26
|
const DictionaryDetailsForm = ({
|
|
28
27
|
dictionary
|
|
@@ -45,7 +44,7 @@ const DictionaryDetailsForm = ({
|
|
|
45
44
|
projectInput,
|
|
46
45
|
tagsSelect,
|
|
47
46
|
auditButton
|
|
48
|
-
} = reactIntlayer.
|
|
47
|
+
} = reactIntlayer.useIntlayer("dictionary-details");
|
|
49
48
|
const { auditContentDeclaration, isLoading: isAuditing } = hooks_intlayerAPIHooks.useAuditContentDeclarationMetadata();
|
|
50
49
|
const updatedDictionary = editedContent?.[dictionary.key];
|
|
51
50
|
ReactExports.useEffect(() => {
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DictionaryDetailsForm.cjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport { useEditedContent } from '@intlayer/editor-react';\nimport { WandSparkles } from 'lucide-react';\nimport { type FC, useEffect } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAuditContentDeclarationMetadata,\n useGetProjects,\n useGetTags,\n} from '../../../hooks';\nimport { useAuth } from '../../../hooks/useAuth';\nimport { ButtonColor, ButtonVariant } from '../../Button';\nimport { Container } from '../../Container';\nimport { Form, useForm } from '../../Form';\nimport { Loader } from '../../Loader';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryDetailsContent } from './dictionaryDetails.content';\nimport { useDictionaryDetailsSchema } from './useDictionaryDetailsSchema';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n};\n\nexport const DictionaryDetailsForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { data: projects, isLoading: isLoadingProjects } = useGetProjects();\n const { data: tags } = useGetTags();\n\n const DictionaryDetailsSchema = useDictionaryDetailsSchema(\n String(project?.id)\n );\n const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {\n defaultValues: dictionary,\n });\n const { editedContent, setEditedDictionary } = useEditedContent();\n const {\n titleInput,\n keyInput,\n descriptionInput,\n\n projectInput,\n tagsSelect,\n auditButton,\n } = useDictionary(dictionaryDetailsContent);\n const { auditContentDeclaration, isLoading: isAuditing } =\n useAuditContentDeclarationMetadata();\n const updatedDictionary = editedContent?.[dictionary.key];\n\n useEffect(() => {\n form.reset(dictionary);\n }, [dictionary, form?.reset]);\n\n useEffect(() => {\n if (typeof updatedDictionary === 'undefined') {\n form.reset(dictionary);\n }\n }, [updatedDictionary]);\n\n const handleOnAuditFile = async () => {\n const dictionaryToAudit = {\n ...dictionary,\n ...updatedDictionary,\n };\n\n await auditContentDeclaration({\n fileContent: JSON.stringify(dictionaryToAudit),\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const auditedDictionary = JSON.parse(response.data.fileContent) as\n | Partial<Dictionary>\n | undefined;\n\n setEditedDictionary((prev) => ({\n ...prev,\n ...dictionaryToAudit,\n ...auditedDictionary,\n }));\n form.reset({\n ...dictionaryToAudit,\n ...auditedDictionary,\n });\n } catch (error) {\n console.error(error);\n }\n });\n };\n\n return (\n <Container\n background=\"none\"\n border\n roundedSize=\"2xl\"\n className=\"w-full px-5 pb-3 pt-5\"\n >\n <Form\n className=\"flex w-full flex-col gap-8\"\n {...form}\n schema={DictionaryDetailsSchema}\n onChange={(data) =>\n setEditedDictionary((prev) => ({\n ...prev,\n ...data,\n }))\n }\n >\n <div className=\"flex w-full flex-1 gap-8 max-md:flex-col\">\n <Form.EditableFieldInput\n name=\"key\"\n label={keyInput.label}\n placeholder={keyInput.label.value}\n description={keyInput.description}\n disabled={isSubmitting}\n isRequired\n onSave={(value) => {\n form.setValue('key', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n key: value,\n }));\n }}\n />\n <Form.EditableFieldInput\n name=\"title\"\n label={titleInput.label}\n placeholder={titleInput.placeholder.value}\n description={titleInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('title', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n title: value,\n }));\n }}\n />\n </div>\n <Form.EditableFieldTextArea\n name=\"description\"\n label={descriptionInput.label}\n placeholder={descriptionInput.placeholder.value}\n description={descriptionInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('description', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n description: value,\n }));\n }}\n />\n <div className=\"flex size-full flex-1 gap-8 max-md:flex-col\">\n <Form.MultiSelect\n name=\"projectIds\"\n label={projectInput.label.value}\n description={projectInput.description.value}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('projectIds', valueArray);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n projectIds: valueArray,\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {projects?.data?.map((project) => (\n <MultiSelect.Item\n key={String(project.id)}\n value={String(project.id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.MultiSelect\n name=\"tags\"\n label={tagsSelect.label.value}\n description={tagsSelect.description.value}\n onValueChange={(value) => {\n form.setValue('tags', [value].flat());\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n tags: [value].flat(),\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={tagsSelect.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {tags?.data?.map((tag) => (\n <MultiSelect.Item\n key={String(tag.key)}\n value={String(tag.key)}\n >\n {tag.name ?? tag.key}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-end gap-2 max-md:flex-col\">\n <Form.Button\n type=\"button\"\n label={auditButton.label.value}\n Icon={WandSparkles}\n variant={ButtonVariant.OUTLINE}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n onClick={handleOnAuditFile}\n disabled={isSubmitting || isAuditing}\n isLoading={isAuditing}\n >\n {auditButton.text}\n </Form.Button>\n </div>\n </Form>\n </Container>\n );\n};\n"],"names":["useAuth","useGetProjects","useGetTags","useDictionaryDetailsSchema","useForm","useEditedContent","useDictionary","dictionaryDetailsContent","useAuditContentDeclarationMetadata","useEffect","jsx","Container","jsxs","Form","MultiSelect","project","Loader","WandSparkles","ButtonVariant","ButtonColor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DictionaryDetailsForm.cjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport { useEditedContent } from '@intlayer/editor-react';\nimport { WandSparkles } from 'lucide-react';\nimport { type FC, useEffect } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport {\n useAuditContentDeclarationMetadata,\n useGetProjects,\n useGetTags,\n} from '../../../hooks';\nimport { useAuth } from '../../../hooks/useAuth';\nimport { ButtonColor, ButtonVariant } from '../../Button';\nimport { Container } from '../../Container';\nimport { Form, useForm } from '../../Form';\nimport { Loader } from '../../Loader';\nimport { MultiSelect } from '../../Select';\nimport { useDictionaryDetailsSchema } from './useDictionaryDetailsSchema';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n};\n\nexport const DictionaryDetailsForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { data: projects, isLoading: isLoadingProjects } = useGetProjects();\n const { data: tags } = useGetTags();\n\n const DictionaryDetailsSchema = useDictionaryDetailsSchema(\n String(project?.id)\n );\n const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {\n defaultValues: dictionary,\n });\n const { editedContent, setEditedDictionary } = useEditedContent();\n const {\n titleInput,\n keyInput,\n descriptionInput,\n\n projectInput,\n tagsSelect,\n auditButton,\n } = useIntlayer('dictionary-details');\n const { auditContentDeclaration, isLoading: isAuditing } =\n useAuditContentDeclarationMetadata();\n const updatedDictionary = editedContent?.[dictionary.key];\n\n useEffect(() => {\n form.reset(dictionary);\n }, [dictionary, form?.reset]);\n\n useEffect(() => {\n if (typeof updatedDictionary === 'undefined') {\n form.reset(dictionary);\n }\n }, [updatedDictionary]);\n\n const handleOnAuditFile = async () => {\n const dictionaryToAudit = {\n ...dictionary,\n ...updatedDictionary,\n };\n\n await auditContentDeclaration({\n fileContent: JSON.stringify(dictionaryToAudit),\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const auditedDictionary = JSON.parse(response.data.fileContent) as\n | Partial<Dictionary>\n | undefined;\n\n setEditedDictionary((prev) => ({\n ...prev,\n ...dictionaryToAudit,\n ...auditedDictionary,\n }));\n form.reset({\n ...dictionaryToAudit,\n ...auditedDictionary,\n });\n } catch (error) {\n console.error(error);\n }\n });\n };\n\n return (\n <Container\n background=\"none\"\n border\n roundedSize=\"2xl\"\n className=\"w-full px-5 pb-3 pt-5\"\n >\n <Form\n className=\"flex w-full flex-col gap-8\"\n {...form}\n schema={DictionaryDetailsSchema}\n onChange={(data) =>\n setEditedDictionary((prev) => ({\n ...prev,\n ...data,\n }))\n }\n >\n <div className=\"flex w-full flex-1 gap-8 max-md:flex-col\">\n <Form.EditableFieldInput\n name=\"key\"\n label={keyInput.label}\n placeholder={keyInput.label.value}\n description={keyInput.description}\n disabled={isSubmitting}\n isRequired\n onSave={(value) => {\n form.setValue('key', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n key: value,\n }));\n }}\n />\n <Form.EditableFieldInput\n name=\"title\"\n label={titleInput.label}\n placeholder={titleInput.placeholder.value}\n description={titleInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('title', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n title: value,\n }));\n }}\n />\n </div>\n <Form.EditableFieldTextArea\n name=\"description\"\n label={descriptionInput.label}\n placeholder={descriptionInput.placeholder.value}\n description={descriptionInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('description', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n description: value,\n }));\n }}\n />\n <div className=\"flex size-full flex-1 gap-8 max-md:flex-col\">\n <Form.MultiSelect\n name=\"projectIds\"\n label={projectInput.label.value}\n description={projectInput.description.value}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('projectIds', valueArray);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n projectIds: valueArray,\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {projects?.data?.map((project) => (\n <MultiSelect.Item\n key={String(project.id)}\n value={String(project.id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.MultiSelect\n name=\"tags\"\n label={tagsSelect.label.value}\n description={tagsSelect.description.value}\n onValueChange={(value) => {\n form.setValue('tags', [value].flat());\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n tags: [value].flat(),\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={tagsSelect.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {tags?.data?.map((tag) => (\n <MultiSelect.Item\n key={String(tag.key)}\n value={String(tag.key)}\n >\n {tag.name ?? tag.key}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-end gap-2 max-md:flex-col\">\n <Form.Button\n type=\"button\"\n label={auditButton.label.value}\n Icon={WandSparkles}\n variant={ButtonVariant.OUTLINE}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n onClick={handleOnAuditFile}\n disabled={isSubmitting || isAuditing}\n isLoading={isAuditing}\n >\n {auditButton.text}\n </Form.Button>\n </div>\n </Form>\n </Container>\n );\n};\n"],"names":["useAuth","useGetProjects","useGetTags","useDictionaryDetailsSchema","useForm","useEditedContent","useIntlayer","useAuditContentDeclarationMetadata","useEffect","jsx","Container","jsxs","Form","MultiSelect","project","Loader","WandSparkles","ButtonVariant","ButtonColor"],"mappings":"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"}
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DictionaryDetailsForm.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DictionaryDetailsForm.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,OAAO,CAAC;AAe3C,KAAK,sBAAsB,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,sBAAsB,CAsO5D,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useEditedContent } from "@intlayer/editor-react";
|
|
4
4
|
import { WandSparkles } from "lucide-react";
|
|
5
5
|
import { useEffect } from "react";
|
|
6
|
-
import {
|
|
6
|
+
import { useIntlayer } from "react-intlayer";
|
|
7
7
|
import "@intlayer/config/built";
|
|
8
8
|
import "../../../better-auth.CMQ3rA-I-7umXOENE.js";
|
|
9
9
|
import { useGetProjects, useGetTags, useAuditContentDeclarationMetadata } from "../../../hooks/intlayerAPIHooks.mjs";
|
|
@@ -20,7 +20,6 @@ import { F as Form } from "../../../Form-CriPBaZk.js";
|
|
|
20
20
|
import { Loader } from "../../Loader/index.mjs";
|
|
21
21
|
import { MultiSelect } from "../../Select/Multiselect.mjs";
|
|
22
22
|
import "../../Select/Select.mjs";
|
|
23
|
-
import { dictionaryDetailsContent } from "./dictionaryDetails.content.mjs";
|
|
24
23
|
import { useDictionaryDetailsSchema } from "./useDictionaryDetailsSchema.mjs";
|
|
25
24
|
const DictionaryDetailsForm = ({
|
|
26
25
|
dictionary
|
|
@@ -43,7 +42,7 @@ const DictionaryDetailsForm = ({
|
|
|
43
42
|
projectInput,
|
|
44
43
|
tagsSelect,
|
|
45
44
|
auditButton
|
|
46
|
-
} =
|
|
45
|
+
} = useIntlayer("dictionary-details");
|
|
47
46
|
const { auditContentDeclaration, isLoading: isAuditing } = useAuditContentDeclarationMetadata();
|
|
48
47
|
const updatedDictionary = editedContent?.[dictionary.key];
|
|
49
48
|
useEffect(() => {
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DictionaryDetailsForm.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport { useEditedContent } from '@intlayer/editor-react';\nimport { WandSparkles } from 'lucide-react';\nimport { type FC, useEffect } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAuditContentDeclarationMetadata,\n useGetProjects,\n useGetTags,\n} from '../../../hooks';\nimport { useAuth } from '../../../hooks/useAuth';\nimport { ButtonColor, ButtonVariant } from '../../Button';\nimport { Container } from '../../Container';\nimport { Form, useForm } from '../../Form';\nimport { Loader } from '../../Loader';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryDetailsContent } from './dictionaryDetails.content';\nimport { useDictionaryDetailsSchema } from './useDictionaryDetailsSchema';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n};\n\nexport const DictionaryDetailsForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { data: projects, isLoading: isLoadingProjects } = useGetProjects();\n const { data: tags } = useGetTags();\n\n const DictionaryDetailsSchema = useDictionaryDetailsSchema(\n String(project?.id)\n );\n const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {\n defaultValues: dictionary,\n });\n const { editedContent, setEditedDictionary } = useEditedContent();\n const {\n titleInput,\n keyInput,\n descriptionInput,\n\n projectInput,\n tagsSelect,\n auditButton,\n } = useDictionary(dictionaryDetailsContent);\n const { auditContentDeclaration, isLoading: isAuditing } =\n useAuditContentDeclarationMetadata();\n const updatedDictionary = editedContent?.[dictionary.key];\n\n useEffect(() => {\n form.reset(dictionary);\n }, [dictionary, form?.reset]);\n\n useEffect(() => {\n if (typeof updatedDictionary === 'undefined') {\n form.reset(dictionary);\n }\n }, [updatedDictionary]);\n\n const handleOnAuditFile = async () => {\n const dictionaryToAudit = {\n ...dictionary,\n ...updatedDictionary,\n };\n\n await auditContentDeclaration({\n fileContent: JSON.stringify(dictionaryToAudit),\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const auditedDictionary = JSON.parse(response.data.fileContent) as\n | Partial<Dictionary>\n | undefined;\n\n setEditedDictionary((prev) => ({\n ...prev,\n ...dictionaryToAudit,\n ...auditedDictionary,\n }));\n form.reset({\n ...dictionaryToAudit,\n ...auditedDictionary,\n });\n } catch (error) {\n console.error(error);\n }\n });\n };\n\n return (\n <Container\n background=\"none\"\n border\n roundedSize=\"2xl\"\n className=\"w-full px-5 pb-3 pt-5\"\n >\n <Form\n className=\"flex w-full flex-col gap-8\"\n {...form}\n schema={DictionaryDetailsSchema}\n onChange={(data) =>\n setEditedDictionary((prev) => ({\n ...prev,\n ...data,\n }))\n }\n >\n <div className=\"flex w-full flex-1 gap-8 max-md:flex-col\">\n <Form.EditableFieldInput\n name=\"key\"\n label={keyInput.label}\n placeholder={keyInput.label.value}\n description={keyInput.description}\n disabled={isSubmitting}\n isRequired\n onSave={(value) => {\n form.setValue('key', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n key: value,\n }));\n }}\n />\n <Form.EditableFieldInput\n name=\"title\"\n label={titleInput.label}\n placeholder={titleInput.placeholder.value}\n description={titleInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('title', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n title: value,\n }));\n }}\n />\n </div>\n <Form.EditableFieldTextArea\n name=\"description\"\n label={descriptionInput.label}\n placeholder={descriptionInput.placeholder.value}\n description={descriptionInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('description', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n description: value,\n }));\n }}\n />\n <div className=\"flex size-full flex-1 gap-8 max-md:flex-col\">\n <Form.MultiSelect\n name=\"projectIds\"\n label={projectInput.label.value}\n description={projectInput.description.value}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('projectIds', valueArray);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n projectIds: valueArray,\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {projects?.data?.map((project) => (\n <MultiSelect.Item\n key={String(project.id)}\n value={String(project.id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.MultiSelect\n name=\"tags\"\n label={tagsSelect.label.value}\n description={tagsSelect.description.value}\n onValueChange={(value) => {\n form.setValue('tags', [value].flat());\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n tags: [value].flat(),\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={tagsSelect.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {tags?.data?.map((tag) => (\n <MultiSelect.Item\n key={String(tag.key)}\n value={String(tag.key)}\n >\n {tag.name ?? tag.key}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-end gap-2 max-md:flex-col\">\n <Form.Button\n type=\"button\"\n label={auditButton.label.value}\n Icon={WandSparkles}\n variant={ButtonVariant.OUTLINE}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n onClick={handleOnAuditFile}\n disabled={isSubmitting || isAuditing}\n isLoading={isAuditing}\n >\n {auditButton.text}\n </Form.Button>\n </div>\n </Form>\n </Container>\n );\n};\n"],"names":["project"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DictionaryDetailsForm.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport { useEditedContent } from '@intlayer/editor-react';\nimport { WandSparkles } from 'lucide-react';\nimport { type FC, useEffect } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport {\n useAuditContentDeclarationMetadata,\n useGetProjects,\n useGetTags,\n} from '../../../hooks';\nimport { useAuth } from '../../../hooks/useAuth';\nimport { ButtonColor, ButtonVariant } from '../../Button';\nimport { Container } from '../../Container';\nimport { Form, useForm } from '../../Form';\nimport { Loader } from '../../Loader';\nimport { MultiSelect } from '../../Select';\nimport { useDictionaryDetailsSchema } from './useDictionaryDetailsSchema';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n};\n\nexport const DictionaryDetailsForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { data: projects, isLoading: isLoadingProjects } = useGetProjects();\n const { data: tags } = useGetTags();\n\n const DictionaryDetailsSchema = useDictionaryDetailsSchema(\n String(project?.id)\n );\n const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {\n defaultValues: dictionary,\n });\n const { editedContent, setEditedDictionary } = useEditedContent();\n const {\n titleInput,\n keyInput,\n descriptionInput,\n\n projectInput,\n tagsSelect,\n auditButton,\n } = useIntlayer('dictionary-details');\n const { auditContentDeclaration, isLoading: isAuditing } =\n useAuditContentDeclarationMetadata();\n const updatedDictionary = editedContent?.[dictionary.key];\n\n useEffect(() => {\n form.reset(dictionary);\n }, [dictionary, form?.reset]);\n\n useEffect(() => {\n if (typeof updatedDictionary === 'undefined') {\n form.reset(dictionary);\n }\n }, [updatedDictionary]);\n\n const handleOnAuditFile = async () => {\n const dictionaryToAudit = {\n ...dictionary,\n ...updatedDictionary,\n };\n\n await auditContentDeclaration({\n fileContent: JSON.stringify(dictionaryToAudit),\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const auditedDictionary = JSON.parse(response.data.fileContent) as\n | Partial<Dictionary>\n | undefined;\n\n setEditedDictionary((prev) => ({\n ...prev,\n ...dictionaryToAudit,\n ...auditedDictionary,\n }));\n form.reset({\n ...dictionaryToAudit,\n ...auditedDictionary,\n });\n } catch (error) {\n console.error(error);\n }\n });\n };\n\n return (\n <Container\n background=\"none\"\n border\n roundedSize=\"2xl\"\n className=\"w-full px-5 pb-3 pt-5\"\n >\n <Form\n className=\"flex w-full flex-col gap-8\"\n {...form}\n schema={DictionaryDetailsSchema}\n onChange={(data) =>\n setEditedDictionary((prev) => ({\n ...prev,\n ...data,\n }))\n }\n >\n <div className=\"flex w-full flex-1 gap-8 max-md:flex-col\">\n <Form.EditableFieldInput\n name=\"key\"\n label={keyInput.label}\n placeholder={keyInput.label.value}\n description={keyInput.description}\n disabled={isSubmitting}\n isRequired\n onSave={(value) => {\n form.setValue('key', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n key: value,\n }));\n }}\n />\n <Form.EditableFieldInput\n name=\"title\"\n label={titleInput.label}\n placeholder={titleInput.placeholder.value}\n description={titleInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('title', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n title: value,\n }));\n }}\n />\n </div>\n <Form.EditableFieldTextArea\n name=\"description\"\n label={descriptionInput.label}\n placeholder={descriptionInput.placeholder.value}\n description={descriptionInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('description', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n description: value,\n }));\n }}\n />\n <div className=\"flex size-full flex-1 gap-8 max-md:flex-col\">\n <Form.MultiSelect\n name=\"projectIds\"\n label={projectInput.label.value}\n description={projectInput.description.value}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('projectIds', valueArray);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n projectIds: valueArray,\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {projects?.data?.map((project) => (\n <MultiSelect.Item\n key={String(project.id)}\n value={String(project.id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.MultiSelect\n name=\"tags\"\n label={tagsSelect.label.value}\n description={tagsSelect.description.value}\n onValueChange={(value) => {\n form.setValue('tags', [value].flat());\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n tags: [value].flat(),\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={tagsSelect.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {tags?.data?.map((tag) => (\n <MultiSelect.Item\n key={String(tag.key)}\n value={String(tag.key)}\n >\n {tag.name ?? tag.key}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-end gap-2 max-md:flex-col\">\n <Form.Button\n type=\"button\"\n label={auditButton.label.value}\n Icon={WandSparkles}\n variant={ButtonVariant.OUTLINE}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n onClick={handleOnAuditFile}\n disabled={isSubmitting || isAuditing}\n isLoading={isAuditing}\n >\n {auditButton.text}\n </Form.Button>\n </div>\n </Form>\n </Container>\n );\n};\n"],"names":["project"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAwBO,MAAM,wBAAoD,CAAC;AAAA,EAChE;AACF,MAAM;AACJ,QAAM,EAAE,QAAA,IAAY,QAAA;AACpB,QAAM,EAAE,YAAY,WAAW,CAAA;AAC/B,QAAM,EAAE,MAAM,UAAU,WAAW,kBAAA,IAAsB,eAAA;AACzD,QAAM,EAAE,MAAM,KAAA,IAAS,WAAA;AAEvB,QAAM,0BAA0B;AAAA,IAC9B,OAAO,SAAS,EAAE;AAAA,EAAA;AAEpB,QAAM,EAAE,MAAM,iBAAiB,QAAQ,yBAAyB;AAAA,IAC9D,eAAe;AAAA,EAAA,CAChB;AACD,QAAM,EAAE,eAAe,oBAAA,IAAwB,iBAAA;AAC/C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,YAAY,oBAAoB;AACpC,QAAM,EAAE,yBAAyB,WAAW,WAAA,IAC1C,mCAAA;AACF,QAAM,oBAAoB,gBAAgB,WAAW,GAAG;AAExD,YAAU,MAAM;AACd,SAAK,MAAM,UAAU;AAAA,EACvB,GAAG,CAAC,YAAY,MAAM,KAAK,CAAC;AAE5B,YAAU,MAAM;AACd,QAAI,OAAO,sBAAsB,aAAa;AAC5C,WAAK,MAAM,UAAU;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAEtB,QAAM,oBAAoB,YAAY;AACpC,UAAM,oBAAoB;AAAA,MACxB,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAGL,UAAM,wBAAwB;AAAA,MAC5B,aAAa,KAAK,UAAU,iBAAiB;AAAA,IAAA,CAC9C,EAAE,KAAK,CAAC,aAAa;AACpB,UAAI,CAAC,UAAU,KAAM;AAErB,UAAI;AACF,cAAM,oBAAoB,KAAK,MAAM,SAAS,KAAK,WAAW;AAI9D,4BAAoB,CAAC,UAAU;AAAA,UAC7B,GAAG;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,QAAA,EACH;AACF,aAAK,MAAM;AAAA,UACT,GAAG;AAAA,UACH,GAAG;AAAA,QAAA,CACJ;AAAA,MACH,SAAS,OAAO;AACd,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,QAAM;AAAA,MACN,aAAY;AAAA,MACZ,WAAU;AAAA,MAEV,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACT,GAAG;AAAA,UACJ,QAAQ;AAAA,UACR,UAAU,CAAC,SACT,oBAAoB,CAAC,UAAU;AAAA,YAC7B,GAAG;AAAA,YACH,GAAG;AAAA,UAAA,EACH;AAAA,UAGJ,UAAA;AAAA,YAAA,qBAAC,OAAA,EAAI,WAAU,4CACb,UAAA;AAAA,cAAA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,SAAS;AAAA,kBAChB,aAAa,SAAS,MAAM;AAAA,kBAC5B,aAAa,SAAS;AAAA,kBACtB,UAAU;AAAA,kBACV,YAAU;AAAA,kBACV,QAAQ,CAAC,UAAU;AACjB,yBAAK,SAAS,OAAO,KAAK;AAC1B,wCAAoB,CAAC,UAAU;AAAA,sBAC7B,GAAG;AAAA,sBACH,GAAI,QAAQ,CAAA;AAAA,sBACZ,KAAK;AAAA,oBAAA,EACL;AAAA,kBACJ;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEF;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,WAAW;AAAA,kBAClB,aAAa,WAAW,YAAY;AAAA,kBACpC,aAAa,WAAW;AAAA,kBACxB,UAAU;AAAA,kBACV,QAAQ,CAAC,UAAU;AACjB,yBAAK,SAAS,SAAS,KAAK;AAC5B,wCAAoB,CAAC,UAAU;AAAA,sBAC7B,GAAG;AAAA,sBACH,GAAI,QAAQ,CAAA;AAAA,sBACZ,OAAO;AAAA,oBAAA,EACP;AAAA,kBACJ;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF,GACF;AAAA,YACA;AAAA,cAAC,KAAK;AAAA,cAAL;AAAA,gBACC,MAAK;AAAA,gBACL,OAAO,iBAAiB;AAAA,gBACxB,aAAa,iBAAiB,YAAY;AAAA,gBAC1C,aAAa,iBAAiB;AAAA,gBAC9B,UAAU;AAAA,gBACV,QAAQ,CAAC,UAAU;AACjB,uBAAK,SAAS,eAAe,KAAK;AAClC,sCAAoB,CAAC,UAAU;AAAA,oBAC7B,GAAG;AAAA,oBACH,GAAI,QAAQ,CAAA;AAAA,oBACZ,aAAa;AAAA,kBAAA,EACb;AAAA,gBACJ;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,qBAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,cAAA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,aAAa,MAAM;AAAA,kBAC1B,aAAa,aAAa,YAAY;AAAA,kBACtC,eAAe,CAAC,UAAU;AACxB,0BAAM,aAAa,CAAC,KAAK,EAAE,KAAA;AAC3B,yBAAK,SAAS,cAAc,UAAU;AACtC,wCAAoB,CAAC,UAAU;AAAA,sBAC7B,GAAG;AAAA,sBACH,GAAI,QAAQ,CAAA;AAAA,sBACZ,YAAY;AAAA,oBAAA,EACZ;AAAA,kBACJ;AAAA,kBAEA,UAAA;AAAA,oBAAA;AAAA,sBAAC,YAAY;AAAA,sBAAZ;AAAA,wBACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACA,aAAY,OAAOA,SAAQ,EAAE,MAAM,KAAK,GAC1D,QAAQ;AAAA,wBAGd,8BAAC,YAAY,OAAZ,EAAkB,aAAa,aAAa,YAAY,MAAA,CAAO;AAAA,sBAAA;AAAA,oBAAA;AAAA,wCAEjE,YAAY,SAAZ,EACC,UAAA,oBAAC,UAAO,WAAW,mBACjB,UAAA,oBAAC,YAAY,MAAZ,EACE,UAAA,UAAU,MAAM,IAAI,CAACA,aACpB;AAAA,sBAAC,YAAY;AAAA,sBAAZ;AAAA,wBAEC,OAAO,OAAOA,SAAQ,EAAE;AAAA,wBAEvB,UAAAA,SAAQ;AAAA,sBAAA;AAAA,sBAHJ,OAAOA,SAAQ,EAAE;AAAA,oBAAA,CAKzB,EAAA,CACH,EAAA,CACF,EAAA,CACF;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGF;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,WAAW,MAAM;AAAA,kBACxB,aAAa,WAAW,YAAY;AAAA,kBACpC,eAAe,CAAC,UAAU;AACxB,yBAAK,SAAS,QAAQ,CAAC,KAAK,EAAE,MAAM;AACpC,wCAAoB,CAAC,UAAU;AAAA,sBAC7B,GAAG;AAAA,sBACH,GAAI,QAAQ,CAAA;AAAA,sBACZ,MAAM,CAAC,KAAK,EAAE,KAAA;AAAA,oBAAK,EACnB;AAAA,kBACJ;AAAA,kBAEA,UAAA;AAAA,oBAAA;AAAA,sBAAC,YAAY;AAAA,sBAAZ;AAAA,wBACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACA,aAAY,OAAOA,SAAQ,EAAE,MAAM,KAAK,GAC1D,QAAQ;AAAA,wBAGd,8BAAC,YAAY,OAAZ,EAAkB,aAAa,WAAW,YAAY,MAAA,CAAO;AAAA,sBAAA;AAAA,oBAAA;AAAA,wCAE/D,YAAY,SAAZ,EACC,UAAA,oBAAC,UAAO,WAAW,mBACjB,UAAA,oBAAC,YAAY,MAAZ,EACE,UAAA,MAAM,MAAM,IAAI,CAAC,QAChB;AAAA,sBAAC,YAAY;AAAA,sBAAZ;AAAA,wBAEC,OAAO,OAAO,IAAI,GAAG;AAAA,wBAEpB,UAAA,IAAI,QAAQ,IAAI;AAAA,sBAAA;AAAA,sBAHZ,OAAO,IAAI,GAAG;AAAA,oBAAA,CAKtB,EAAA,CACH,EAAA,CACF,EAAA,CACF;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF,GACF;AAAA,YAEA,oBAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,cAAC,KAAK;AAAA,cAAL;AAAA,gBACC,MAAK;AAAA,gBACL,OAAO,YAAY,MAAM;AAAA,gBACzB,MAAM;AAAA,gBACN,SAAS,cAAc;AAAA,gBACvB,OAAO,YAAY;AAAA,gBACnB,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,UAAU,gBAAgB;AAAA,gBAC1B,WAAW;AAAA,gBAEV,UAAA,YAAY;AAAA,cAAA;AAAA,YAAA,EACf,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts
CHANGED
|
@@ -439,32 +439,10 @@ export declare const dictionaryDetailsContent: {
|
|
|
439
439
|
ru: string;
|
|
440
440
|
};
|
|
441
441
|
}>;
|
|
442
|
-
description: import('@intlayer/core').TypedNodeModel<import("@intlayer/core").NodeType.Translation, {
|
|
443
|
-
en: string;
|
|
444
|
-
'en-GB': string;
|
|
445
|
-
fr: string;
|
|
446
|
-
es: string;
|
|
447
|
-
de: string;
|
|
448
|
-
ja: string;
|
|
449
|
-
ko: string;
|
|
450
|
-
zh: string;
|
|
451
|
-
it: string;
|
|
452
|
-
pt: string;
|
|
453
|
-
}, {
|
|
442
|
+
description: import('@intlayer/core').TypedNodeModel<import("@intlayer/core").NodeType.Translation, import('intlayer').IConfigLocales<unknown>, {
|
|
454
443
|
nodeType: import("@intlayer/core").NodeType.Translation | "translation";
|
|
455
444
|
} & {
|
|
456
|
-
translation:
|
|
457
|
-
en: string;
|
|
458
|
-
'en-GB': string;
|
|
459
|
-
fr: string;
|
|
460
|
-
es: string;
|
|
461
|
-
de: string;
|
|
462
|
-
ja: string;
|
|
463
|
-
ko: string;
|
|
464
|
-
zh: string;
|
|
465
|
-
it: string;
|
|
466
|
-
pt: string;
|
|
467
|
-
};
|
|
445
|
+
translation: import('intlayer').IConfigLocales<unknown>;
|
|
468
446
|
}>;
|
|
469
447
|
placeholder: import('@intlayer/core').TypedNodeModel<import("@intlayer/core").NodeType.Translation, {
|
|
470
448
|
en: string;
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionaryDetails.content.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"dictionaryDetails.content.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqRf,CAAC;AAEvB,eAAe,wBAAwB,CAAC"}
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.cjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const reactIntlayer = require("react-intlayer");
|
|
4
|
-
const components_DictionaryFieldEditor_DictionaryDetails_useDictionaryDetailsSchema_content = require("./useDictionaryDetailsSchema.content.cjs");
|
|
5
4
|
const schemas = require("../../../schemas-lh5OFOvX.cjs");
|
|
6
5
|
const useDictionaryDetailsSchema = (projectId) => {
|
|
7
6
|
const {
|
|
@@ -17,7 +16,7 @@ const useDictionaryDetailsSchema = (projectId) => {
|
|
|
17
16
|
requiredErrorProjectId,
|
|
18
17
|
invalidTypeErrorProjectId,
|
|
19
18
|
invalidTypeErrorTags
|
|
20
|
-
} = reactIntlayer.
|
|
19
|
+
} = reactIntlayer.useIntlayer("dictionary-detail-schema");
|
|
21
20
|
return schemas.object({
|
|
22
21
|
title: schemas.string({
|
|
23
22
|
error: (issue) => issue.input === void 0 ? titleRequiredError.value : titleInvalidTypeError.value
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDictionaryDetailsSchema.cjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useDictionaryDetailsSchema.cjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.ts"],"sourcesContent":["import { useIntlayer } from 'react-intlayer';\nimport { z } from 'zod/v4';\n\nexport const useDictionaryDetailsSchema = (projectId: string) => {\n const {\n titleRequiredError,\n titleInvalidTypeError,\n titleMinLengthError,\n keyRequiredError,\n keyInvalidTypeError,\n keySpaceError,\n keyMinLengthError,\n descriptionRequiredError,\n descriptionInvalidTypeError,\n requiredErrorProjectId,\n invalidTypeErrorProjectId,\n invalidTypeErrorTags,\n } = useIntlayer('dictionary-detail-schema');\n\n return z.object({\n title: z\n .string({\n error: (issue) =>\n issue.input === undefined\n ? titleRequiredError.value\n : titleInvalidTypeError.value,\n })\n // Can be length of 0 or > 4\n .refine((val) => val.length === 0 || val.length >= 4, {\n error: titleMinLengthError.value,\n })\n .optional(),\n key: z\n .string({\n error: (issue) =>\n issue.input === undefined\n ? keyRequiredError.value\n : keyInvalidTypeError.value,\n })\n .min(4, { error: keyMinLengthError.value })\n /**\n * Valid :\n * my-key\n * my_key\n *\n * Invalid :\n * my key\n * my.key\n */\n .regex(/^[a-zA-Z0-9-_]+$/, { error: keySpaceError.value })\n .default(''),\n description: z\n .string({\n error: (issue) =>\n issue.input === undefined\n ? descriptionRequiredError.value\n : descriptionInvalidTypeError.value,\n })\n .optional(),\n projectIds: z\n .array(\n z.string({\n error: (issue) =>\n issue.input === undefined\n ? requiredErrorProjectId.value\n : invalidTypeErrorProjectId.value,\n })\n )\n .default([projectId]),\n tags: z\n .array(\n z.string({\n error: () => invalidTypeErrorTags.value,\n })\n )\n .default([]),\n });\n};\n\nexport type DictionaryDetailsFormData = z.infer<\n ReturnType<typeof useDictionaryDetailsSchema>\n>;\n"],"names":["useIntlayer","z.object","z.string","z.array"],"mappings":";;;;AAGO,MAAM,6BAA6B,CAAC,cAAsB;AAC/D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACEA,cAAAA,YAAY,0BAA0B;AAE1C,SAAOC,eAAS;AAAA,IACd,OAAOC,QAAAA,OACG;AAAA,MACN,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,mBAAmB,QACnB,sBAAsB;AAAA,IAAA,CAC7B,EAEA,OAAO,CAAC,QAAQ,IAAI,WAAW,KAAK,IAAI,UAAU,GAAG;AAAA,MACpD,OAAO,oBAAoB;AAAA,IAAA,CAC5B,EACA,SAAA;AAAA,IACH,KAAKA,QAAAA,OACK;AAAA,MACN,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,iBAAiB,QACjB,oBAAoB;AAAA,IAAA,CAC3B,EACA,IAAI,GAAG,EAAE,OAAO,kBAAkB,OAAO,EAUzC,MAAM,oBAAoB,EAAE,OAAO,cAAc,OAAO,EACxD,QAAQ,EAAE;AAAA,IACb,aAAaA,QAAAA,OACH;AAAA,MACN,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,yBAAyB,QACzB,4BAA4B;AAAA,IAAA,CACnC,EACA,SAAA;AAAA,IACH,YAAYC,QAAAA;AAAAA,MAERD,eAAS;AAAA,QACP,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,uBAAuB,QACvB,0BAA0B;AAAA,MAAA,CACjC;AAAA,IAAA,EAEF,QAAQ,CAAC,SAAS,CAAC;AAAA,IACtB,MAAMC,QAAAA;AAAAA,MAEFD,eAAS;AAAA,QACP,OAAO,MAAM,qBAAqB;AAAA,MAAA,CACnC;AAAA,IAAA,EAEF,QAAQ,CAAA,CAAE;AAAA,EAAA,CACd;AACH;;"}
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDictionaryDetailsSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"useDictionaryDetailsSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,eAAO,MAAM,0BAA0B,GAAI,WAAW,MAAM;;;;;;iBA0E3D,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAC9C,CAAC"}
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useDictionaryDetailsSchemaContent } from "./useDictionaryDetailsSchema.content.mjs";
|
|
1
|
+
import { useIntlayer } from "react-intlayer";
|
|
3
2
|
import { o as object, a as array, s as string } from "../../../schemas-DEXdAbCK.js";
|
|
4
3
|
const useDictionaryDetailsSchema = (projectId) => {
|
|
5
4
|
const {
|
|
@@ -15,7 +14,7 @@ const useDictionaryDetailsSchema = (projectId) => {
|
|
|
15
14
|
requiredErrorProjectId,
|
|
16
15
|
invalidTypeErrorProjectId,
|
|
17
16
|
invalidTypeErrorTags
|
|
18
|
-
} =
|
|
17
|
+
} = useIntlayer("dictionary-detail-schema");
|
|
19
18
|
return object({
|
|
20
19
|
title: string({
|
|
21
20
|
error: (issue) => issue.input === void 0 ? titleRequiredError.value : titleInvalidTypeError.value
|
package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDictionaryDetailsSchema.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useDictionaryDetailsSchema.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.ts"],"sourcesContent":["import { useIntlayer } from 'react-intlayer';\nimport { z } from 'zod/v4';\n\nexport const useDictionaryDetailsSchema = (projectId: string) => {\n const {\n titleRequiredError,\n titleInvalidTypeError,\n titleMinLengthError,\n keyRequiredError,\n keyInvalidTypeError,\n keySpaceError,\n keyMinLengthError,\n descriptionRequiredError,\n descriptionInvalidTypeError,\n requiredErrorProjectId,\n invalidTypeErrorProjectId,\n invalidTypeErrorTags,\n } = useIntlayer('dictionary-detail-schema');\n\n return z.object({\n title: z\n .string({\n error: (issue) =>\n issue.input === undefined\n ? titleRequiredError.value\n : titleInvalidTypeError.value,\n })\n // Can be length of 0 or > 4\n .refine((val) => val.length === 0 || val.length >= 4, {\n error: titleMinLengthError.value,\n })\n .optional(),\n key: z\n .string({\n error: (issue) =>\n issue.input === undefined\n ? keyRequiredError.value\n : keyInvalidTypeError.value,\n })\n .min(4, { error: keyMinLengthError.value })\n /**\n * Valid :\n * my-key\n * my_key\n *\n * Invalid :\n * my key\n * my.key\n */\n .regex(/^[a-zA-Z0-9-_]+$/, { error: keySpaceError.value })\n .default(''),\n description: z\n .string({\n error: (issue) =>\n issue.input === undefined\n ? descriptionRequiredError.value\n : descriptionInvalidTypeError.value,\n })\n .optional(),\n projectIds: z\n .array(\n z.string({\n error: (issue) =>\n issue.input === undefined\n ? requiredErrorProjectId.value\n : invalidTypeErrorProjectId.value,\n })\n )\n .default([projectId]),\n tags: z\n .array(\n z.string({\n error: () => invalidTypeErrorTags.value,\n })\n )\n .default([]),\n });\n};\n\nexport type DictionaryDetailsFormData = z.infer<\n ReturnType<typeof useDictionaryDetailsSchema>\n>;\n"],"names":["z.object","z.string","z.array"],"mappings":";;AAGO,MAAM,6BAA6B,CAAC,cAAsB;AAC/D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,YAAY,0BAA0B;AAE1C,SAAOA,OAAS;AAAA,IACd,OAAOC,OACG;AAAA,MACN,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,mBAAmB,QACnB,sBAAsB;AAAA,IAAA,CAC7B,EAEA,OAAO,CAAC,QAAQ,IAAI,WAAW,KAAK,IAAI,UAAU,GAAG;AAAA,MACpD,OAAO,oBAAoB;AAAA,IAAA,CAC5B,EACA,SAAA;AAAA,IACH,KAAKA,OACK;AAAA,MACN,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,iBAAiB,QACjB,oBAAoB;AAAA,IAAA,CAC3B,EACA,IAAI,GAAG,EAAE,OAAO,kBAAkB,OAAO,EAUzC,MAAM,oBAAoB,EAAE,OAAO,cAAc,OAAO,EACxD,QAAQ,EAAE;AAAA,IACb,aAAaA,OACH;AAAA,MACN,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,yBAAyB,QACzB,4BAA4B;AAAA,IAAA,CACnC,EACA,SAAA;AAAA,IACH,YAAYC;AAAAA,MAERD,OAAS;AAAA,QACP,OAAO,CAAC,UACN,MAAM,UAAU,SACZ,uBAAuB,QACvB,0BAA0B;AAAA,MAAA,CACjC;AAAA,IAAA,EAEF,QAAQ,CAAC,SAAS,CAAC;AAAA,IACtB,MAAMC;AAAAA,MAEFD,OAAS;AAAA,QACP,OAAO,MAAM,qBAAqB;AAAA,MAAA,CACnC;AAAA,IAAA,EAEF,QAAQ,CAAA,CAAE;AAAA,EAAA,CACd;AACH;"}
|
|
@@ -22,11 +22,9 @@ require("../DropDown/index.cjs");
|
|
|
22
22
|
require("../Input/Input.cjs");
|
|
23
23
|
require("../Input/Checkbox.cjs");
|
|
24
24
|
const components_SwitchSelector_index = require("../SwitchSelector/index.cjs");
|
|
25
|
-
require("../LocaleSwitcherContentDropDown/localeSwitcher.content.cjs");
|
|
26
25
|
const components_LocaleSwitcherContentDropDown_LocaleSwitcherContentContext = require("../LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.cjs");
|
|
27
26
|
const components_DictionaryFieldEditor_ContentEditor = require("./ContentEditor.cjs");
|
|
28
27
|
const components_DictionaryFieldEditor_DictionaryDetails_DictionaryDetailsForm = require("./DictionaryDetails/DictionaryDetailsForm.cjs");
|
|
29
|
-
const components_DictionaryFieldEditor_dictionaryFieldEditor_content = require("./dictionaryFieldEditor.content.cjs");
|
|
30
28
|
const components_DictionaryFieldEditor_JSONEditor = require("./JSONEditor.cjs");
|
|
31
29
|
const components_DictionaryFieldEditor_SaveForm_SaveForm = require("./SaveForm/SaveForm.cjs");
|
|
32
30
|
const components_DictionaryFieldEditor_StructureEditor = require("./StructureEditor.cjs");
|
|
@@ -42,9 +40,7 @@ const DictionaryFieldEditor = ({
|
|
|
42
40
|
1
|
|
43
41
|
/* ContentEditor */
|
|
44
42
|
);
|
|
45
|
-
const { returnToDictionaryList } = reactIntlayer.
|
|
46
|
-
components_DictionaryFieldEditor_dictionaryFieldEditor_content.dictionaryFieldEditorContent
|
|
47
|
-
);
|
|
43
|
+
const { returnToDictionaryList } = reactIntlayer.useIntlayer("dictionary-field-editor");
|
|
48
44
|
const { setFocusedContent } = editorReact.useFocusDictionaryActions();
|
|
49
45
|
const { setLocaleDictionaries } = editorReact.useDictionariesRecordActions();
|
|
50
46
|
ReactExports.useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DictionaryFieldEditor.cjs","sources":["../../../src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport {\n useConfiguration,\n useDictionariesRecordActions,\n useFocusDictionaryActions,\n} from '@intlayer/editor-react';\nimport { ArrowLeft } from 'lucide-react';\nimport { useEffect, useState, type FC } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"DictionaryFieldEditor.cjs","sources":["../../../src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport {\n useConfiguration,\n useDictionariesRecordActions,\n useFocusDictionaryActions,\n} from '@intlayer/editor-react';\nimport { ArrowLeft } from 'lucide-react';\nimport { useEffect, useState, type FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button, ButtonColor, ButtonVariant } from '../Button';\nimport { LocaleSwitcherContentProvider } from '../LocaleSwitcherContentDropDown';\nimport {\n SwitchSelector,\n SwitchSelectorColor,\n SwitchSelectorSize,\n} from '../SwitchSelector';\nimport { ContentEditor } from './ContentEditor';\nimport { DictionaryDetailsForm } from './DictionaryDetails/DictionaryDetailsForm';\nimport { JSONEditor } from './JSONEditor';\nimport { SaveForm } from './SaveForm/SaveForm';\nimport { StructureEditor } from './StructureEditor';\n\ntype DictionaryFieldEditorProps = {\n dictionary: Dictionary;\n onClickDictionaryList?: () => void;\n onDelete?: () => void;\n isDarkMode?: boolean;\n mode: ('local' | 'remote')[];\n};\n\nenum EditorViewType {\n DetailsEditor,\n ContentEditor,\n StructureEditor,\n JSONEditor,\n}\n\nexport const DictionaryFieldEditor: FC<DictionaryFieldEditorProps> = ({\n dictionary,\n onClickDictionaryList,\n isDarkMode,\n mode,\n onDelete,\n}) => {\n const config = useConfiguration();\n const [editorView, setEditorView] = useState<EditorViewType>(\n EditorViewType.ContentEditor\n );\n const { returnToDictionaryList } = useIntlayer('dictionary-field-editor');\n const { setFocusedContent } = useFocusDictionaryActions();\n const { setLocaleDictionaries } = useDictionariesRecordActions();\n\n useEffect(() => {\n // Focus the dictionary if not focused\n setFocusedContent((prev) => ({\n ...(prev ?? {}),\n dictionaryKey: dictionary.key,\n }));\n setLocaleDictionaries((prev) => ({\n ...prev,\n [dictionary.key]: dictionary,\n }));\n }, []);\n\n return (\n <LocaleSwitcherContentProvider\n availableLocales={config?.internationalization.locales ?? []}\n >\n <div className=\"flex size-full flex-col gap-6 px-2\">\n <Button\n onClick={onClickDictionaryList}\n variant={ButtonVariant.HOVERABLE}\n className=\"z-10 ml-5 mr-auto\"\n color={ButtonColor.TEXT}\n Icon={ArrowLeft}\n label={returnToDictionaryList.label.value}\n >\n {returnToDictionaryList.text}\n </Button>\n\n <SwitchSelector\n defaultValue={editorView}\n onChange={(value) => setEditorView(value)}\n color={SwitchSelectorColor.TEXT}\n size={SwitchSelectorSize.SM}\n className=\"m-auto w-full max-w-xl\"\n choices={[\n {\n content: 'Details',\n value: EditorViewType.DetailsEditor,\n },\n {\n content: 'Structure',\n value: EditorViewType.StructureEditor,\n },\n {\n content: 'Content',\n value: EditorViewType.ContentEditor,\n },\n {\n content: 'JSON',\n value: EditorViewType.JSONEditor,\n },\n ].filter(\n ({ value }) =>\n !(\n !mode.includes('remote') &&\n value === EditorViewType.DetailsEditor\n )\n )}\n />\n\n {editorView === EditorViewType.DetailsEditor && (\n <DictionaryDetailsForm dictionary={dictionary} />\n )}\n {editorView === EditorViewType.StructureEditor && (\n <StructureEditor dictionary={dictionary} />\n )}\n {editorView === EditorViewType.ContentEditor && (\n <ContentEditor dictionary={dictionary} isDarkMode={isDarkMode} />\n )}\n {editorView === EditorViewType.JSONEditor && (\n <JSONEditor dictionary={dictionary} isDarkMode={isDarkMode} />\n )}\n\n <SaveForm\n dictionary={dictionary}\n mode={mode}\n onDelete={() => {\n setFocusedContent(null);\n onDelete?.();\n }}\n />\n </div>\n </LocaleSwitcherContentProvider>\n );\n};\n"],"names":["useConfiguration","useState","useIntlayer","useFocusDictionaryActions","useDictionariesRecordActions","useEffect","jsx","LocaleSwitcherContentProvider","jsxs","Button","ButtonVariant","ButtonColor","ArrowLeft","SwitchSelector","SwitchSelectorColor","SwitchSelectorSize","DictionaryDetailsForm","StructureEditor","ContentEditor","JSONEditor","SaveForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,MAAM,wBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,SAASA,YAAAA,iBAAA;AACf,QAAM,CAAC,YAAY,aAAa,IAAIC,aAAAA;AAAAA,IAClC;AAAA;AAAA,EAAA;AAEF,QAAM,EAAE,uBAAA,IAA2BC,cAAAA,YAAY,yBAAyB;AACxE,QAAM,EAAE,kBAAA,IAAsBC,sCAAA;AAC9B,QAAM,EAAE,sBAAA,IAA0BC,yCAAA;AAElCC,eAAAA,UAAU,MAAM;AAEd,sBAAkB,CAAC,UAAU;AAAA,MAC3B,GAAI,QAAQ,CAAA;AAAA,MACZ,eAAe,WAAW;AAAA,IAAA,EAC1B;AACF,0BAAsB,CAAC,UAAU;AAAA,MAC/B,GAAG;AAAA,MACH,CAAC,WAAW,GAAG,GAAG;AAAA,IAAA,EAClB;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,SACEC,2BAAAA;AAAAA,IAACC,sEAAAA;AAAAA,IAAA;AAAA,MACC,kBAAkB,QAAQ,qBAAqB,WAAW,CAAA;AAAA,MAE1D,UAAAC,2BAAAA,KAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAAF,2BAAAA;AAAAA,UAACG,yBAAAA;AAAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,SAASC,yBAAAA,cAAc;AAAA,YACvB,WAAU;AAAA,YACV,OAAOC,yBAAAA,YAAY;AAAA,YACnB,MAAMC,YAAAA;AAAAA,YACN,OAAO,uBAAuB,MAAM;AAAA,YAEnC,UAAA,uBAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,QAG1BN,2BAAAA;AAAAA,UAACO,gCAAAA;AAAAA,UAAA;AAAA,YACC,cAAc;AAAA,YACd,UAAU,CAAC,UAAU,cAAc,KAAK;AAAA,YACxC,OAAOC,gCAAAA,oBAAoB;AAAA,YAC3B,MAAMC,gCAAAA,mBAAmB;AAAA,YACzB,WAAU;AAAA,YACV,SAAS;AAAA,cACP;AAAA,gBACE,SAAS;AAAA,gBACT,OAAO;AAAA;AAAA,cAAA;AAAA,cAET;AAAA,gBACE,SAAS;AAAA,gBACT,OAAO;AAAA;AAAA,cAAA;AAAA,cAET;AAAA,gBACE,SAAS;AAAA,gBACT,OAAO;AAAA;AAAA,cAAA;AAAA,cAET;AAAA,gBACE,SAAS;AAAA,gBACT,OAAO;AAAA;AAAA,cAAA;AAAA,YACT,EACA;AAAA,cACA,CAAC,EAAE,MAAA,MACD,EACE,CAAC,KAAK,SAAS,QAAQ,KACvB,UAAU;AAAA,YAAA;AAAA,UAEhB;AAAA,QAAA;AAAA,QAGD,eAAe,KACdT,2BAAAA,IAACU,yEAAAA,uBAAA,EAAsB,WAAA,CAAwB;AAAA,QAEhD,eAAe,KACdV,2BAAAA,IAACW,iDAAAA,iBAAA,EAAgB,WAAA,CAAwB;AAAA,QAE1C,eAAe,KACdX,2BAAAA,IAACY,+CAAAA,eAAA,EAAc,YAAwB,YAAwB;AAAA,QAEhE,eAAe,KACdZ,2BAAAA,IAACa,4CAAAA,YAAA,EAAW,YAAwB,YAAwB;AAAA,QAG9Db,2BAAAA;AAAAA,UAACc,mDAAAA;AAAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA,UAAU,MAAM;AACd,gCAAkB,IAAI;AACtB,yBAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DictionaryFieldEditor.d.ts","sourceRoot":"","sources":["../../../src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAOjD,OAAO,EAAuB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DictionaryFieldEditor.d.ts","sourceRoot":"","sources":["../../../src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAOjD,OAAO,EAAuB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAerD,KAAK,0BAA0B,GAAG;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC9B,CAAC;AASF,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAmGhE,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useConfiguration, useFocusDictionaryActions, useDictionariesRecordActions } from "@intlayer/editor-react";
|
|
4
4
|
import { ArrowLeft } from "lucide-react";
|
|
5
5
|
import { useState, useEffect } from "react";
|
|
6
|
-
import {
|
|
6
|
+
import { useIntlayer } from "react-intlayer";
|
|
7
7
|
import { Button, ButtonColor, ButtonVariant } from "../Button/Button.mjs";
|
|
8
8
|
import "@intlayer/config/client";
|
|
9
9
|
import "@intlayer/core";
|
|
@@ -20,11 +20,9 @@ import "../DropDown/index.mjs";
|
|
|
20
20
|
import "../Input/Input.mjs";
|
|
21
21
|
import "../Input/Checkbox.mjs";
|
|
22
22
|
import { SwitchSelector, SwitchSelectorSize, SwitchSelectorColor } from "../SwitchSelector/index.mjs";
|
|
23
|
-
import "../LocaleSwitcherContentDropDown/localeSwitcher.content.mjs";
|
|
24
23
|
import { LocaleSwitcherContentProvider } from "../LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs";
|
|
25
24
|
import { ContentEditor } from "./ContentEditor.mjs";
|
|
26
25
|
import { DictionaryDetailsForm } from "./DictionaryDetails/DictionaryDetailsForm.mjs";
|
|
27
|
-
import { dictionaryFieldEditorContent } from "./dictionaryFieldEditor.content.mjs";
|
|
28
26
|
import { JSONEditor } from "./JSONEditor.mjs";
|
|
29
27
|
import { SaveForm } from "./SaveForm/SaveForm.mjs";
|
|
30
28
|
import { StructureEditor } from "./StructureEditor.mjs";
|
|
@@ -40,9 +38,7 @@ const DictionaryFieldEditor = ({
|
|
|
40
38
|
1
|
|
41
39
|
/* ContentEditor */
|
|
42
40
|
);
|
|
43
|
-
const { returnToDictionaryList } =
|
|
44
|
-
dictionaryFieldEditorContent
|
|
45
|
-
);
|
|
41
|
+
const { returnToDictionaryList } = useIntlayer("dictionary-field-editor");
|
|
46
42
|
const { setFocusedContent } = useFocusDictionaryActions();
|
|
47
43
|
const { setLocaleDictionaries } = useDictionariesRecordActions();
|
|
48
44
|
useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DictionaryFieldEditor.mjs","sources":["../../../src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport {\n useConfiguration,\n useDictionariesRecordActions,\n useFocusDictionaryActions,\n} from '@intlayer/editor-react';\nimport { ArrowLeft } from 'lucide-react';\nimport { useEffect, useState, type FC } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"DictionaryFieldEditor.mjs","sources":["../../../src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport {\n useConfiguration,\n useDictionariesRecordActions,\n useFocusDictionaryActions,\n} from '@intlayer/editor-react';\nimport { ArrowLeft } from 'lucide-react';\nimport { useEffect, useState, type FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button, ButtonColor, ButtonVariant } from '../Button';\nimport { LocaleSwitcherContentProvider } from '../LocaleSwitcherContentDropDown';\nimport {\n SwitchSelector,\n SwitchSelectorColor,\n SwitchSelectorSize,\n} from '../SwitchSelector';\nimport { ContentEditor } from './ContentEditor';\nimport { DictionaryDetailsForm } from './DictionaryDetails/DictionaryDetailsForm';\nimport { JSONEditor } from './JSONEditor';\nimport { SaveForm } from './SaveForm/SaveForm';\nimport { StructureEditor } from './StructureEditor';\n\ntype DictionaryFieldEditorProps = {\n dictionary: Dictionary;\n onClickDictionaryList?: () => void;\n onDelete?: () => void;\n isDarkMode?: boolean;\n mode: ('local' | 'remote')[];\n};\n\nenum EditorViewType {\n DetailsEditor,\n ContentEditor,\n StructureEditor,\n JSONEditor,\n}\n\nexport const DictionaryFieldEditor: FC<DictionaryFieldEditorProps> = ({\n dictionary,\n onClickDictionaryList,\n isDarkMode,\n mode,\n onDelete,\n}) => {\n const config = useConfiguration();\n const [editorView, setEditorView] = useState<EditorViewType>(\n EditorViewType.ContentEditor\n );\n const { returnToDictionaryList } = useIntlayer('dictionary-field-editor');\n const { setFocusedContent } = useFocusDictionaryActions();\n const { setLocaleDictionaries } = useDictionariesRecordActions();\n\n useEffect(() => {\n // Focus the dictionary if not focused\n setFocusedContent((prev) => ({\n ...(prev ?? {}),\n dictionaryKey: dictionary.key,\n }));\n setLocaleDictionaries((prev) => ({\n ...prev,\n [dictionary.key]: dictionary,\n }));\n }, []);\n\n return (\n <LocaleSwitcherContentProvider\n availableLocales={config?.internationalization.locales ?? []}\n >\n <div className=\"flex size-full flex-col gap-6 px-2\">\n <Button\n onClick={onClickDictionaryList}\n variant={ButtonVariant.HOVERABLE}\n className=\"z-10 ml-5 mr-auto\"\n color={ButtonColor.TEXT}\n Icon={ArrowLeft}\n label={returnToDictionaryList.label.value}\n >\n {returnToDictionaryList.text}\n </Button>\n\n <SwitchSelector\n defaultValue={editorView}\n onChange={(value) => setEditorView(value)}\n color={SwitchSelectorColor.TEXT}\n size={SwitchSelectorSize.SM}\n className=\"m-auto w-full max-w-xl\"\n choices={[\n {\n content: 'Details',\n value: EditorViewType.DetailsEditor,\n },\n {\n content: 'Structure',\n value: EditorViewType.StructureEditor,\n },\n {\n content: 'Content',\n value: EditorViewType.ContentEditor,\n },\n {\n content: 'JSON',\n value: EditorViewType.JSONEditor,\n },\n ].filter(\n ({ value }) =>\n !(\n !mode.includes('remote') &&\n value === EditorViewType.DetailsEditor\n )\n )}\n />\n\n {editorView === EditorViewType.DetailsEditor && (\n <DictionaryDetailsForm dictionary={dictionary} />\n )}\n {editorView === EditorViewType.StructureEditor && (\n <StructureEditor dictionary={dictionary} />\n )}\n {editorView === EditorViewType.ContentEditor && (\n <ContentEditor dictionary={dictionary} isDarkMode={isDarkMode} />\n )}\n {editorView === EditorViewType.JSONEditor && (\n <JSONEditor dictionary={dictionary} isDarkMode={isDarkMode} />\n )}\n\n <SaveForm\n dictionary={dictionary}\n mode={mode}\n onDelete={() => {\n setFocusedContent(null);\n onDelete?.();\n }}\n />\n </div>\n </LocaleSwitcherContentProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,MAAM,wBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,SAAS,iBAAA;AACf,QAAM,CAAC,YAAY,aAAa,IAAI;AAAA,IAClC;AAAA;AAAA,EAAA;AAEF,QAAM,EAAE,uBAAA,IAA2B,YAAY,yBAAyB;AACxE,QAAM,EAAE,kBAAA,IAAsB,0BAAA;AAC9B,QAAM,EAAE,sBAAA,IAA0B,6BAAA;AAElC,YAAU,MAAM;AAEd,sBAAkB,CAAC,UAAU;AAAA,MAC3B,GAAI,QAAQ,CAAA;AAAA,MACZ,eAAe,WAAW;AAAA,IAAA,EAC1B;AACF,0BAAsB,CAAC,UAAU;AAAA,MAC/B,GAAG;AAAA,MACH,CAAC,WAAW,GAAG,GAAG;AAAA,IAAA,EAClB;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,kBAAkB,QAAQ,qBAAqB,WAAW,CAAA;AAAA,MAE1D,UAAA,qBAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,SAAS,cAAc;AAAA,YACvB,WAAU;AAAA,YACV,OAAO,YAAY;AAAA,YACnB,MAAM;AAAA,YACN,OAAO,uBAAuB,MAAM;AAAA,YAEnC,UAAA,uBAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,QAG1B;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cAAc;AAAA,YACd,UAAU,CAAC,UAAU,cAAc,KAAK;AAAA,YACxC,OAAO,oBAAoB;AAAA,YAC3B,MAAM,mBAAmB;AAAA,YACzB,WAAU;AAAA,YACV,SAAS;AAAA,cACP;AAAA,gBACE,SAAS;AAAA,gBACT,OAAO;AAAA;AAAA,cAAA;AAAA,cAET;AAAA,gBACE,SAAS;AAAA,gBACT,OAAO;AAAA;AAAA,cAAA;AAAA,cAET;AAAA,gBACE,SAAS;AAAA,gBACT,OAAO;AAAA;AAAA,cAAA;AAAA,cAET;AAAA,gBACE,SAAS;AAAA,gBACT,OAAO;AAAA;AAAA,cAAA;AAAA,YACT,EACA;AAAA,cACA,CAAC,EAAE,MAAA,MACD,EACE,CAAC,KAAK,SAAS,QAAQ,KACvB,UAAU;AAAA,YAAA;AAAA,UAEhB;AAAA,QAAA;AAAA,QAGD,eAAe,KACd,oBAAC,uBAAA,EAAsB,WAAA,CAAwB;AAAA,QAEhD,eAAe,KACd,oBAAC,iBAAA,EAAgB,WAAA,CAAwB;AAAA,QAE1C,eAAe,KACd,oBAAC,eAAA,EAAc,YAAwB,YAAwB;AAAA,QAEhE,eAAe,KACd,oBAAC,YAAA,EAAW,YAAwB,YAAwB;AAAA,QAG9D;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA,UAAU,MAAM;AACd,gCAAkB,IAAI;AACtB,yBAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -10,7 +10,6 @@ const utils_camelCase = require("../../../utils/camelCase.cjs");
|
|
|
10
10
|
const components_Accordion_Accordion = require("../../Accordion/Accordion.cjs");
|
|
11
11
|
const components_Button_Button = require("../../Button/Button.cjs");
|
|
12
12
|
const components_DictionaryFieldEditor_getIsEditableSection = require("../getIsEditableSection.cjs");
|
|
13
|
-
const components_DictionaryFieldEditor_NavigationView_navigationViewNode_content = require("./navigationViewNode.content.cjs");
|
|
14
13
|
const traceKeys = ["filePath", "id", "nodeType"];
|
|
15
14
|
const NavigationViewNode = ({
|
|
16
15
|
section: sectionProp,
|
|
@@ -21,7 +20,7 @@ const NavigationViewNode = ({
|
|
|
21
20
|
const section = core.getContentNodeByKeyPath(sectionProp, keyPath);
|
|
22
21
|
const { addEditedContent } = editorReact.useEditedContentActions();
|
|
23
22
|
const { setFocusedContentKeyPath, focusedContent } = editorReact.useFocusDictionary();
|
|
24
|
-
const { addNewElement, goToField } = reactIntlayer.
|
|
23
|
+
const { addNewElement, goToField } = reactIntlayer.useIntlayer("navigation-view");
|
|
25
24
|
const nodeType = core.getNodeType(section);
|
|
26
25
|
const getIsSelected = (keyPath2) => (focusedContent?.keyPath?.length ?? 0) > 0 && core.isSameKeyPath(keyPath2, focusedContent?.keyPath ?? []);
|
|
27
26
|
const isEditableSubSection = components_DictionaryFieldEditor_getIsEditableSection.getIsEditableSection(section);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationViewNode.cjs","sources":["../../../../src/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.tsx"],"sourcesContent":["import configuration from '@intlayer/config/built';\n\nimport {\n getContentNodeByKeyPath,\n getEmptyNode,\n getNodeType,\n isSameKeyPath,\n NodeType,\n type ContentNode,\n type KeyPath,\n} from '@intlayer/core';\nimport {\n useEditedContentActions,\n useFocusDictionary,\n} from '@intlayer/editor-react';\nimport { ChevronRight, Plus } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport { camelCaseToSentence } from '../../../utils/camelCase';\nimport { Accordion } from '../../Accordion';\nimport {\n Button,\n ButtonColor,\n ButtonTextAlign,\n ButtonVariant,\n} from '../../Button';\nimport { getIsEditableSection } from '../getIsEditableSection';\nimport { navigationViewContent } from './navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\nexport type NodeWrapperProps = {\n dictionaryKey: string;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const NavigationViewNode: FC<NodeWrapperProps> = ({\n section: sectionProp,\n keyPath,\n dictionaryKey,\n}) => {\n const { locales } = configuration?.internationalization;\n const section = getContentNodeByKeyPath(sectionProp, keyPath);\n const { addEditedContent } = useEditedContentActions();\n const { setFocusedContentKeyPath, focusedContent } = useFocusDictionary();\n const { addNewElement, goToField } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n const getIsSelected = (keyPath: KeyPath[]) =>\n (focusedContent?.keyPath?.length ?? 0) > 0 &&\n isSameKeyPath(keyPath, focusedContent?.keyPath ?? []);\n const isEditableSubSection = getIsEditableSection(section);\n\n if (!section) return <></>;\n\n if (isEditableSubSection) {\n return (\n <Button\n label={goToField.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(keyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(keyPath[keyPath.length - 1].key as string)}\n </Button>\n );\n }\n\n if (typeof section === 'object') {\n if (nodeType === NodeType.ReactNode) {\n return <>React Node</>;\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {locales.map((translationKey) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ];\n\n return (\n <NavigationViewNode\n key={translationKey}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeType.Enumeration || nodeType === NodeType.Condition) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {Object.keys(\n (section as any)[nodeType as unknown as keyof typeof section]\n ).map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: nodeType, key },\n ];\n\n return (\n <NavigationViewNode\n key={key}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {(section as unknown as ContentNode[]).map((_, index) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Array, key: index },\n ];\n\n return (\n <NavigationViewNode\n key={JSON.stringify(childKeyPath)}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n );\n })}\n\n <Button\n label={addNewElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n const sectionArray = section as unknown as ContentNode[];\n const emptySectionEl =\n getEmptyNode(\n sectionArray[\n (sectionArray.length - 1) as keyof typeof sectionArray\n ] as ContentNode\n ) ?? '';\n addEditedContent(\n dictionaryKey,\n emptySectionEl,\n newKeyPath,\n false\n );\n setFocusedContentKeyPath(newKeyPath);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n }\n\n if (typeof section.nodeType === 'string') {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: section.nodeType } as KeyPath,\n ];\n\n return (\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n );\n }\n\n const sectionArray = Object.keys(section);\n return (\n <div className=\"flex w-full max-w-full flex-col justify-between gap-2\">\n {sectionArray.map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Object, key },\n ];\n\n const subSection = getContentNodeByKeyPath(sectionProp, childKeyPath);\n const isEditableSubSection = getIsEditableSection(subSection);\n\n if (isEditableSubSection) {\n return (\n <Button\n label={`${goToField.label.value} ${key}`}\n key={key}\n isActive={getIsSelected(childKeyPath)}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(key)}\n </Button>\n );\n }\n\n return (\n <Accordion\n key={key}\n label={`${goToField.label.value} ${key}`}\n isActive={getIsSelected(childKeyPath)}\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n header={camelCaseToSentence(key)}\n >\n <div className=\"mt-2 flex w-full max-w-full\">\n <div className=\"flex-1 pl-10\">\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n </div>\n </div>\n </Accordion>\n );\n })}\n </div>\n );\n }\n\n return (\n <>\n Error loading section --\n {nodeType}\n --\n {JSON.stringify(section)}\n --\n {JSON.stringify(keyPath)}\n </>\n );\n};\n"],"names":["getContentNodeByKeyPath","useEditedContentActions","useFocusDictionary","useDictionary","navigationViewContent","getNodeType","keyPath","isSameKeyPath","getIsEditableSection","jsx","Fragment","Button","ButtonVariant","ButtonColor","ChevronRight","NodeType","jsxs","ButtonTextAlign","sectionArray","getEmptyNode","Plus","isEditableSubSection","Accordion","camelCaseToSentence"],"mappings":";;;;;;;;;;;;;AA6BO,MAAM,YAAsB,CAAC,YAAY,MAAM,UAAU;AAQzD,MAAM,qBAA2C,CAAC;AAAA,EACvD,SAAS;AAAA,EACT;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,YAAY,eAAe;AACnC,QAAM,UAAUA,KAAAA,wBAAwB,aAAa,OAAO;AAC5D,QAAM,EAAE,iBAAA,IAAqBC,oCAAA;AAC7B,QAAM,EAAE,0BAA0B,eAAA,IAAmBC,+BAAA;AACrD,QAAM,EAAE,eAAe,cAAcC,cAAAA,cAAcC,2EAAAA,qBAAqB;AACxE,QAAM,WAAWC,KAAAA,YAAY,OAAO;AACpC,QAAM,gBAAgB,CAACC,cACpB,gBAAgB,SAAS,UAAU,KAAK,KACzCC,KAAAA,cAAcD,UAAS,gBAAgB,WAAW,CAAA,CAAE;AACtD,QAAM,uBAAuBE,sDAAAA,qBAAqB,OAAO;AAEzD,MAAI,CAAC,QAAS,QAAOC,+BAAAC,WAAAA,UAAA,CAAA,CAAE;AAEvB,MAAI,sBAAsB;AACxB,WACED,2BAAAA;AAAAA,MAACE,yBAAAA;AAAAA,MAAA;AAAA,QACC,OAAO,UAAU,MAAM;AAAA,QACvB,SAASC,yBAAAA,cAAc;AAAA,QACvB,OAAOC,yBAAAA,YAAY;AAAA,QACnB,WAAU;AAAA,QACV,SAAS,MAAM,yBAAyB,OAAO;AAAA,QAC/C,WAAWC,YAAAA;AAAAA,QAEV,8CAAoB,QAAQ,QAAQ,SAAS,CAAC,EAAE,GAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAGpE;AAEA,MAAI,OAAO,YAAY,UAAU;AAC/B,QAAI,aAAaC,KAAAA,SAAS,WAAW;AACnC,mEAAS,UAAA,aAAA,CAAU;AAAA,IACrB;AAEA,QAAI,aAAaA,KAAAA,SAAS,aAAa;AACrC,4CACG,OAAA,EAAI,WAAU,uCACZ,UAAA,QAAQ,IAAI,CAAC,mBAAmB;AAC/B,cAAM,eAA0B;AAAA,UAC9B,GAAG;AAAA,UACH,EAAE,MAAMA,KAAAA,SAAS,aAAa,KAAK,eAAA;AAAA,QAAe;AAGpD,eACEN,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS;AAAA,YACT,SAAS;AAAA,YACT;AAAA,UAAA;AAAA,UAHK;AAAA,QAAA;AAAA,MAMX,CAAC,EAAA,CACH;AAAA,IAEJ;AAEA,QAAI,aAAaM,KAAAA,SAAS,eAAe,aAAaA,KAAAA,SAAS,WAAW;AACxE,aACEN,2BAAAA,IAAC,OAAA,EAAI,WAAU,uCACZ,UAAA,OAAO;AAAA,QACL,QAAgB,QAA2C;AAAA,MAAA,EAC5D,IAAI,CAAC,QAAQ;AACb,cAAM,eAA0B;AAAA,UAC9B,GAAG;AAAA,UACH,EAAE,MAAM,UAAU,IAAA;AAAA,QAAI;AAGxB,eACEA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS;AAAA,YACT,SAAS;AAAA,YACT;AAAA,UAAA;AAAA,UAHK;AAAA,QAAA;AAAA,MAMX,CAAC,EAAA,CACH;AAAA,IAEJ;AAEA,QAAI,aAAaM,KAAAA,SAAS,OAAO;AAC/B,aACEC,2BAAAA,KAAC,OAAA,EAAI,WAAU,uCACX,UAAA;AAAA,QAAA,QAAqC,IAAI,CAAC,GAAG,UAAU;AACvD,gBAAM,eAA0B;AAAA,YAC9B,GAAG;AAAA,YACH,EAAE,MAAMD,KAAAA,SAAS,OAAO,KAAK,MAAA;AAAA,UAAM;AAGrC,iBACEN,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEC,SAAS;AAAA,cACT,SAAS;AAAA,cACT;AAAA,YAAA;AAAA,YAHK,KAAK,UAAU,YAAY;AAAA,UAAA;AAAA,QAMtC,CAAC;AAAA,QAEDA,2BAAAA;AAAAA,UAACE,yBAAAA;AAAAA,UAAA;AAAA,YACC,OAAO,cAAc,MAAM;AAAA,YAC3B,SAASC,yBAAAA,cAAc;AAAA,YACvB,OAAOC,yBAAAA,YAAY;AAAA,YACnB,WAAWI,yBAAAA,gBAAgB;AAAA,YAC3B,SAAS,MAAM;AACb,oBAAM,aAAwB;AAAA,gBAC5B,GAAG;AAAA,gBACH;AAAA,kBACE,MAAMF,KAAAA,SAAS;AAAA,kBACf,KAAM,QAAqC;AAAA,gBAAA;AAAA,cAC7C;AAEF,oBAAMG,gBAAe;AACrB,oBAAM,iBACJC,KAAAA;AAAAA,gBACED,cACGA,cAAa,SAAS,CACzB;AAAA,cAAA,KACG;AACP;AAAA,gBACE;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAEF,uCAAyB,UAAU;AAAA,YACrC;AAAA,YACA,MAAME,YAAAA;AAAAA,YAEL,UAAA,cAAc;AAAA,UAAA;AAAA,QAAA;AAAA,MACjB,GACF;AAAA,IAEJ;AAEA,QAAI,OAAO,QAAQ,aAAa,UAAU;AACxC,YAAM,eAA0B;AAAA,QAC9B,GAAG;AAAA,QACH,EAAE,MAAM,QAAQ,SAAA;AAAA,MAAS;AAG3B,aACEX,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,SAAS;AAAA,UACT;AAAA,QAAA;AAAA,MAAA;AAAA,IAGN;AAEA,UAAM,eAAe,OAAO,KAAK,OAAO;AACxC,0CACG,OAAA,EAAI,WAAU,yDACZ,UAAA,aAAa,IAAI,CAAC,QAAQ;AACzB,YAAM,eAA0B;AAAA,QAC9B,GAAG;AAAA,QACH,EAAE,MAAMM,cAAS,QAAQ,IAAA;AAAA,MAAI;AAG/B,YAAM,aAAaf,KAAAA,wBAAwB,aAAa,YAAY;AACpE,YAAMqB,wBAAuBb,sDAAAA,qBAAqB,UAAU;AAE5D,UAAIa,uBAAsB;AACxB,eACEZ,2BAAAA;AAAAA,UAACE,yBAAAA;AAAAA,UAAA;AAAA,YACC,OAAO,GAAG,UAAU,MAAM,KAAK,IAAI,GAAG;AAAA,YAEtC,UAAU,cAAc,YAAY;AAAA,YACpC,SAASC,yBAAAA,cAAc;AAAA,YACvB,OAAOC,yBAAAA,YAAY;AAAA,YACnB,WAAU;AAAA,YACV,SAAS,MAAM,yBAAyB,YAAY;AAAA,YACpD,WAAWC,YAAAA;AAAAA,YAEV,8CAAoB,GAAG;AAAA,UAAA;AAAA,UARnB;AAAA,QAAA;AAAA,MAWX;AAEA,aACEL,2BAAAA;AAAAA,QAACa,+BAAAA;AAAAA,QAAA;AAAA,UAEC,OAAO,GAAG,UAAU,MAAM,KAAK,IAAI,GAAG;AAAA,UACtC,UAAU,cAAc,YAAY;AAAA,UACpC,SAAS,MAAM,yBAAyB,YAAY;AAAA,UACpD,QAAQC,gBAAAA,oBAAoB,GAAG;AAAA,UAE/B,yCAAC,OAAA,EAAI,WAAU,+BACb,UAAAd,2BAAAA,IAAC,OAAA,EAAI,WAAU,gBACb,UAAAA,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,SAAS;AAAA,cACT;AAAA,YAAA;AAAA,UAAA,GAEJ,EAAA,CACF;AAAA,QAAA;AAAA,QAdK;AAAA,MAAA;AAAA,IAiBX,CAAC,EAAA,CACH;AAAA,EAEJ;AAEA,SACEO,2BAAAA,KAAAN,qBAAA,EAAE,UAAA;AAAA,IAAA;AAAA,IAEC;AAAA,IAAS;AAAA,IAET,KAAK,UAAU,OAAO;AAAA,IAAE;AAAA,IAExB,KAAK,UAAU,OAAO;AAAA,EAAA,GACzB;AAEJ;;;"}
|
|
1
|
+
{"version":3,"file":"NavigationViewNode.cjs","sources":["../../../../src/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.tsx"],"sourcesContent":["import configuration from '@intlayer/config/built';\n\nimport {\n getContentNodeByKeyPath,\n getEmptyNode,\n getNodeType,\n isSameKeyPath,\n NodeType,\n type ContentNode,\n type KeyPath,\n} from '@intlayer/core';\nimport {\n useEditedContentActions,\n useFocusDictionary,\n} from '@intlayer/editor-react';\nimport { ChevronRight, Plus } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { camelCaseToSentence } from '../../../utils/camelCase';\nimport { Accordion } from '../../Accordion';\nimport {\n Button,\n ButtonColor,\n ButtonTextAlign,\n ButtonVariant,\n} from '../../Button';\nimport { getIsEditableSection } from '../getIsEditableSection';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\nexport type NodeWrapperProps = {\n dictionaryKey: string;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const NavigationViewNode: FC<NodeWrapperProps> = ({\n section: sectionProp,\n keyPath,\n dictionaryKey,\n}) => {\n const { locales } = configuration?.internationalization;\n const section = getContentNodeByKeyPath(sectionProp, keyPath);\n const { addEditedContent } = useEditedContentActions();\n const { setFocusedContentKeyPath, focusedContent } = useFocusDictionary();\n const { addNewElement, goToField } = useIntlayer('navigation-view');\n const nodeType = getNodeType(section);\n const getIsSelected = (keyPath: KeyPath[]) =>\n (focusedContent?.keyPath?.length ?? 0) > 0 &&\n isSameKeyPath(keyPath, focusedContent?.keyPath ?? []);\n const isEditableSubSection = getIsEditableSection(section);\n\n if (!section) return <></>;\n\n if (isEditableSubSection) {\n return (\n <Button\n label={goToField.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(keyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(keyPath[keyPath.length - 1].key as string)}\n </Button>\n );\n }\n\n if (typeof section === 'object') {\n if (nodeType === NodeType.ReactNode) {\n return <>React Node</>;\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {locales.map((translationKey) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ];\n\n return (\n <NavigationViewNode\n key={translationKey}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeType.Enumeration || nodeType === NodeType.Condition) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {Object.keys(\n (section as any)[nodeType as unknown as keyof typeof section]\n ).map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: nodeType, key },\n ];\n\n return (\n <NavigationViewNode\n key={key}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {(section as unknown as ContentNode[]).map((_, index) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Array, key: index },\n ];\n\n return (\n <NavigationViewNode\n key={JSON.stringify(childKeyPath)}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n );\n })}\n\n <Button\n label={addNewElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n const sectionArray = section as unknown as ContentNode[];\n const emptySectionEl =\n getEmptyNode(\n sectionArray[\n (sectionArray.length - 1) as keyof typeof sectionArray\n ] as ContentNode\n ) ?? '';\n addEditedContent(\n dictionaryKey,\n emptySectionEl,\n newKeyPath,\n false\n );\n setFocusedContentKeyPath(newKeyPath);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n }\n\n if (typeof section.nodeType === 'string') {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: section.nodeType } as KeyPath,\n ];\n\n return (\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n );\n }\n\n const sectionArray = Object.keys(section);\n return (\n <div className=\"flex w-full max-w-full flex-col justify-between gap-2\">\n {sectionArray.map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Object, key },\n ];\n\n const subSection = getContentNodeByKeyPath(sectionProp, childKeyPath);\n const isEditableSubSection = getIsEditableSection(subSection);\n\n if (isEditableSubSection) {\n return (\n <Button\n label={`${goToField.label.value} ${key}`}\n key={key}\n isActive={getIsSelected(childKeyPath)}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(key)}\n </Button>\n );\n }\n\n return (\n <Accordion\n key={key}\n label={`${goToField.label.value} ${key}`}\n isActive={getIsSelected(childKeyPath)}\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n header={camelCaseToSentence(key)}\n >\n <div className=\"mt-2 flex w-full max-w-full\">\n <div className=\"flex-1 pl-10\">\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionaryKey={dictionaryKey}\n />\n </div>\n </div>\n </Accordion>\n );\n })}\n </div>\n );\n }\n\n return (\n <>\n Error loading section --\n {nodeType}\n --\n {JSON.stringify(section)}\n --\n {JSON.stringify(keyPath)}\n </>\n );\n};\n"],"names":["getContentNodeByKeyPath","useEditedContentActions","useFocusDictionary","useIntlayer","getNodeType","keyPath","isSameKeyPath","getIsEditableSection","jsx","Fragment","Button","ButtonVariant","ButtonColor","ChevronRight","NodeType","jsxs","ButtonTextAlign","sectionArray","getEmptyNode","Plus","isEditableSubSection","Accordion","camelCaseToSentence"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationViewNode.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,OAAO,EACb,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"NavigationViewNode.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,OAAO,EACb,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAYhC,eAAO,MAAM,SAAS,EAAE,MAAM,EAAmC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,gBAAgB,CAyNnD,CAAC"}
|
|
@@ -3,12 +3,11 @@ import configuration from "@intlayer/config/built";
|
|
|
3
3
|
import { getContentNodeByKeyPath, getNodeType, NodeType, getEmptyNode, isSameKeyPath } from "@intlayer/core";
|
|
4
4
|
import { useEditedContentActions, useFocusDictionary } from "@intlayer/editor-react";
|
|
5
5
|
import { ChevronRight, Plus } from "lucide-react";
|
|
6
|
-
import {
|
|
6
|
+
import { useIntlayer } from "react-intlayer";
|
|
7
7
|
import { camelCaseToSentence } from "../../../utils/camelCase.mjs";
|
|
8
8
|
import { Accordion } from "../../Accordion/Accordion.mjs";
|
|
9
9
|
import { Button, ButtonColor, ButtonVariant, ButtonTextAlign } from "../../Button/Button.mjs";
|
|
10
10
|
import { getIsEditableSection } from "../getIsEditableSection.mjs";
|
|
11
|
-
import { navigationViewContent } from "./navigationViewNode.content.mjs";
|
|
12
11
|
const traceKeys = ["filePath", "id", "nodeType"];
|
|
13
12
|
const NavigationViewNode = ({
|
|
14
13
|
section: sectionProp,
|
|
@@ -19,7 +18,7 @@ const NavigationViewNode = ({
|
|
|
19
18
|
const section = getContentNodeByKeyPath(sectionProp, keyPath);
|
|
20
19
|
const { addEditedContent } = useEditedContentActions();
|
|
21
20
|
const { setFocusedContentKeyPath, focusedContent } = useFocusDictionary();
|
|
22
|
-
const { addNewElement, goToField } =
|
|
21
|
+
const { addNewElement, goToField } = useIntlayer("navigation-view");
|
|
23
22
|
const nodeType = getNodeType(section);
|
|
24
23
|
const getIsSelected = (keyPath2) => (focusedContent?.keyPath?.length ?? 0) > 0 && isSameKeyPath(keyPath2, focusedContent?.keyPath ?? []);
|
|
25
24
|
const isEditableSubSection = getIsEditableSection(section);
|