@intlayer/design-system 5.1.1 → 5.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/.vite/manifest.json +9 -9
  2. package/dist/components/Auth/ExternalsLoginButtons/ExternalsLoginButtons.cjs +1 -1
  3. package/dist/components/Auth/ExternalsLoginButtons/ExternalsLoginButtons.mjs +1 -1
  4. package/dist/components/Container/index.cjs +4 -1
  5. package/dist/components/Container/index.cjs.map +1 -1
  6. package/dist/components/Container/index.d.ts +1 -1
  7. package/dist/components/Container/index.d.ts.map +1 -1
  8. package/dist/components/Container/index.mjs +4 -1
  9. package/dist/components/Container/index.mjs.map +1 -1
  10. package/dist/components/DictionaryFieldEditor/ContentEditor.cjs +13 -3
  11. package/dist/components/DictionaryFieldEditor/ContentEditor.cjs.map +1 -1
  12. package/dist/components/DictionaryFieldEditor/ContentEditor.d.ts +1 -0
  13. package/dist/components/DictionaryFieldEditor/ContentEditor.d.ts.map +1 -1
  14. package/dist/components/DictionaryFieldEditor/ContentEditor.mjs +13 -3
  15. package/dist/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  16. package/dist/components/DictionaryFieldEditor/ContentEditorView/EditorView.cjs +9 -4
  17. package/dist/components/DictionaryFieldEditor/ContentEditorView/EditorView.cjs.map +1 -1
  18. package/dist/components/DictionaryFieldEditor/ContentEditorView/EditorView.d.ts +1 -0
  19. package/dist/components/DictionaryFieldEditor/ContentEditorView/EditorView.d.ts.map +1 -1
  20. package/dist/components/DictionaryFieldEditor/ContentEditorView/EditorView.mjs +9 -4
  21. package/dist/components/DictionaryFieldEditor/ContentEditorView/EditorView.mjs.map +1 -1
  22. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.cjs +47 -12
  23. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.cjs.map +1 -1
  24. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts +1 -0
  25. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  26. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +47 -12
  27. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  28. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs +5 -3
  29. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs.map +1 -1
  30. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts +5 -1
  31. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  32. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +5 -3
  33. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  34. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs +1 -1
  35. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +1 -1
  36. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs +1 -1
  37. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs.map +1 -1
  38. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +1 -1
  39. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  40. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs +1 -2
  41. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs.map +1 -1
  42. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  43. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -2
  44. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  45. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs +1 -1
  46. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +1 -1
  47. package/dist/components/DictionaryFieldEditor/StructureEditor.cjs +6 -16
  48. package/dist/components/DictionaryFieldEditor/StructureEditor.cjs.map +1 -1
  49. package/dist/components/DictionaryFieldEditor/StructureEditor.d.ts.map +1 -1
  50. package/dist/components/DictionaryFieldEditor/StructureEditor.mjs +7 -17
  51. package/dist/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  52. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.cjs +6 -5
  53. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.cjs.map +1 -1
  54. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.d.ts +7 -0
  55. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  56. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.mjs +9 -8
  57. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  58. package/dist/components/DictionaryFieldEditor/getIsEditableSection.cjs +2 -1
  59. package/dist/components/DictionaryFieldEditor/getIsEditableSection.cjs.map +1 -1
  60. package/dist/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
  61. package/dist/components/DictionaryFieldEditor/getIsEditableSection.mjs +3 -2
  62. package/dist/components/DictionaryFieldEditor/getIsEditableSection.mjs.map +1 -1
  63. package/dist/components/MarkDownRender/index.cjs.map +1 -1
  64. package/dist/components/MarkDownRender/index.d.ts +1 -1
  65. package/dist/components/MarkDownRender/index.d.ts.map +1 -1
  66. package/dist/components/MarkDownRender/index.mjs.map +1 -1
  67. package/dist/{index-BKE0uywA.js → index-BTDHuTxL.js} +2 -2
  68. package/dist/index-BTDHuTxL.js.map +1 -0
  69. package/dist/{index-CsenS2hX.cjs → index-Db5Dym4h.cjs} +2 -2
  70. package/dist/index-Db5Dym4h.cjs.map +1 -0
  71. package/dist/tailwind.css +1 -1
  72. package/package.json +20 -20
  73. package/dist/index-BKE0uywA.js.map +0 -1
  74. package/dist/index-CsenS2hX.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.cjs","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Locales } from '@intlayer/config';\nimport {\n type Dictionary,\n type MarkdownContent,\n type NestedContent,\n type EnumerationContent,\n type TranslationContent,\n NodeType,\n type KeyPath,\n type ContentNode,\n getLocaleName,\n getNodeType,\n type ConditionContent,\n} from '@intlayer/core';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport { Plus, WandSparkles, X } from 'lucide-react';\nimport { type FC } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { useAuditContentDeclarationField } from '../../../hooks';\nimport { renameKey } from '../../../utils/object';\nimport { Button } from '../../Button';\nimport {\n ContentEditorInputProps as ContentEditorInputPropsBase,\n ContentEditorInput as ContentEditorInputBase,\n} from '../../ContentEditor/ContentEditorInput';\nimport {\n ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n ContentEditorTextArea as ContentEditorTextAreaBase,\n} from '../../ContentEditor/ContentEditorTextArea';\nimport { Label } from '../../Label';\nimport { useLocaleSwitcherContent } from '../../LocaleSwitcherContentDropDown';\nimport {\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n SwitchSelector,\n} from '../../SwitchSelector';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { getIsEditableSection } from '../getIsEditableSection';\nimport { navigationViewContent } from '../NavigationView/navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype ContentEditorTextAreaProps = Omit<\n ContentEditorTextAreaPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n const configuration = useConfiguration();\n const { auditContentDeclarationField, isLoading: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n additionalButtons={\n <Button\n Icon={WandSparkles}\n label=\"Audit\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n isLoading={isAuditing}\n onClick={() => {\n auditContentDeclarationField({\n fileContent: JSON.stringify(dictionary),\n keyPath,\n locales: configuration.internationalization.locales ?? [],\n }).then((response) => {\n if (!response.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(dictionary.key, editedContent, keyPath);\n } catch (error) {\n console.error(error);\n }\n });\n }}\n />\n }\n {...props}\n />\n );\n};\n\ntype ContentEditorInputProps = Omit<\n ContentEditorInputPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorInput: FC<ContentEditorInputProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <ContentEditorInputBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n {...props}\n />\n );\n};\n\nconst toggleContent = [\n {\n content: 'False',\n value: false,\n },\n {\n content: 'True',\n value: true,\n },\n] as SwitchSelectorChoices<boolean>;\n\ntype ContentEditorToggleProps = SwitchSelectorProps & {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n};\n\nconst ContentEditorToggle: FC<ContentEditorToggleProps> = ({\n dictionary,\n keyPath,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <SwitchSelector\n choices={toggleContent}\n value={true}\n onChange={(value) => addEditedContent(dictionary.key, value, keyPath)}\n color=\"text\"\n size=\"sm\"\n {...props}\n />\n );\n};\n\nexport type TextEditorProps = {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nconst TranslationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}: TextEditorProps) => {\n const { locale } = useLocale();\n const { selectedLocales, availableLocales } = useLocaleSwitcherContent();\n\n const sectionContent = (section as TranslationContent<string>)[\n NodeType.Translation\n ] as Record<Locales, string>;\n\n const sectionContentKeys = Object.keys(sectionContent) as Locales[];\n\n const isFiltered = availableLocales.length > selectedLocales.length;\n\n const localesList = isFiltered\n ? selectedLocales\n : // If the translation include content in other locales, we display all of them\n [...new Set([...availableLocales, ...sectionContentKeys])];\n\n return (\n <table className=\"w-full gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {localesList.map((translationKey) => (\n <tr key={translationKey} className=\"w-full\" lang={translationKey}>\n <td className=\"flex w-full flex-col p-2\">\n {selectedLocales.length > 1 && (\n <span className=\"w-full p-2 text-xs\">\n {getLocaleName(translationKey, locale)}\n </span>\n )}\n <TextEditor\n section={\n (section as TranslationContent<string>)[NodeType.Translation][\n translationKey\n ] as string\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst EnumerationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full table-fixed gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {Object.keys(\n (section as EnumerationContent<ContentNode>)[NodeType.Enumeration]\n ).map((enumKey) => (\n <tr key={enumKey} className=\"w-full\">\n <td className=\"w-44 p-2\">\n <div className=\"flex gap-1\">\n <Button\n label=\"Remove\"\n variant=\"hoverable\"\n size=\"icon-md\"\n color=\"text\"\n Icon={X}\n className=\"w-16\"\n onClick={() =>\n addEditedContent(dictionary.key, undefined, [\n ...keyPath,\n {\n type: NodeType.Enumeration,\n key: enumKey,\n },\n ])\n }\n />\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeType.Enumeration];\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeType.Enumeration]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </div>\n </td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={\n (section as EnumerationContent<string>)[NodeType.Enumeration][\n enumKey as any\n ] as string\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Enumeration, key: enumKey },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n\n <tfoot>\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }],\n false\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst ConditionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full table-fixed gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {['true', 'false', 'fallback'].map((condKey) => (\n <tr key={condKey} className=\"w-full\">\n <td className=\"w-44 p-2\">\n <div className=\"flex gap-1\">\n <Button\n label=\"Remove\"\n variant=\"hoverable\"\n size=\"icon-md\"\n color=\"text\"\n Icon={X}\n className=\"w-16\"\n onClick={() =>\n addEditedContent(dictionary.key, undefined, [\n ...keyPath,\n {\n type: NodeType.Condition,\n key: condKey,\n },\n ])\n }\n />\n <EnumKeyInput\n value={condKey}\n onChange={(value) => {\n const preValueContent = (\n section as ConditionContent<string>\n )[NodeType.Condition];\n const newValueContent = renameKey(\n preValueContent,\n condKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as ConditionContent<string>),\n [NodeType.Condition]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </div>\n </td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={\n (section as EnumerationContent<string>)[NodeType.Enumeration][\n condKey as any\n ] as string\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: parseInt(condKey),\n } as KeyPath,\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n\n <tfoot>\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }],\n false\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst ArrayTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewElement } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {(section as unknown as ContentNode[]).map((subSection, index) => (\n <tr key={JSON.stringify(subSection)} className=\"w-full\">\n <td className=\"p-2\">{index}</td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={subSection}\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: index,\n },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <Button\n label={addNewElement.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"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 addEditedContent(dictionary.key, '', newKeyPath, false);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={[...keyPath, { type: NodeType.Markdown }]}\n dictionary={dictionary}\n >\n {(section as MarkdownContent)[NodeType.Markdown]}\n </ContentEditorTextArea>\n </div>\n );\n};\n\nconst NestedTextEditor: FC<TextEditorProps> = ({\n keyPath,\n dictionary,\n section,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n const content = (section as NestedContent)[NodeType.Nested];\n const childrenKeyPath = [...keyPath, { type: NodeType.Nested }] as KeyPath[];\n\n return (\n <div className=\"w-full p-2\">\n <Label>Dictionary key</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n dictionaryKey: String(newValue),\n },\n childrenKeyPath\n );\n }}\n {...props}\n >\n {content.dictionaryKey ?? ''}\n </ContentEditorInputBase>\n\n <Label>Path (optional)</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n path: newValue !== '' ? newValue : undefined,\n },\n childrenKeyPath\n );\n }}\n {...props}\n >\n {content.path ?? ''}\n </ContentEditorInputBase>\n </div>\n );\n};\n\nexport const TextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { tsxNotEditable } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n const isEditableSection = getIsEditableSection(section);\n\n if (!isEditableSection) return <></>;\n\n if (typeof section === 'object') {\n if (nodeType === NodeType.ReactNode) {\n return (\n <>\n <span>[React Node]</span>\n <span className=\"text-neutral dark:text-neutral-dark text-xs\">\n {tsxNotEditable}\n </span>\n </>\n );\n }\n\n if (nodeType === NodeType.Nested) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Enumeration) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Condition) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Markdown) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n }\n\n if (nodeType === NodeType.Number) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorInput\n dictionary={dictionary}\n keyPath={keyPath}\n type=\"number\"\n aria-label=\"Edit field\"\n >\n {section as number}\n </ContentEditorInput>\n </div>\n );\n }\n\n if (nodeType === NodeType.Text) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={keyPath}\n dictionary={dictionary}\n >\n {section as string}\n </ContentEditorTextArea>\n </div>\n );\n }\n\n if (nodeType === NodeType.Boolean) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorToggle\n dictionary={dictionary}\n keyPath={keyPath}\n value={section as boolean}\n />\n </div>\n );\n }\n\n return (\n <div className=\"w-full p-2\">\n Error. Format not supported.\n {JSON.stringify(section)}\n </div>\n );\n};\n"],"names":["useEditedContent","useConfiguration","useAuditContentDeclarationField","jsx","ContentEditorTextAreaBase","Button","WandSparkles","ContentEditorInputBase","SwitchSelector","useLocale","useLocaleSwitcherContent","NodeType","jsxs","getLocaleName","useDictionary","navigationViewContent","X","EnumKeyInput","renameKey","Plus","Label","getNodeType","getIsEditableSection","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"TextEditor.cjs","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Locales } from '@intlayer/config';\nimport {\n type Dictionary,\n type MarkdownContent,\n type NestedContent,\n type EnumerationContent,\n type TranslationContent,\n NodeType,\n type KeyPath,\n type ContentNode,\n getLocaleName,\n getNodeType,\n type ConditionContent,\n} from '@intlayer/core';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport { Plus, WandSparkles, X } from 'lucide-react';\nimport { useState, type FC } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { useAuditContentDeclarationField } from '../../../hooks';\nimport { renameKey } from '../../../utils/object';\nimport { Button } from '../../Button';\nimport {\n ContentEditorInputProps as ContentEditorInputPropsBase,\n ContentEditorInput as ContentEditorInputBase,\n} from '../../ContentEditor/ContentEditorInput';\nimport {\n ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n ContentEditorTextArea as ContentEditorTextAreaBase,\n} from '../../ContentEditor/ContentEditorTextArea';\nimport { Label } from '../../Label';\nimport { useLocaleSwitcherContent } from '../../LocaleSwitcherContentDropDown';\nimport { MarkdownRenderer } from '../../MarkDownRender';\nimport {\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n SwitchSelector,\n} from '../../SwitchSelector';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { getIsEditableSection } from '../getIsEditableSection';\nimport { navigationViewContent } from '../NavigationView/navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype ContentEditorTextAreaProps = Omit<\n ContentEditorTextAreaPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n const configuration = useConfiguration();\n const { auditContentDeclarationField, isLoading: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n additionalButtons={\n <Button\n Icon={WandSparkles}\n label=\"Audit\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n isLoading={isAuditing}\n onClick={() => {\n auditContentDeclarationField({\n fileContent: JSON.stringify(dictionary),\n keyPath,\n locales: configuration.internationalization.locales ?? [],\n }).then((response) => {\n if (!response.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(dictionary.key, editedContent, keyPath);\n } catch (error) {\n console.error(error);\n }\n });\n }}\n />\n }\n {...props}\n />\n );\n};\n\ntype ContentEditorInputProps = Omit<\n ContentEditorInputPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorInput: FC<ContentEditorInputProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <ContentEditorInputBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n {...props}\n />\n );\n};\n\nconst toggleContent = [\n {\n content: 'False',\n value: false,\n },\n {\n content: 'True',\n value: true,\n },\n] as SwitchSelectorChoices<boolean>;\n\ntype ContentEditorToggleProps = SwitchSelectorProps & {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n};\n\nconst ContentEditorToggle: FC<ContentEditorToggleProps> = ({\n dictionary,\n keyPath,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <SwitchSelector\n choices={toggleContent}\n value={true}\n onChange={(value) => addEditedContent(dictionary.key, value, keyPath)}\n color=\"text\"\n size=\"sm\"\n {...props}\n />\n );\n};\n\nexport type TextEditorProps = {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n section: ContentNode;\n isDarkMode?: boolean;\n};\n\nconst TranslationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}: TextEditorProps) => {\n const { locale } = useLocale();\n const { selectedLocales, availableLocales } = useLocaleSwitcherContent();\n\n const sectionContent = (section as TranslationContent<string>)[\n NodeType.Translation\n ] as Record<Locales, string>;\n\n const sectionContentKeys = Object.keys(sectionContent) as Locales[];\n\n const isFiltered = availableLocales.length > selectedLocales.length;\n\n const localesList = isFiltered\n ? selectedLocales\n : // If the translation include content in other locales, we display all of them\n [...new Set([...availableLocales, ...sectionContentKeys])];\n\n return (\n <table className=\"w-full gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {localesList.map((translationKey) => (\n <tr key={translationKey} className=\"w-full\" lang={translationKey}>\n <td className=\"flex w-full flex-col p-2\">\n {selectedLocales.length > 1 && (\n <span className=\"w-full p-2 text-xs\">\n {getLocaleName(translationKey, locale)}\n </span>\n )}\n <TextEditor\n section={\n (section as TranslationContent<string>)[NodeType.Translation][\n translationKey\n ] as string\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst EnumerationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full table-fixed gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {Object.keys(\n (section as EnumerationContent<ContentNode>)[NodeType.Enumeration]\n ).map((enumKey) => (\n <tr key={enumKey} className=\"w-full\">\n <td className=\"w-44 p-2\">\n <div className=\"flex gap-1\">\n <Button\n label=\"Remove\"\n variant=\"hoverable\"\n size=\"icon-md\"\n color=\"text\"\n Icon={X}\n className=\"w-16\"\n onClick={() =>\n addEditedContent(dictionary.key, undefined, [\n ...keyPath,\n {\n type: NodeType.Enumeration,\n key: enumKey,\n },\n ])\n }\n />\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeType.Enumeration];\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeType.Enumeration]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </div>\n </td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={\n (section as EnumerationContent<string>)[NodeType.Enumeration][\n enumKey as any\n ] as string\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Enumeration, key: enumKey },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n\n <tfoot>\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }],\n false\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst ConditionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full table-fixed gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {['true', 'false', 'fallback'].map((condKey) => (\n <tr key={condKey} className=\"w-full\">\n <td className=\"w-44 p-2\">\n <div className=\"flex gap-1\">\n <Button\n label=\"Remove\"\n variant=\"hoverable\"\n size=\"icon-md\"\n color=\"text\"\n Icon={X}\n className=\"w-16\"\n onClick={() =>\n addEditedContent(dictionary.key, undefined, [\n ...keyPath,\n {\n type: NodeType.Condition,\n key: condKey,\n },\n ])\n }\n />\n <EnumKeyInput\n value={condKey}\n onChange={(value) => {\n const preValueContent = (\n section as ConditionContent<string>\n )[NodeType.Condition];\n const newValueContent = renameKey(\n preValueContent,\n condKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as ConditionContent<string>),\n [NodeType.Condition]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </div>\n </td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={\n (section as EnumerationContent<string>)[NodeType.Enumeration][\n condKey as any\n ] as string\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: parseInt(condKey),\n } as KeyPath,\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n\n <tfoot>\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }],\n false\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst ArrayTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewElement } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {(section as unknown as ContentNode[]).map((subSection, index) => (\n <tr key={JSON.stringify(subSection)} className=\"w-full\">\n <td className=\"p-2\">{index}</td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={subSection}\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: index,\n },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <Button\n label={addNewElement.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"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 addEditedContent(dictionary.key, '', newKeyPath, false);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nenum MarkdownViewMode {\n Edit,\n Preview,\n}\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n}) => {\n const [mode, setMode] = useState(MarkdownViewMode.Edit);\n const toggleContent = [\n {\n content: 'Edit',\n value: MarkdownViewMode.Edit,\n },\n {\n content: 'Preview',\n value: MarkdownViewMode.Preview,\n },\n ] as SwitchSelectorChoices<MarkdownViewMode>;\n\n const content = (section as MarkdownContent)[NodeType.Markdown];\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <SwitchSelector\n choices={toggleContent}\n value={mode}\n onChange={setMode}\n color=\"text\"\n size=\"sm\"\n className=\"ml-auto\"\n />\n {mode === MarkdownViewMode.Edit && (\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={[...keyPath, { type: NodeType.Markdown }]}\n dictionary={dictionary}\n >\n {content}\n </ContentEditorTextArea>\n )}\n {mode === MarkdownViewMode.Preview && (\n <MarkdownRenderer isDarkMode={isDarkMode}>{content}</MarkdownRenderer>\n )}\n </div>\n );\n};\n\nconst NestedTextEditor: FC<TextEditorProps> = ({\n keyPath,\n dictionary,\n section,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n const content = (section as NestedContent)[NodeType.Nested];\n const childrenKeyPath = [...keyPath, { type: NodeType.Nested }] as KeyPath[];\n\n return (\n <div className=\"w-full p-2\">\n <Label>Dictionary key</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n dictionaryKey: String(newValue),\n },\n childrenKeyPath\n );\n }}\n {...props}\n >\n {content.dictionaryKey ?? ''}\n </ContentEditorInputBase>\n\n <Label>Path (optional)</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n path: newValue !== '' ? newValue : undefined,\n },\n childrenKeyPath\n );\n }}\n {...props}\n >\n {content.path ?? ''}\n </ContentEditorInputBase>\n </div>\n );\n};\n\nexport const TextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n}) => {\n const { tsxNotEditable } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n const isEditableSection = getIsEditableSection(section);\n\n if (!isEditableSection) return <></>;\n\n if (typeof section === 'object') {\n if (nodeType === NodeType.ReactNode) {\n return (\n <>\n <span>[React Node]</span>\n <span className=\"text-neutral dark:text-neutral-dark text-xs\">\n {tsxNotEditable}\n </span>\n </>\n );\n }\n\n if (nodeType === NodeType.Nested) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Enumeration) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Condition) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Markdown) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n isDarkMode={isDarkMode}\n />\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n }\n\n if (nodeType === NodeType.Number) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorInput\n dictionary={dictionary}\n keyPath={keyPath}\n type=\"number\"\n aria-label=\"Edit field\"\n >\n {section as number}\n </ContentEditorInput>\n </div>\n );\n }\n\n if (nodeType === NodeType.Text) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={keyPath}\n dictionary={dictionary}\n >\n {section as string}\n </ContentEditorTextArea>\n </div>\n );\n }\n\n if (nodeType === NodeType.Boolean) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorToggle\n dictionary={dictionary}\n keyPath={keyPath}\n value={section as boolean}\n />\n </div>\n );\n }\n\n return (\n <div className=\"w-full p-2\">\n Error. Format not supported.\n {JSON.stringify(section)}\n </div>\n );\n};\n"],"names":["useEditedContent","useConfiguration","useAuditContentDeclarationField","jsx","ContentEditorTextAreaBase","Button","WandSparkles","ContentEditorInputBase","SwitchSelector","useLocale","useLocaleSwitcherContent","NodeType","jsxs","getLocaleName","useDictionary","navigationViewContent","X","EnumKeyInput","renameKey","Plus","useState","toggleContent","MarkdownRenderer","Label","getNodeType","getIsEditableSection","Fragment"],"mappings":"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"}
@@ -5,6 +5,7 @@ export type TextEditorProps = {
5
5
  dictionary: Dictionary;
6
6
  keyPath: KeyPath[];
7
7
  section: ContentNode;
8
+ isDarkMode?: boolean;
8
9
  };
9
10
  export declare const TextEditor: FC<TextEditorProps>;
10
11
  //# sourceMappingURL=TextEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,UAAU,EAMf,KAAK,OAAO,EACZ,KAAK,WAAW,EAIjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAwBhC,eAAO,MAAM,SAAS,EAAE,MAAM,EAAmC,CAAC;AAwHlE,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AA2XF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAoI1C,CAAC"}
1
+ {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,UAAU,EAMf,KAAK,OAAO,EACZ,KAAK,WAAW,EAIjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAY,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAyB1C,eAAO,MAAM,SAAS,EAAE,MAAM,EAAmC,CAAC;AAwHlE,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AA4ZF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAsI1C,CAAC"}
@@ -3,8 +3,8 @@ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
3
3
  import { getNodeType, NodeType, getLocaleName } from "@intlayer/core";
4
4
  import { useEditedContent, useConfiguration } from "@intlayer/editor-react";
5
5
  import { X, Plus, WandSparkles } from "lucide-react";
6
+ import { useState } from "react";
6
7
  import { useDictionary, useLocale } from "react-intlayer";
7
- import "react";
8
8
  import "../../../hooks/useScrollBlockage/useScrollBlockageStore.mjs";
9
9
  import "../../../hooks/useAsync/useAsyncStateStore.mjs";
10
10
  import { useAuditContentDeclarationField } from "../../../hooks/intlayerAPIHooks.mjs";
@@ -23,6 +23,7 @@ import "../../Input/Checkbox.mjs";
23
23
  import { SwitchSelector } from "../../SwitchSelector/index.mjs";
24
24
  import "../../LocaleSwitcherContentDropDown/localeSwitcher.content.mjs";
25
25
  import { useLocaleSwitcherContent } from "../../LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs";
26
+ import { MarkdownRenderer } from "../../MarkDownRender/index.mjs";
26
27
  import { EnumKeyInput } from "../EnumKeyInput.mjs";
27
28
  import { getIsEditableSection } from "../getIsEditableSection.mjs";
28
29
  import { navigationViewContent } from "../NavigationView/navigationViewNode.content.mjs";
@@ -359,18 +360,50 @@ const ArrayTextEditor = ({
359
360
  const MarkdownTextEditor = ({
360
361
  section,
361
362
  keyPath,
362
- dictionary
363
+ dictionary,
364
+ isDarkMode
363
365
  }) => {
364
- return /* @__PURE__ */ jsx("div", { className: "w-full p-2", children: /* @__PURE__ */ jsx(
365
- ContentEditorTextArea,
366
+ const [mode, setMode] = useState(
367
+ 0
368
+ /* Edit */
369
+ );
370
+ const toggleContent2 = [
366
371
  {
367
- variant: "default",
368
- "aria-label": "Edit field",
369
- keyPath: [...keyPath, { type: NodeType.Markdown }],
370
- dictionary,
371
- children: section[NodeType.Markdown]
372
+ content: "Edit",
373
+ value: 0
374
+ /* Edit */
375
+ },
376
+ {
377
+ content: "Preview",
378
+ value: 1
379
+ /* Preview */
372
380
  }
373
- ) });
381
+ ];
382
+ const content = section[NodeType.Markdown];
383
+ return /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col justify-center gap-6 p-2", children: [
384
+ /* @__PURE__ */ jsx(
385
+ SwitchSelector,
386
+ {
387
+ choices: toggleContent2,
388
+ value: mode,
389
+ onChange: setMode,
390
+ color: "text",
391
+ size: "sm",
392
+ className: "ml-auto"
393
+ }
394
+ ),
395
+ mode === 0 && /* @__PURE__ */ jsx(
396
+ ContentEditorTextArea,
397
+ {
398
+ variant: "default",
399
+ "aria-label": "Edit field",
400
+ keyPath: [...keyPath, { type: NodeType.Markdown }],
401
+ dictionary,
402
+ children: content
403
+ }
404
+ ),
405
+ mode === 1 && /* @__PURE__ */ jsx(MarkdownRenderer, { isDarkMode, children: content })
406
+ ] });
374
407
  };
375
408
  const NestedTextEditor = ({
376
409
  keyPath,
@@ -429,7 +462,8 @@ const NestedTextEditor = ({
429
462
  const TextEditor = ({
430
463
  section,
431
464
  keyPath,
432
- dictionary
465
+ dictionary,
466
+ isDarkMode
433
467
  }) => {
434
468
  const { tsxNotEditable } = useDictionary(navigationViewContent);
435
469
  const nodeType = getNodeType(section);
@@ -488,7 +522,8 @@ const TextEditor = ({
488
522
  {
489
523
  dictionary,
490
524
  keyPath,
491
- section
525
+ section,
526
+ isDarkMode
492
527
  }
493
528
  );
494
529
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.mjs","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Locales } from '@intlayer/config';\nimport {\n type Dictionary,\n type MarkdownContent,\n type NestedContent,\n type EnumerationContent,\n type TranslationContent,\n NodeType,\n type KeyPath,\n type ContentNode,\n getLocaleName,\n getNodeType,\n type ConditionContent,\n} from '@intlayer/core';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport { Plus, WandSparkles, X } from 'lucide-react';\nimport { type FC } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { useAuditContentDeclarationField } from '../../../hooks';\nimport { renameKey } from '../../../utils/object';\nimport { Button } from '../../Button';\nimport {\n ContentEditorInputProps as ContentEditorInputPropsBase,\n ContentEditorInput as ContentEditorInputBase,\n} from '../../ContentEditor/ContentEditorInput';\nimport {\n ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n ContentEditorTextArea as ContentEditorTextAreaBase,\n} from '../../ContentEditor/ContentEditorTextArea';\nimport { Label } from '../../Label';\nimport { useLocaleSwitcherContent } from '../../LocaleSwitcherContentDropDown';\nimport {\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n SwitchSelector,\n} from '../../SwitchSelector';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { getIsEditableSection } from '../getIsEditableSection';\nimport { navigationViewContent } from '../NavigationView/navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype ContentEditorTextAreaProps = Omit<\n ContentEditorTextAreaPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n const configuration = useConfiguration();\n const { auditContentDeclarationField, isLoading: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n additionalButtons={\n <Button\n Icon={WandSparkles}\n label=\"Audit\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n isLoading={isAuditing}\n onClick={() => {\n auditContentDeclarationField({\n fileContent: JSON.stringify(dictionary),\n keyPath,\n locales: configuration.internationalization.locales ?? [],\n }).then((response) => {\n if (!response.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(dictionary.key, editedContent, keyPath);\n } catch (error) {\n console.error(error);\n }\n });\n }}\n />\n }\n {...props}\n />\n );\n};\n\ntype ContentEditorInputProps = Omit<\n ContentEditorInputPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorInput: FC<ContentEditorInputProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <ContentEditorInputBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n {...props}\n />\n );\n};\n\nconst toggleContent = [\n {\n content: 'False',\n value: false,\n },\n {\n content: 'True',\n value: true,\n },\n] as SwitchSelectorChoices<boolean>;\n\ntype ContentEditorToggleProps = SwitchSelectorProps & {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n};\n\nconst ContentEditorToggle: FC<ContentEditorToggleProps> = ({\n dictionary,\n keyPath,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <SwitchSelector\n choices={toggleContent}\n value={true}\n onChange={(value) => addEditedContent(dictionary.key, value, keyPath)}\n color=\"text\"\n size=\"sm\"\n {...props}\n />\n );\n};\n\nexport type TextEditorProps = {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nconst TranslationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}: TextEditorProps) => {\n const { locale } = useLocale();\n const { selectedLocales, availableLocales } = useLocaleSwitcherContent();\n\n const sectionContent = (section as TranslationContent<string>)[\n NodeType.Translation\n ] as Record<Locales, string>;\n\n const sectionContentKeys = Object.keys(sectionContent) as Locales[];\n\n const isFiltered = availableLocales.length > selectedLocales.length;\n\n const localesList = isFiltered\n ? selectedLocales\n : // If the translation include content in other locales, we display all of them\n [...new Set([...availableLocales, ...sectionContentKeys])];\n\n return (\n <table className=\"w-full gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {localesList.map((translationKey) => (\n <tr key={translationKey} className=\"w-full\" lang={translationKey}>\n <td className=\"flex w-full flex-col p-2\">\n {selectedLocales.length > 1 && (\n <span className=\"w-full p-2 text-xs\">\n {getLocaleName(translationKey, locale)}\n </span>\n )}\n <TextEditor\n section={\n (section as TranslationContent<string>)[NodeType.Translation][\n translationKey\n ] as string\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst EnumerationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full table-fixed gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {Object.keys(\n (section as EnumerationContent<ContentNode>)[NodeType.Enumeration]\n ).map((enumKey) => (\n <tr key={enumKey} className=\"w-full\">\n <td className=\"w-44 p-2\">\n <div className=\"flex gap-1\">\n <Button\n label=\"Remove\"\n variant=\"hoverable\"\n size=\"icon-md\"\n color=\"text\"\n Icon={X}\n className=\"w-16\"\n onClick={() =>\n addEditedContent(dictionary.key, undefined, [\n ...keyPath,\n {\n type: NodeType.Enumeration,\n key: enumKey,\n },\n ])\n }\n />\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeType.Enumeration];\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeType.Enumeration]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </div>\n </td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={\n (section as EnumerationContent<string>)[NodeType.Enumeration][\n enumKey as any\n ] as string\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Enumeration, key: enumKey },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n\n <tfoot>\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }],\n false\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst ConditionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full table-fixed gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {['true', 'false', 'fallback'].map((condKey) => (\n <tr key={condKey} className=\"w-full\">\n <td className=\"w-44 p-2\">\n <div className=\"flex gap-1\">\n <Button\n label=\"Remove\"\n variant=\"hoverable\"\n size=\"icon-md\"\n color=\"text\"\n Icon={X}\n className=\"w-16\"\n onClick={() =>\n addEditedContent(dictionary.key, undefined, [\n ...keyPath,\n {\n type: NodeType.Condition,\n key: condKey,\n },\n ])\n }\n />\n <EnumKeyInput\n value={condKey}\n onChange={(value) => {\n const preValueContent = (\n section as ConditionContent<string>\n )[NodeType.Condition];\n const newValueContent = renameKey(\n preValueContent,\n condKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as ConditionContent<string>),\n [NodeType.Condition]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </div>\n </td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={\n (section as EnumerationContent<string>)[NodeType.Enumeration][\n condKey as any\n ] as string\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: parseInt(condKey),\n } as KeyPath,\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n\n <tfoot>\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }],\n false\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst ArrayTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewElement } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {(section as unknown as ContentNode[]).map((subSection, index) => (\n <tr key={JSON.stringify(subSection)} className=\"w-full\">\n <td className=\"p-2\">{index}</td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={subSection}\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: index,\n },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <Button\n label={addNewElement.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"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 addEditedContent(dictionary.key, '', newKeyPath, false);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={[...keyPath, { type: NodeType.Markdown }]}\n dictionary={dictionary}\n >\n {(section as MarkdownContent)[NodeType.Markdown]}\n </ContentEditorTextArea>\n </div>\n );\n};\n\nconst NestedTextEditor: FC<TextEditorProps> = ({\n keyPath,\n dictionary,\n section,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n const content = (section as NestedContent)[NodeType.Nested];\n const childrenKeyPath = [...keyPath, { type: NodeType.Nested }] as KeyPath[];\n\n return (\n <div className=\"w-full p-2\">\n <Label>Dictionary key</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n dictionaryKey: String(newValue),\n },\n childrenKeyPath\n );\n }}\n {...props}\n >\n {content.dictionaryKey ?? ''}\n </ContentEditorInputBase>\n\n <Label>Path (optional)</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n path: newValue !== '' ? newValue : undefined,\n },\n childrenKeyPath\n );\n }}\n {...props}\n >\n {content.path ?? ''}\n </ContentEditorInputBase>\n </div>\n );\n};\n\nexport const TextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { tsxNotEditable } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n const isEditableSection = getIsEditableSection(section);\n\n if (!isEditableSection) return <></>;\n\n if (typeof section === 'object') {\n if (nodeType === NodeType.ReactNode) {\n return (\n <>\n <span>[React Node]</span>\n <span className=\"text-neutral dark:text-neutral-dark text-xs\">\n {tsxNotEditable}\n </span>\n </>\n );\n }\n\n if (nodeType === NodeType.Nested) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Enumeration) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Condition) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Markdown) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n }\n\n if (nodeType === NodeType.Number) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorInput\n dictionary={dictionary}\n keyPath={keyPath}\n type=\"number\"\n aria-label=\"Edit field\"\n >\n {section as number}\n </ContentEditorInput>\n </div>\n );\n }\n\n if (nodeType === NodeType.Text) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={keyPath}\n dictionary={dictionary}\n >\n {section as string}\n </ContentEditorTextArea>\n </div>\n );\n }\n\n if (nodeType === NodeType.Boolean) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorToggle\n dictionary={dictionary}\n keyPath={keyPath}\n value={section as boolean}\n />\n </div>\n );\n }\n\n return (\n <div className=\"w-full p-2\">\n Error. Format not supported.\n {JSON.stringify(section)}\n </div>\n );\n};\n"],"names":["ContentEditorTextAreaBase","ContentEditorInputBase"],"mappings":"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"}
1
+ {"version":3,"file":"TextEditor.mjs","sources":["../../../../src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx"],"sourcesContent":["'use client';\n\nimport type { Locales } from '@intlayer/config';\nimport {\n type Dictionary,\n type MarkdownContent,\n type NestedContent,\n type EnumerationContent,\n type TranslationContent,\n NodeType,\n type KeyPath,\n type ContentNode,\n getLocaleName,\n getNodeType,\n type ConditionContent,\n} from '@intlayer/core';\nimport { useConfiguration, useEditedContent } from '@intlayer/editor-react';\nimport { Plus, WandSparkles, X } from 'lucide-react';\nimport { useState, type FC } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { useAuditContentDeclarationField } from '../../../hooks';\nimport { renameKey } from '../../../utils/object';\nimport { Button } from '../../Button';\nimport {\n ContentEditorInputProps as ContentEditorInputPropsBase,\n ContentEditorInput as ContentEditorInputBase,\n} from '../../ContentEditor/ContentEditorInput';\nimport {\n ContentEditorTextAreaProps as ContentEditorTextAreaPropsBase,\n ContentEditorTextArea as ContentEditorTextAreaBase,\n} from '../../ContentEditor/ContentEditorTextArea';\nimport { Label } from '../../Label';\nimport { useLocaleSwitcherContent } from '../../LocaleSwitcherContentDropDown';\nimport { MarkdownRenderer } from '../../MarkDownRender';\nimport {\n type SwitchSelectorChoices,\n type SwitchSelectorProps,\n SwitchSelector,\n} from '../../SwitchSelector';\nimport { EnumKeyInput } from '../EnumKeyInput';\nimport { getIsEditableSection } from '../getIsEditableSection';\nimport { navigationViewContent } from '../NavigationView/navigationViewNode.content';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\ntype ContentEditorTextAreaProps = Omit<\n ContentEditorTextAreaPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n const configuration = useConfiguration();\n const { auditContentDeclarationField, isLoading: isAuditing } =\n useAuditContentDeclarationField();\n\n return (\n <ContentEditorTextAreaBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n additionalButtons={\n <Button\n Icon={WandSparkles}\n label=\"Audit\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n isLoading={isAuditing}\n onClick={() => {\n auditContentDeclarationField({\n fileContent: JSON.stringify(dictionary),\n keyPath,\n locales: configuration.internationalization.locales ?? [],\n }).then((response) => {\n if (!response.data) return;\n\n try {\n const editedContent = response.data.fileContent as string;\n\n addEditedContent(dictionary.key, editedContent, keyPath);\n } catch (error) {\n console.error(error);\n }\n });\n }}\n />\n }\n {...props}\n />\n );\n};\n\ntype ContentEditorInputProps = Omit<\n ContentEditorInputPropsBase,\n 'onContentChange'\n> & {\n keyPath: KeyPath[];\n dictionary: Dictionary;\n};\n\nconst ContentEditorInput: FC<ContentEditorInputProps> = ({\n keyPath,\n dictionary,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <ContentEditorInputBase\n variant=\"default\"\n onContentChange={(newValue) =>\n addEditedContent(dictionary.key, newValue, keyPath)\n }\n {...props}\n />\n );\n};\n\nconst toggleContent = [\n {\n content: 'False',\n value: false,\n },\n {\n content: 'True',\n value: true,\n },\n] as SwitchSelectorChoices<boolean>;\n\ntype ContentEditorToggleProps = SwitchSelectorProps & {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n};\n\nconst ContentEditorToggle: FC<ContentEditorToggleProps> = ({\n dictionary,\n keyPath,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n return (\n <SwitchSelector\n choices={toggleContent}\n value={true}\n onChange={(value) => addEditedContent(dictionary.key, value, keyPath)}\n color=\"text\"\n size=\"sm\"\n {...props}\n />\n );\n};\n\nexport type TextEditorProps = {\n dictionary: Dictionary;\n keyPath: KeyPath[];\n section: ContentNode;\n isDarkMode?: boolean;\n};\n\nconst TranslationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}: TextEditorProps) => {\n const { locale } = useLocale();\n const { selectedLocales, availableLocales } = useLocaleSwitcherContent();\n\n const sectionContent = (section as TranslationContent<string>)[\n NodeType.Translation\n ] as Record<Locales, string>;\n\n const sectionContentKeys = Object.keys(sectionContent) as Locales[];\n\n const isFiltered = availableLocales.length > selectedLocales.length;\n\n const localesList = isFiltered\n ? selectedLocales\n : // If the translation include content in other locales, we display all of them\n [...new Set([...availableLocales, ...sectionContentKeys])];\n\n return (\n <table className=\"w-full gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {localesList.map((translationKey) => (\n <tr key={translationKey} className=\"w-full\" lang={translationKey}>\n <td className=\"flex w-full flex-col p-2\">\n {selectedLocales.length > 1 && (\n <span className=\"w-full p-2 text-xs\">\n {getLocaleName(translationKey, locale)}\n </span>\n )}\n <TextEditor\n section={\n (section as TranslationContent<string>)[NodeType.Translation][\n translationKey\n ] as string\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\nconst EnumerationTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full table-fixed gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {Object.keys(\n (section as EnumerationContent<ContentNode>)[NodeType.Enumeration]\n ).map((enumKey) => (\n <tr key={enumKey} className=\"w-full\">\n <td className=\"w-44 p-2\">\n <div className=\"flex gap-1\">\n <Button\n label=\"Remove\"\n variant=\"hoverable\"\n size=\"icon-md\"\n color=\"text\"\n Icon={X}\n className=\"w-16\"\n onClick={() =>\n addEditedContent(dictionary.key, undefined, [\n ...keyPath,\n {\n type: NodeType.Enumeration,\n key: enumKey,\n },\n ])\n }\n />\n <EnumKeyInput\n value={enumKey}\n onChange={(value) => {\n const preValueContent = (\n section as EnumerationContent<string>\n )[NodeType.Enumeration];\n const newValueContent = renameKey(\n preValueContent,\n enumKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as EnumerationContent<string>),\n [NodeType.Enumeration]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </div>\n </td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={\n (section as EnumerationContent<string>)[NodeType.Enumeration][\n enumKey as any\n ] as string\n }\n keyPath={[\n ...keyPath,\n { type: NodeType.Enumeration, key: enumKey },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n\n <tfoot>\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }],\n false\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst ConditionTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewEnumeration } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full table-fixed gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {['true', 'false', 'fallback'].map((condKey) => (\n <tr key={condKey} className=\"w-full\">\n <td className=\"w-44 p-2\">\n <div className=\"flex gap-1\">\n <Button\n label=\"Remove\"\n variant=\"hoverable\"\n size=\"icon-md\"\n color=\"text\"\n Icon={X}\n className=\"w-16\"\n onClick={() =>\n addEditedContent(dictionary.key, undefined, [\n ...keyPath,\n {\n type: NodeType.Condition,\n key: condKey,\n },\n ])\n }\n />\n <EnumKeyInput\n value={condKey}\n onChange={(value) => {\n const preValueContent = (\n section as ConditionContent<string>\n )[NodeType.Condition];\n const newValueContent = renameKey(\n preValueContent,\n condKey as keyof typeof preValueContent,\n value\n );\n const newValue = {\n ...(section as ConditionContent<string>),\n [NodeType.Condition]: newValueContent,\n };\n\n addEditedContent(dictionary.key, newValue, keyPath);\n }}\n />\n </div>\n </td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={\n (section as EnumerationContent<string>)[NodeType.Enumeration][\n condKey as any\n ] as string\n }\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: parseInt(condKey),\n } as KeyPath,\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n\n <tfoot>\n <Button\n label={addNewEnumeration.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"left\"\n onClick={() =>\n addEditedContent(\n dictionary.key,\n '',\n [...keyPath, { type: NodeType.Enumeration, key: 'unknown' }],\n false\n )\n }\n Icon={Plus}\n className=\"m-2\"\n >\n {addNewEnumeration.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nconst ArrayTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n}) => {\n const { addEditedContent } = useEditedContent();\n const { addNewElement } = useDictionary(navigationViewContent);\n\n return (\n <table className=\"w-full gap-2\">\n <tbody className=\"divide-y-[1.5px]\">\n {(section as unknown as ContentNode[]).map((subSection, index) => (\n <tr key={JSON.stringify(subSection)} className=\"w-full\">\n <td className=\"p-2\">{index}</td>\n <td className=\"w-full p-2\">\n <TextEditor\n section={subSection}\n keyPath={[\n ...keyPath,\n {\n type: NodeType.Array,\n key: index,\n },\n ]}\n dictionary={dictionary}\n />\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <Button\n label={addNewElement.label.value}\n variant=\"hoverable\"\n color=\"neutral\"\n textAlign=\"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 addEditedContent(dictionary.key, '', newKeyPath, false);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </tfoot>\n </table>\n );\n};\n\nenum MarkdownViewMode {\n Edit,\n Preview,\n}\n\nconst MarkdownTextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n}) => {\n const [mode, setMode] = useState(MarkdownViewMode.Edit);\n const toggleContent = [\n {\n content: 'Edit',\n value: MarkdownViewMode.Edit,\n },\n {\n content: 'Preview',\n value: MarkdownViewMode.Preview,\n },\n ] as SwitchSelectorChoices<MarkdownViewMode>;\n\n const content = (section as MarkdownContent)[NodeType.Markdown];\n\n return (\n <div className=\"flex w-full flex-col justify-center gap-6 p-2\">\n <SwitchSelector\n choices={toggleContent}\n value={mode}\n onChange={setMode}\n color=\"text\"\n size=\"sm\"\n className=\"ml-auto\"\n />\n {mode === MarkdownViewMode.Edit && (\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={[...keyPath, { type: NodeType.Markdown }]}\n dictionary={dictionary}\n >\n {content}\n </ContentEditorTextArea>\n )}\n {mode === MarkdownViewMode.Preview && (\n <MarkdownRenderer isDarkMode={isDarkMode}>{content}</MarkdownRenderer>\n )}\n </div>\n );\n};\n\nconst NestedTextEditor: FC<TextEditorProps> = ({\n keyPath,\n dictionary,\n section,\n ...props\n}) => {\n const { addEditedContent } = useEditedContent();\n\n const content = (section as NestedContent)[NodeType.Nested];\n const childrenKeyPath = [...keyPath, { type: NodeType.Nested }] as KeyPath[];\n\n return (\n <div className=\"w-full p-2\">\n <Label>Dictionary key</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n dictionaryKey: String(newValue),\n },\n childrenKeyPath\n );\n }}\n {...props}\n >\n {content.dictionaryKey ?? ''}\n </ContentEditorInputBase>\n\n <Label>Path (optional)</Label>\n <ContentEditorInputBase\n aria-label=\"Edit field\"\n type=\"text\"\n variant=\"default\"\n onContentChange={(newValue) => {\n addEditedContent(\n dictionary.key,\n {\n ...content,\n path: newValue !== '' ? newValue : undefined,\n },\n childrenKeyPath\n );\n }}\n {...props}\n >\n {content.path ?? ''}\n </ContentEditorInputBase>\n </div>\n );\n};\n\nexport const TextEditor: FC<TextEditorProps> = ({\n section,\n keyPath,\n dictionary,\n isDarkMode,\n}) => {\n const { tsxNotEditable } = useDictionary(navigationViewContent);\n const nodeType = getNodeType(section);\n const isEditableSection = getIsEditableSection(section);\n\n if (!isEditableSection) return <></>;\n\n if (typeof section === 'object') {\n if (nodeType === NodeType.ReactNode) {\n return (\n <>\n <span>[React Node]</span>\n <span className=\"text-neutral dark:text-neutral-dark text-xs\">\n {tsxNotEditable}\n </span>\n </>\n );\n }\n\n if (nodeType === NodeType.Nested) {\n return (\n <NestedTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <TranslationTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Enumeration) {\n return (\n <EnumerationTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Condition) {\n return (\n <ConditionTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n\n if (nodeType === NodeType.Markdown) {\n return (\n <MarkdownTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n isDarkMode={isDarkMode}\n />\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <ArrayTextEditor\n dictionary={dictionary}\n keyPath={keyPath}\n section={section}\n />\n );\n }\n }\n\n if (nodeType === NodeType.Number) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorInput\n dictionary={dictionary}\n keyPath={keyPath}\n type=\"number\"\n aria-label=\"Edit field\"\n >\n {section as number}\n </ContentEditorInput>\n </div>\n );\n }\n\n if (nodeType === NodeType.Text) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorTextArea\n variant=\"default\"\n aria-label=\"Edit field\"\n keyPath={keyPath}\n dictionary={dictionary}\n >\n {section as string}\n </ContentEditorTextArea>\n </div>\n );\n }\n\n if (nodeType === NodeType.Boolean) {\n return (\n <div className=\"w-full p-2\">\n <ContentEditorToggle\n dictionary={dictionary}\n keyPath={keyPath}\n value={section as boolean}\n />\n </div>\n );\n }\n\n return (\n <div className=\"w-full p-2\">\n Error. Format not supported.\n {JSON.stringify(section)}\n </div>\n );\n};\n"],"names":["ContentEditorTextAreaBase","ContentEditorInputBase","toggleContent"],"mappings":"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"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  const jsxRuntime = require("react/jsx-runtime");
5
5
  const reactIntlayer = require("react-intlayer");
6
6
  const hooks_intlayerAPIHooks = require("../../../hooks/intlayerAPIHooks.cjs");
7
- require("../../../index-CsenS2hX.cjs");
7
+ require("../../../index-Db5Dym4h.cjs");
8
8
  require("@intlayer/config/client");
9
9
  require("../../Button/Button.cjs");
10
10
  require("../../Auth/ExternalsLoginButtons/externalsLoginButtons.content.cjs");
@@ -36,7 +36,9 @@ const components_Select_Multiselect = require("../../Select/Multiselect.cjs");
36
36
  require("../../Select/Select.cjs");
37
37
  const components_DictionaryFieldEditor_DictionaryCreationForm_dictionaryCreationForm_content = require("./dictionaryCreationForm.content.cjs");
38
38
  const components_DictionaryFieldEditor_DictionaryCreationForm_useDictionaryFormSchema = require("./useDictionaryFormSchema.cjs");
39
- const DictionaryCreationForm = () => {
39
+ const DictionaryCreationForm = ({
40
+ onDictionaryCreated
41
+ }) => {
40
42
  const { session } = components_Auth_useAuth_index.useAuth();
41
43
  const { project } = session ?? {};
42
44
  const { addDictionary } = hooks_intlayerAPIHooks.useAddDictionary();
@@ -47,7 +49,7 @@ const DictionaryCreationForm = () => {
47
49
  components_DictionaryFieldEditor_DictionaryCreationForm_dictionaryCreationForm_content.dictionaryFormContent
48
50
  );
49
51
  const onSubmitSuccess = async (data) => {
50
- await addDictionary(data);
52
+ await addDictionary(data).then(() => onDictionaryCreated?.());
51
53
  };
52
54
  return /* @__PURE__ */ jsxRuntime.jsxs(
53
55
  components_Form_layout_FormItemLayout.Form,
@@ -1 +1 @@
1
- {"version":3,"file":"DictionaryCreationForm.cjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"sourcesContent":["'use client';\n\nimport { type FC } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAddDictionary,\n useGetProjects,\n} from '../../../hooks/intlayerAPIHooks';\nimport { useAuth } from '../../Auth';\nimport { Form, useForm } from '../../Form';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryFormContent } from './dictionaryCreationForm.content';\nimport {\n useDictionarySchema,\n type DictionaryFormData,\n} from './useDictionaryFormSchema';\n\nexport const DictionaryCreationForm: FC = () => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { addDictionary } = useAddDictionary();\n const { data: projects } = useGetProjects();\n const DictionarySchema = useDictionarySchema(String(project?._id));\n const { form, isSubmitting } = useForm(DictionarySchema);\n const { keyInput, createDictionaryButton, projectInput } = useDictionary(\n dictionaryFormContent\n );\n\n const onSubmitSuccess = async (data: DictionaryFormData) => {\n await addDictionary(data);\n };\n\n return (\n <Form\n schema={DictionarySchema}\n onSubmitSuccess={onSubmitSuccess}\n className=\"w-full max-w-[400px]\"\n {...form}\n >\n <Form.Input\n name=\"key\"\n label={keyInput.label.value}\n placeholder={keyInput.placeholder.value}\n isRequired\n />\n\n <Form.MultiSelect name=\"projectIds\" label={projectInput.label.value}>\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 <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 </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.Button\n className=\"ml-auto mt-12\"\n type=\"submit\"\n color=\"text\"\n isLoading={isSubmitting}\n label={createDictionaryButton.ariaLabel.value}\n >\n {createDictionaryButton.text}\n </Form.Button>\n </Form>\n );\n};\n"],"names":["useAuth","useAddDictionary","useGetProjects","useDictionarySchema","useForm","useDictionary","dictionaryFormContent","jsxs","Form","jsx","MultiSelect","project"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBO,MAAM,yBAA6B,MAAM;AACxC,QAAA,EAAE,QAAQ,IAAIA,sCAAQ;AAC5B,QAAM,EAAE,YAAY,WAAW,CAAC;AAC1B,QAAA,EAAE,cAAc,IAAIC,wCAAiB;AAC3C,QAAM,EAAE,MAAM,SAAS,IAAIC,sCAAe;AAC1C,QAAM,mBAAmBC,gFAAA,oBAAoB,OAAO,SAAS,GAAG,CAAC;AACjE,QAAM,EAAE,MAAM,iBAAiBC,yBAAAA,QAAQ,gBAAgB;AACvD,QAAM,EAAE,UAAU,wBAAwB,aAAiB,IAAAC,cAAA;AAAA,IACzDC,uFAAAA;AAAAA,EACF;AAEM,QAAA,kBAAkB,OAAO,SAA6B;AAC1D,UAAM,cAAc,IAAI;AAAA,EAC1B;AAGE,SAAAC,2BAAA;AAAA,IAACC,sCAAA;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR;AAAA,MACA,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAC,2BAAA;AAAA,UAACD,sCAAAA,KAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,OAAO,SAAS,MAAM;AAAA,YACtB,aAAa,SAAS,YAAY;AAAA,YAClC,YAAU;AAAA,UAAA;AAAA,QACZ;AAAA,QAEAD,2BAAAA,KAACC,2CAAK,aAAL,EAAiB,MAAK,cAAa,OAAO,aAAa,MAAM,OAC5D,UAAA;AAAA,UAAAC,2BAAA;AAAA,YAACC,8BAAAA,YAAY;AAAA,YAAZ;AAAA,cACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACC,aAAY,OAAOA,SAAQ,GAAG,MAAM,KAAK,GAC3D,QAAQ;AAAA,cAGd,yCAACD,8BAAAA,YAAY,OAAZ,EAAkB,aAAa,aAAa,YAAY,MAAO,CAAA;AAAA,YAAA;AAAA,UAClE;AAAA,UACCD,2BAAAA,IAAAC,8BAAAA,YAAY,SAAZ,EACC,UAACD,2BAAA,IAAAC,8BAAA,YAAY,MAAZ,EACE,UAAU,UAAA,MAAM,IAAI,CAACC,aACpBF,2BAAA;AAAA,YAACC,8BAAAA,YAAY;AAAA,YAAZ;AAAA,cAEC,OAAO,OAAOC,SAAQ,GAAG;AAAA,cAExB,UAAAA,SAAQ;AAAA,YAAA;AAAA,YAHJ,OAAOA,SAAQ,GAAG;AAAA,UAK1B,CAAA,EACH,CAAA,EACF,CAAA;AAAA,QAAA,GACF;AAAA,QAEAF,2BAAA;AAAA,UAACD,sCAAAA,KAAK;AAAA,UAAL;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,OAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO,uBAAuB,UAAU;AAAA,YAEvC,UAAuB,uBAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1B;AAAA,IAAA;AAAA,EACF;AAEJ;;"}
1
+ {"version":3,"file":"DictionaryCreationForm.cjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"sourcesContent":["'use client';\n\nimport { type FC } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAddDictionary,\n useGetProjects,\n} from '../../../hooks/intlayerAPIHooks';\nimport { useAuth } from '../../Auth';\nimport { Form, useForm } from '../../Form';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryFormContent } from './dictionaryCreationForm.content';\nimport {\n useDictionarySchema,\n type DictionaryFormData,\n} from './useDictionaryFormSchema';\n\ntype DictionaryCreationFormProps = {\n onDictionaryCreated?: () => void;\n};\n\nexport const DictionaryCreationForm: FC<DictionaryCreationFormProps> = ({\n onDictionaryCreated,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { addDictionary } = useAddDictionary();\n const { data: projects } = useGetProjects();\n const DictionarySchema = useDictionarySchema(String(project?._id));\n const { form, isSubmitting } = useForm(DictionarySchema);\n const { keyInput, createDictionaryButton, projectInput } = useDictionary(\n dictionaryFormContent\n );\n\n const onSubmitSuccess = async (data: DictionaryFormData) => {\n await addDictionary(data).then(() => onDictionaryCreated?.());\n };\n\n return (\n <Form\n schema={DictionarySchema}\n onSubmitSuccess={onSubmitSuccess}\n className=\"w-full max-w-[400px]\"\n {...form}\n >\n <Form.Input\n name=\"key\"\n label={keyInput.label.value}\n placeholder={keyInput.placeholder.value}\n isRequired\n />\n\n <Form.MultiSelect name=\"projectIds\" label={projectInput.label.value}>\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 <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 </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.Button\n className=\"ml-auto mt-12\"\n type=\"submit\"\n color=\"text\"\n isLoading={isSubmitting}\n label={createDictionaryButton.ariaLabel.value}\n >\n {createDictionaryButton.text}\n </Form.Button>\n </Form>\n );\n};\n"],"names":["useAuth","useAddDictionary","useGetProjects","useDictionarySchema","useForm","useDictionary","dictionaryFormContent","jsxs","Form","jsx","MultiSelect","project"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAM,yBAA0D,CAAC;AAAA,EACtE;AACF,MAAM;AACE,QAAA,EAAE,QAAQ,IAAIA,sCAAQ;AAC5B,QAAM,EAAE,YAAY,WAAW,CAAC;AAC1B,QAAA,EAAE,cAAc,IAAIC,wCAAiB;AAC3C,QAAM,EAAE,MAAM,SAAS,IAAIC,sCAAe;AAC1C,QAAM,mBAAmBC,gFAAA,oBAAoB,OAAO,SAAS,GAAG,CAAC;AACjE,QAAM,EAAE,MAAM,iBAAiBC,yBAAAA,QAAQ,gBAAgB;AACvD,QAAM,EAAE,UAAU,wBAAwB,aAAiB,IAAAC,cAAA;AAAA,IACzDC,uFAAAA;AAAAA,EACF;AAEM,QAAA,kBAAkB,OAAO,SAA6B;AAC1D,UAAM,cAAc,IAAI,EAAE,KAAK,MAAM,uBAAuB;AAAA,EAC9D;AAGE,SAAAC,2BAAA;AAAA,IAACC,sCAAA;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR;AAAA,MACA,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAC,2BAAA;AAAA,UAACD,sCAAAA,KAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,OAAO,SAAS,MAAM;AAAA,YACtB,aAAa,SAAS,YAAY;AAAA,YAClC,YAAU;AAAA,UAAA;AAAA,QACZ;AAAA,QAEAD,2BAAAA,KAACC,2CAAK,aAAL,EAAiB,MAAK,cAAa,OAAO,aAAa,MAAM,OAC5D,UAAA;AAAA,UAAAC,2BAAA;AAAA,YAACC,8BAAAA,YAAY;AAAA,YAAZ;AAAA,cACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACC,aAAY,OAAOA,SAAQ,GAAG,MAAM,KAAK,GAC3D,QAAQ;AAAA,cAGd,yCAACD,8BAAAA,YAAY,OAAZ,EAAkB,aAAa,aAAa,YAAY,MAAO,CAAA;AAAA,YAAA;AAAA,UAClE;AAAA,UACCD,2BAAAA,IAAAC,8BAAAA,YAAY,SAAZ,EACC,UAACD,2BAAA,IAAAC,8BAAA,YAAY,MAAZ,EACE,UAAU,UAAA,MAAM,IAAI,CAACC,aACpBF,2BAAA;AAAA,YAACC,8BAAAA,YAAY;AAAA,YAAZ;AAAA,cAEC,OAAO,OAAOC,SAAQ,GAAG;AAAA,cAExB,UAAAA,SAAQ;AAAA,YAAA;AAAA,YAHJ,OAAOA,SAAQ,GAAG;AAAA,UAK1B,CAAA,EACH,CAAA,EACF,CAAA;AAAA,QAAA,GACF;AAAA,QAEAF,2BAAA;AAAA,UAACD,sCAAAA,KAAK;AAAA,UAAL;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,OAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO,uBAAuB,UAAU;AAAA,YAEvC,UAAuB,uBAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1B;AAAA,IAAA;AAAA,EACF;AAEJ;;"}
@@ -1,3 +1,7 @@
1
1
  import { FC } from 'react';
2
- export declare const DictionaryCreationForm: FC;
2
+ type DictionaryCreationFormProps = {
3
+ onDictionaryCreated?: () => void;
4
+ };
5
+ export declare const DictionaryCreationForm: FC<DictionaryCreationFormProps>;
6
+ export {};
3
7
  //# sourceMappingURL=DictionaryCreationForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DictionaryCreationForm.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAehC,eAAO,MAAM,sBAAsB,EAAE,EA+DpC,CAAC"}
1
+ {"version":3,"file":"DictionaryCreationForm.d.ts","sourceRoot":"","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAehC,KAAK,2BAA2B,GAAG;IACjC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAiElE,CAAC"}
@@ -2,7 +2,7 @@
2
2
  import { jsxs, jsx } from "react/jsx-runtime";
3
3
  import { useDictionary } from "react-intlayer";
4
4
  import { useAddDictionary, useGetProjects } from "../../../hooks/intlayerAPIHooks.mjs";
5
- import "../../../index-BKE0uywA.js";
5
+ import "../../../index-BTDHuTxL.js";
6
6
  import "@intlayer/config/client";
7
7
  import "../../Button/Button.mjs";
8
8
  import "../../Auth/ExternalsLoginButtons/externalsLoginButtons.content.mjs";
@@ -34,7 +34,9 @@ import { MultiSelect } from "../../Select/Multiselect.mjs";
34
34
  import "../../Select/Select.mjs";
35
35
  import { dictionaryFormContent } from "./dictionaryCreationForm.content.mjs";
36
36
  import { useDictionarySchema } from "./useDictionaryFormSchema.mjs";
37
- const DictionaryCreationForm = () => {
37
+ const DictionaryCreationForm = ({
38
+ onDictionaryCreated
39
+ }) => {
38
40
  const { session } = useAuth();
39
41
  const { project } = session ?? {};
40
42
  const { addDictionary } = useAddDictionary();
@@ -45,7 +47,7 @@ const DictionaryCreationForm = () => {
45
47
  dictionaryFormContent
46
48
  );
47
49
  const onSubmitSuccess = async (data) => {
48
- await addDictionary(data);
50
+ await addDictionary(data).then(() => onDictionaryCreated?.());
49
51
  };
50
52
  return /* @__PURE__ */ jsxs(
51
53
  Form,
@@ -1 +1 @@
1
- {"version":3,"file":"DictionaryCreationForm.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"sourcesContent":["'use client';\n\nimport { type FC } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAddDictionary,\n useGetProjects,\n} from '../../../hooks/intlayerAPIHooks';\nimport { useAuth } from '../../Auth';\nimport { Form, useForm } from '../../Form';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryFormContent } from './dictionaryCreationForm.content';\nimport {\n useDictionarySchema,\n type DictionaryFormData,\n} from './useDictionaryFormSchema';\n\nexport const DictionaryCreationForm: FC = () => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { addDictionary } = useAddDictionary();\n const { data: projects } = useGetProjects();\n const DictionarySchema = useDictionarySchema(String(project?._id));\n const { form, isSubmitting } = useForm(DictionarySchema);\n const { keyInput, createDictionaryButton, projectInput } = useDictionary(\n dictionaryFormContent\n );\n\n const onSubmitSuccess = async (data: DictionaryFormData) => {\n await addDictionary(data);\n };\n\n return (\n <Form\n schema={DictionarySchema}\n onSubmitSuccess={onSubmitSuccess}\n className=\"w-full max-w-[400px]\"\n {...form}\n >\n <Form.Input\n name=\"key\"\n label={keyInput.label.value}\n placeholder={keyInput.placeholder.value}\n isRequired\n />\n\n <Form.MultiSelect name=\"projectIds\" label={projectInput.label.value}>\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 <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 </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.Button\n className=\"ml-auto mt-12\"\n type=\"submit\"\n color=\"text\"\n isLoading={isSubmitting}\n label={createDictionaryButton.ariaLabel.value}\n >\n {createDictionaryButton.text}\n </Form.Button>\n </Form>\n );\n};\n"],"names":["project"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBO,MAAM,yBAA6B,MAAM;AACxC,QAAA,EAAE,QAAQ,IAAI,QAAQ;AAC5B,QAAM,EAAE,YAAY,WAAW,CAAC;AAC1B,QAAA,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,EAAE,MAAM,SAAS,IAAI,eAAe;AAC1C,QAAM,mBAAmB,oBAAoB,OAAO,SAAS,GAAG,CAAC;AACjE,QAAM,EAAE,MAAM,iBAAiB,QAAQ,gBAAgB;AACvD,QAAM,EAAE,UAAU,wBAAwB,aAAiB,IAAA;AAAA,IACzD;AAAA,EACF;AAEM,QAAA,kBAAkB,OAAO,SAA6B;AAC1D,UAAM,cAAc,IAAI;AAAA,EAC1B;AAGE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR;AAAA,MACA,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAA;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,OAAO,SAAS,MAAM;AAAA,YACtB,aAAa,SAAS,YAAY;AAAA,YAClC,YAAU;AAAA,UAAA;AAAA,QACZ;AAAA,QAEA,qBAAC,KAAK,aAAL,EAAiB,MAAK,cAAa,OAAO,aAAa,MAAM,OAC5D,UAAA;AAAA,UAAA;AAAA,YAAC,YAAY;AAAA,YAAZ;AAAA,cACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACA,aAAY,OAAOA,SAAQ,GAAG,MAAM,KAAK,GAC3D,QAAQ;AAAA,cAGd,8BAAC,YAAY,OAAZ,EAAkB,aAAa,aAAa,YAAY,MAAO,CAAA;AAAA,YAAA;AAAA,UAClE;AAAA,UACC,oBAAA,YAAY,SAAZ,EACC,UAAC,oBAAA,YAAY,MAAZ,EACE,UAAU,UAAA,MAAM,IAAI,CAACA,aACpB;AAAA,YAAC,YAAY;AAAA,YAAZ;AAAA,cAEC,OAAO,OAAOA,SAAQ,GAAG;AAAA,cAExB,UAAAA,SAAQ;AAAA,YAAA;AAAA,YAHJ,OAAOA,SAAQ,GAAG;AAAA,UAK1B,CAAA,EACH,CAAA,EACF,CAAA;AAAA,QAAA,GACF;AAAA,QAEA;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,OAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO,uBAAuB,UAAU;AAAA,YAEvC,UAAuB,uBAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1B;AAAA,IAAA;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"DictionaryCreationForm.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"sourcesContent":["'use client';\n\nimport { type FC } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAddDictionary,\n useGetProjects,\n} from '../../../hooks/intlayerAPIHooks';\nimport { useAuth } from '../../Auth';\nimport { Form, useForm } from '../../Form';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryFormContent } from './dictionaryCreationForm.content';\nimport {\n useDictionarySchema,\n type DictionaryFormData,\n} from './useDictionaryFormSchema';\n\ntype DictionaryCreationFormProps = {\n onDictionaryCreated?: () => void;\n};\n\nexport const DictionaryCreationForm: FC<DictionaryCreationFormProps> = ({\n onDictionaryCreated,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { addDictionary } = useAddDictionary();\n const { data: projects } = useGetProjects();\n const DictionarySchema = useDictionarySchema(String(project?._id));\n const { form, isSubmitting } = useForm(DictionarySchema);\n const { keyInput, createDictionaryButton, projectInput } = useDictionary(\n dictionaryFormContent\n );\n\n const onSubmitSuccess = async (data: DictionaryFormData) => {\n await addDictionary(data).then(() => onDictionaryCreated?.());\n };\n\n return (\n <Form\n schema={DictionarySchema}\n onSubmitSuccess={onSubmitSuccess}\n className=\"w-full max-w-[400px]\"\n {...form}\n >\n <Form.Input\n name=\"key\"\n label={keyInput.label.value}\n placeholder={keyInput.placeholder.value}\n isRequired\n />\n\n <Form.MultiSelect name=\"projectIds\" label={projectInput.label.value}>\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 <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 </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.Button\n className=\"ml-auto mt-12\"\n type=\"submit\"\n color=\"text\"\n isLoading={isSubmitting}\n label={createDictionaryButton.ariaLabel.value}\n >\n {createDictionaryButton.text}\n </Form.Button>\n </Form>\n );\n};\n"],"names":["project"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAM,yBAA0D,CAAC;AAAA,EACtE;AACF,MAAM;AACE,QAAA,EAAE,QAAQ,IAAI,QAAQ;AAC5B,QAAM,EAAE,YAAY,WAAW,CAAC;AAC1B,QAAA,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,EAAE,MAAM,SAAS,IAAI,eAAe;AAC1C,QAAM,mBAAmB,oBAAoB,OAAO,SAAS,GAAG,CAAC;AACjE,QAAM,EAAE,MAAM,iBAAiB,QAAQ,gBAAgB;AACvD,QAAM,EAAE,UAAU,wBAAwB,aAAiB,IAAA;AAAA,IACzD;AAAA,EACF;AAEM,QAAA,kBAAkB,OAAO,SAA6B;AAC1D,UAAM,cAAc,IAAI,EAAE,KAAK,MAAM,uBAAuB;AAAA,EAC9D;AAGE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR;AAAA,MACA,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAA;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,OAAO,SAAS,MAAM;AAAA,YACtB,aAAa,SAAS,YAAY;AAAA,YAClC,YAAU;AAAA,UAAA;AAAA,QACZ;AAAA,QAEA,qBAAC,KAAK,aAAL,EAAiB,MAAK,cAAa,OAAO,aAAa,MAAM,OAC5D,UAAA;AAAA,UAAA;AAAA,YAAC,YAAY;AAAA,YAAZ;AAAA,cACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACA,aAAY,OAAOA,SAAQ,GAAG,MAAM,KAAK,GAC3D,QAAQ;AAAA,cAGd,8BAAC,YAAY,OAAZ,EAAkB,aAAa,aAAa,YAAY,MAAO,CAAA;AAAA,YAAA;AAAA,UAClE;AAAA,UACC,oBAAA,YAAY,SAAZ,EACC,UAAC,oBAAA,YAAY,MAAZ,EACE,UAAU,UAAA,MAAM,IAAI,CAACA,aACpB;AAAA,YAAC,YAAY;AAAA,YAAZ;AAAA,cAEC,OAAO,OAAOA,SAAQ,GAAG;AAAA,cAExB,UAAAA,SAAQ;AAAA,YAAA;AAAA,YAHJ,OAAOA,SAAQ,GAAG;AAAA,UAK1B,CAAA,EACH,CAAA,EACF,CAAA;AAAA,QAAA,GACF;AAAA,QAEA;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,OAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO,uBAAuB,UAAU;AAAA,YAEvC,UAAuB,uBAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1B;AAAA,IAAA;AAAA,EACF;AAEJ;"}
@@ -10,7 +10,7 @@ require("../../../hooks/useScrollBlockage/useScrollBlockageStore.cjs");
10
10
  require("../../../hooks/useAsync/useAsyncStateStore.cjs");
11
11
  const hooks_intlayerAPIHooks = require("../../../hooks/intlayerAPIHooks.cjs");
12
12
  require("deepmerge");
13
- require("../../../index-CsenS2hX.cjs");
13
+ require("../../../index-Db5Dym4h.cjs");
14
14
  require("@intlayer/config/client");
15
15
  require("../../Button/Button.cjs");
16
16
  require("../../Auth/ExternalsLoginButtons/externalsLoginButtons.content.cjs");
@@ -8,7 +8,7 @@ import "../../../hooks/useScrollBlockage/useScrollBlockageStore.mjs";
8
8
  import "../../../hooks/useAsync/useAsyncStateStore.mjs";
9
9
  import { usePushDictionaries, useGetProjects, useGetTags, useAuditContentDeclarationMetadata, useWriteDictionary } from "../../../hooks/intlayerAPIHooks.mjs";
10
10
  import "deepmerge";
11
- import "../../../index-BKE0uywA.js";
11
+ import "../../../index-BTDHuTxL.js";
12
12
  import "@intlayer/config/client";
13
13
  import "../../Button/Button.mjs";
14
14
  import "../../Auth/ExternalsLoginButtons/externalsLoginButtons.content.mjs";
@@ -123,7 +123,7 @@ const DictionaryFieldEditor = ({
123
123
  ),
124
124
  editorView === 0 && /* @__PURE__ */ jsxRuntime.jsx(components_DictionaryFieldEditor_DictionaryDetails_DictionaryDetailsForm.DictionaryDetailsForm, { dictionary, mode }),
125
125
  editorView === 2 && /* @__PURE__ */ jsxRuntime.jsx(components_DictionaryFieldEditor_StructureEditor.StructureEditor, { dictionary }),
126
- editorView === 1 && /* @__PURE__ */ jsxRuntime.jsx(components_DictionaryFieldEditor_ContentEditor.ContentEditor, { dictionary }),
126
+ editorView === 1 && /* @__PURE__ */ jsxRuntime.jsx(components_DictionaryFieldEditor_ContentEditor.ContentEditor, { dictionary, isDarkMode }),
127
127
  editorView === 3 && /* @__PURE__ */ jsxRuntime.jsx(components_DictionaryFieldEditor_JSONEditor.JSONEditor, { dictionary, isDarkMode }),
128
128
  /* @__PURE__ */ jsxRuntime.jsx(components_DictionaryFieldEditor_SaveForm_SaveForm.SaveForm, { dictionary, mode })
129
129
  ]