@flowuent-org/diagramming-core 1.0.6 → 1.0.7

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.
@@ -1,25 +1,27 @@
1
- {
2
- "name": "@flowuent-labs/diagrams",
3
- "version": "0.0.1",
4
- "scripts": {
5
- "build": "nx build diagrams",
6
- "generate-barrels": "ctix build"
7
- },
8
- "dependencies": {
9
- "@mui/material": "^6.1.6",
10
- "@types/js-beautify": "^1.14.3",
11
- "core-js": "^3.38.1",
12
- "file-saver": "^2.0.5",
13
- "highlight.js": "^11.10.0",
14
- "js-beautify": "^1.15.1",
15
- "prettier": "^3.3.3",
16
- "react-copy-to-clipboard": "^5.1.0",
17
- "react-syntax-highlighter": "^15.6.1",
18
- "xlsx": "^0.18.5"
19
- },
20
- "devDependencies": {
21
- "@types/file-saver": "^2.0.7",
22
- "ctix": "^2.6.4",
23
- "nx": "^20.3.1"
24
- }
25
- }
1
+ {
2
+ "name": "@flowuent-labs/diagrams",
3
+ "version": "0.0.1",
4
+ "scripts": {
5
+ "build": "nx build diagrams",
6
+ "generate-barrels": "ctix build"
7
+ },
8
+ "dependencies": {
9
+ "@mui/material": "^6.1.6",
10
+ "@types/js-beautify": "^1.14.3",
11
+ "core-js": "^3.38.1",
12
+ "file-saver": "^2.0.5",
13
+ "highlight.js": "^11.10.0",
14
+ "i18next": "^24.0.2",
15
+ "js-beautify": "^1.15.1",
16
+ "prettier": "^3.3.3",
17
+ "react-copy-to-clipboard": "^5.1.0",
18
+ "react-i18next": "^15.1.2",
19
+ "react-syntax-highlighter": "^15.6.1",
20
+ "xlsx": "^0.18.5"
21
+ },
22
+ "devDependencies": {
23
+ "@types/file-saver": "^2.0.7",
24
+ "ctix": "^2.6.4",
25
+ "nx": "^20.3.1"
26
+ }
27
+ }
@@ -1,37 +1,42 @@
1
- {
2
- "name": "diagrams",
3
- "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
- "sourceRoot": "packages/diagrams/src",
5
- "projectType": "library",
6
- "tags": [],
7
- "targets": {
8
- "build": {
9
- "executor": "@nx/rollup:rollup",
10
- "outputs": ["{options.outputPath}"],
11
- "options": {
12
- "outputPath": "dist/packages/diagrams",
13
- "tsConfig": "packages/diagrams/tsconfig.lib.json",
14
- "project": "packages/diagrams/package.json",
15
- "entryFile": "packages/diagrams/src/index.ts",
16
- "external": ["react", "react-dom", "react/jsx-runtime"],
17
- "rollupConfig": "packages/diagrams/rollup.config.js",
18
- "compiler": "babel",
19
- "assets": [
20
- {
21
- "glob": "packages/diagrams/README.md",
22
- "input": ".",
23
- "output": "."
24
- }
25
- ],
26
- "buildableProjectDepsInPackageJsonType": "peerDependencies"
27
- },
28
- "configurations": {
29
- "production": {
30
- "optimization": true,
31
- "extractLicenses": true,
32
- "inspect": false
33
- }
34
- }
35
- }
36
- }
37
- }
1
+ {
2
+ "name": "diagrams",
3
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
+ "sourceRoot": "packages/diagrams/src",
5
+ "projectType": "library",
6
+ "tags": [],
7
+ "targets": {
8
+ "build": {
9
+ "executor": "@nx/rollup:rollup",
10
+ "outputs": ["{options.outputPath}"],
11
+ "options": {
12
+ "outputPath": "dist/packages/diagrams",
13
+ "tsConfig": "packages/diagrams/tsconfig.lib.json",
14
+ "project": "packages/diagrams/package.json",
15
+ "entryFile": "packages/diagrams/src/index.ts",
16
+ "external": ["react", "react-dom", "react/jsx-runtime"],
17
+ "rollupConfig": "packages/diagrams/rollup.config.js",
18
+ "compiler": "babel",
19
+ "assets": [
20
+ {
21
+ "glob": "packages/diagrams/README.md",
22
+ "input": ".",
23
+ "output": "."
24
+ },
25
+ {
26
+ "glob": "**/*",
27
+ "input": "packages/diagrams/locales",
28
+ "output": "locales"
29
+ }
30
+ ],
31
+ "buildableProjectDepsInPackageJsonType": "peerDependencies"
32
+ },
33
+ "configurations": {
34
+ "production": {
35
+ "optimization": true,
36
+ "extractLicenses": true,
37
+ "inspect": false
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
@@ -1,26 +1,26 @@
1
- const getRollupOptions = require('@nx/react/plugins/bundle-rollup');
2
- const preserveDirectives = require('rollup-preserve-directives').default;
3
-
4
- module.exports = (options) => {
5
- // Get the default Nx Rollup options
6
- const nxRollupOptions = getRollupOptions(options);
7
-
8
- // Enable tree shaking
9
- nxRollupOptions.treeshake = true; // Explicitly enable tree shaking
10
-
11
- // Add the preserveDirectives plugin to the existing plugins
12
- nxRollupOptions.plugins = [
13
- ...(Array.isArray(nxRollupOptions.plugins) ? nxRollupOptions.plugins : []),
14
- preserveDirectives(),
15
- ];
16
-
17
- // Externalize MUI packages
18
- nxRollupOptions.external = [
19
- ...(Array.isArray(nxRollupOptions.external) ? nxRollupOptions.external : []),
20
- '@mui/material',
21
- '@mui/icons-material',
22
- /^@mui\/icons-material\/.*/,
23
- ];
24
-
25
- return nxRollupOptions;
26
- };
1
+ const getRollupOptions = require('@nx/react/plugins/bundle-rollup');
2
+ const preserveDirectives = require('rollup-preserve-directives').default;
3
+
4
+ module.exports = (options) => {
5
+ // Get the default Nx Rollup options
6
+ const nxRollupOptions = getRollupOptions(options);
7
+
8
+ // Enable tree shaking
9
+ nxRollupOptions.treeshake = true; // Explicitly enable tree shaking
10
+
11
+ // Add the preserveDirectives plugin to the existing plugins
12
+ nxRollupOptions.plugins = [
13
+ ...(Array.isArray(nxRollupOptions.plugins) ? nxRollupOptions.plugins : []),
14
+ preserveDirectives(),
15
+ ];
16
+
17
+ // Externalize MUI packages
18
+ nxRollupOptions.external = [
19
+ ...(Array.isArray(nxRollupOptions.external) ? nxRollupOptions.external : []),
20
+ '@mui/material',
21
+ '@mui/icons-material',
22
+ /^@mui\/icons-material\/.*/,
23
+ ];
24
+
25
+ return nxRollupOptions;
26
+ };
@@ -1,113 +1,116 @@
1
- export * from './lib/externals';
2
- export * from './lib/templates/systemFlow';
3
- export * from './lib/theme';
4
- export * from './lib/atoms/AddNodeAnchor';
5
- export * from './lib/atoms/AddParallelColButton';
6
- export * from './lib/atoms/BendpointNode';
7
- export * from './lib/atoms/CardBlockTypeSelector';
8
- export * from './lib/atoms/CardMainContent';
9
- export * from './lib/atoms/FloatingConnectionLine';
10
- export * from './lib/atoms/MarkerSelector';
11
- export * from './lib/atoms/PropertyInput';
12
- export * from './lib/atoms/StyledBox';
13
- export * from './lib/contexts/CardDataProvider';
14
- export * from './lib/contexts/DiagramProvider';
15
- export * from './lib/contexts/diagramStoreTypes';
16
- export * from './lib/contexts/onConnect';
17
- export * from './lib/contexts/onDragStart';
18
- export * from './lib/contexts/onNodeDragEnd';
19
- export * from './lib/contexts/onNodesChange';
20
- export * from './lib/contexts/setContentHeight';
21
- export * from './lib/contexts/setDiagramType';
22
- export * from './lib/contexts/setEdges';
23
- export * from './lib/contexts/setEdgeShapeType';
24
- export * from './lib/contexts/setNodes';
25
- export * from './lib/contexts/setNodeSetting';
26
- export * from './lib/contexts/setPannable';
27
- export * from './lib/contexts/setSelectedEdge';
28
- export * from './lib/contexts/setSelectedNode';
29
- export * from './lib/contexts/undo';
30
- export * from './lib/contexts/updateNodeSetting';
31
- export * from './lib/hooks/customUseReactFlow';
32
- export * from './lib/hooks/updateNodes';
33
- export * from './lib/hooks/useDragCallbacks';
34
- export * from './lib/hooks/useModalControls';
35
- export * from './lib/hooks/useWorkflowNodeActiont';
36
- export * from './lib/hooks/useAutoRegisterFunctions';
37
- export * from './lib/molecules/AddingBlock';
38
- export * from './lib/molecules/animated-add-button';
39
- export * from './lib/molecules/Block';
40
- export * from './lib/molecules/BlockProvider';
41
- export * from './lib/molecules/BlockWrapper';
42
- export * from './lib/molecules/DraggablePane';
43
- export * from './lib/molecules/EntityNodeBlocks';
44
- export * from './lib/molecules/json-viewer';
45
- export * from './lib/molecules/SideHandles';
46
- export * from './lib/molecules/StencilItem';
47
- export * from './lib/molecules/WorkflowNodeActionButtons';
48
- export * from './lib/organisms/AddNodeView';
49
- export * from './lib/organisms/DownloadPanel';
50
- export * from './lib/organisms/EdgeModal';
51
- export * from './lib/organisms/NodeContextMenu';
52
- export * from './lib/organisms/SmartDynamicForm';
53
- export * from './lib/organisms/Stencil';
54
- export * from './lib/organisms/UseDiagramStore';
55
- export * from './lib/organisms/ConditionRuleGroup';
56
- export * from './lib/organisms/WorkflowNode';
57
- export * from './lib/templates/DiagramContainer';
58
- export * from './lib/templates/DiagramContent';
59
- export * from './lib/templates/Diagramming';
60
- export type { DiagrammingPageRef } from './lib/templates/Diagramming';
61
- export * from './lib/templates/PageLinks';
62
- export * from './lib/types/card-node';
63
- export * from './lib/types/collaboration-types';
64
- export * from './lib/types/colors';
65
- export * from './lib/types/edge-types';
66
- export * from './lib/types/hooks.types';
67
- export * from './lib/types/node-types';
68
- export * from './lib/types/SmartDynamicFormField';
69
- export * from './lib/types/stencil-item';
70
- export * from './lib/types/structures';
71
- export * from './lib/types/workflow-content-dynamic-form-type';
72
- export * from './lib/types/FunctionSignature';
73
- export * from './lib/utils/add-new-block';
74
- export * from './lib/utils/add-new-node';
75
- export * from './lib/utils/addToHistory';
76
- export * from './lib/utils/closestPoint';
77
- export * from './lib/utils/color-options';
78
- export * from './lib/utils/compress-img';
79
- export * from './lib/utils/constant-lengths';
80
- export * from './lib/utils/create-updated';
81
- export * from './lib/utils/createHistoryChange';
82
- export * from './lib/utils/edge-hooks';
83
- export * from './lib/utils/elkLayout';
84
- export * from './lib/utils/event-hooks';
85
- export * from './lib/utils/event-store';
86
- export * from './lib/utils/flow-node-hooks';
87
- export * from './lib/utils/flow-to-js';
88
- export * from './lib/utils/helpers.types';
89
- export * from './lib/utils/logger';
90
- export * from './lib/utils/model-hooks';
91
- export * from './lib/utils/node-hooks';
92
- export { useHistory, useHistoryIndex } from './lib/contexts/DiagramProvider';
93
- export * from './lib/utils/object';
94
- export * from './lib/utils/nodeutils';
95
- export * from './lib/utils/utilities';
96
- export * from './lib/utils/vhToPixels';
97
- export * from './lib/assets/markers/markers.param';
98
- export * from './lib/assets/markers/markers.type';
99
- export * from './lib/organisms/Card/card.params';
100
- export * from './lib/organisms/Card/card.types';
101
- export * from './lib/organisms/Card/EntityNode';
102
- export * from './lib/organisms/CustomEdge/custom-edge-generator';
103
- export * from './lib/organisms/CustomEdge/custom-edge.params';
104
- export * from './lib/organisms/CustomEdge/custom-edge.type';
105
- export * from './lib/organisms/PropertiesPane';
106
- export * from './lib/organisms/HistoryPane';
107
- //export * from './lib/types/workflow-node-data-types';
108
- export * from './lib/templates/node-forms/NodeForm';
109
- export { AutomationExecutionEngine } from './lib/utils/AutomationExecutionEngine';
110
- export type {
111
- AutomationLog,
112
- AutomationResult,
113
- } from './lib/utils/AutomationExecutionEngine';
1
+ export * from './lib/externals';
2
+ export * from './lib/i18n';
3
+ export * from './lib/templates/systemFlow';
4
+ export * from './lib/theme';
5
+ export * from './lib/atoms/AddNodeAnchor';
6
+ export * from './lib/atoms/AddParallelColButton';
7
+ export * from './lib/atoms/BendpointNode';
8
+ export * from './lib/atoms/CardBlockTypeSelector';
9
+ export * from './lib/atoms/CardMainContent';
10
+ export * from './lib/atoms/FloatingConnectionLine';
11
+ export * from './lib/atoms/MarkerSelector';
12
+ export * from './lib/atoms/PropertyInput';
13
+ export * from './lib/atoms/StyledBox';
14
+ export * from './lib/contexts/CardDataProvider';
15
+ export * from './lib/contexts/DiagramProvider';
16
+ export * from './lib/contexts/diagramStoreTypes';
17
+ export * from './lib/contexts/onConnect';
18
+ export * from './lib/contexts/onDragStart';
19
+ export * from './lib/contexts/onNodeDragEnd';
20
+ export * from './lib/contexts/onNodesChange';
21
+ export * from './lib/contexts/setContentHeight';
22
+ export * from './lib/contexts/setDiagramType';
23
+ export * from './lib/contexts/setEdges';
24
+ export * from './lib/contexts/setEdgeShapeType';
25
+ export * from './lib/contexts/setNodes';
26
+ export * from './lib/contexts/setNodeSetting';
27
+ export * from './lib/contexts/setPannable';
28
+ export * from './lib/contexts/setSelectedEdge';
29
+ export * from './lib/contexts/setSelectedNode';
30
+ export * from './lib/contexts/undo';
31
+ export * from './lib/contexts/updateNodeSetting';
32
+ export * from './lib/hooks/customUseReactFlow';
33
+ export * from './lib/hooks/updateNodes';
34
+ export * from './lib/hooks/useDragCallbacks';
35
+ export * from './lib/hooks/useModalControls';
36
+ export * from './lib/hooks/useWorkflowNodeActiont';
37
+ export * from './lib/hooks/useAutoRegisterFunctions';
38
+ export * from './lib/molecules/AddingBlock';
39
+ export * from './lib/molecules/animated-add-button';
40
+ export * from './lib/molecules/Block';
41
+ export * from './lib/molecules/BlockProvider';
42
+ export * from './lib/molecules/BlockWrapper';
43
+ export * from './lib/molecules/DraggablePane';
44
+ export * from './lib/molecules/EntityNodeBlocks';
45
+ export * from './lib/molecules/json-viewer';
46
+ export * from './lib/molecules/SideHandles';
47
+ export * from './lib/molecules/StencilItem';
48
+ export * from './lib/molecules/WorkflowNodeActionButtons';
49
+ export * from './lib/organisms/AddNodeView';
50
+ export * from './lib/organisms/DownloadPanel';
51
+ export * from './lib/organisms/EdgeModal';
52
+ export * from './lib/organisms/NodeContextMenu';
53
+ export * from './lib/organisms/SmartDynamicForm';
54
+ export * from './lib/organisms/Stencil';
55
+ export * from './lib/organisms/UseDiagramStore';
56
+ export * from './lib/organisms/ConditionRuleGroup';
57
+ export * from './lib/organisms/WorkflowNode';
58
+ export * from './lib/templates/DiagramContainer';
59
+ export * from './lib/templates/DiagramContent';
60
+ export * from './lib/templates/Diagramming';
61
+ export type { DiagrammingPageRef } from './lib/templates/Diagramming';
62
+ export * from './lib/templates/PageLinks';
63
+ export * from './lib/types/card-node';
64
+ export * from './lib/types/collaboration-types';
65
+ export * from './lib/types/colors';
66
+ export * from './lib/types/edge-types';
67
+ export * from './lib/types/hooks.types';
68
+ export * from './lib/types/node-types';
69
+ export * from './lib/types/SmartDynamicFormField';
70
+ export * from './lib/types/stencil-item';
71
+ export * from './lib/types/structures';
72
+ export * from './lib/types/workflow-content-dynamic-form-type';
73
+ export * from './lib/types/FunctionSignature';
74
+ export * from './lib/utils/add-new-block';
75
+ export * from './lib/utils/add-new-node';
76
+ export * from './lib/utils/addToHistory';
77
+ export * from './lib/utils/closestPoint';
78
+ export * from './lib/utils/color-options';
79
+ export * from './lib/utils/compress-img';
80
+ export * from './lib/utils/constant-lengths';
81
+ export * from './lib/utils/create-updated';
82
+ export * from './lib/utils/createHistoryChange';
83
+ export * from './lib/utils/edge-hooks';
84
+ export * from './lib/utils/elkLayout';
85
+ export * from './lib/utils/event-hooks';
86
+ export * from './lib/utils/event-store';
87
+ export * from './lib/utils/flow-node-hooks';
88
+ export * from './lib/utils/flow-to-js';
89
+ export * from './lib/utils/helpers.types';
90
+ export * from './lib/utils/logger';
91
+ export * from './lib/utils/model-hooks';
92
+ export * from './lib/utils/node-hooks';
93
+ export { useHistory, useHistoryIndex } from './lib/contexts/DiagramProvider';
94
+ export * from './lib/utils/object';
95
+ export * from './lib/utils/nodeutils';
96
+ export * from './lib/utils/utilities';
97
+ export * from './lib/utils/vhToPixels';
98
+ export * from './lib/assets/markers/markers.param';
99
+ export * from './lib/assets/markers/markers.type';
100
+ export * from './lib/organisms/Card/card.params';
101
+ export * from './lib/organisms/Card/card.types';
102
+ export * from './lib/organisms/Card/EntityNode';
103
+ export * from './lib/organisms/CustomEdge/custom-edge-generator';
104
+ export * from './lib/organisms/CustomEdge/custom-edge.params';
105
+ export * from './lib/organisms/CustomEdge/custom-edge.type';
106
+ export * from './lib/organisms/PropertiesPane';
107
+ export * from './lib/organisms/HistoryPane';
108
+ //export * from './lib/types/workflow-node-data-types';
109
+ export * from './lib/templates/node-forms/NodeForm';
110
+ export { AutomationExecutionEngine } from './lib/utils/AutomationExecutionEngine';
111
+ export type {
112
+ AutomationLog,
113
+ AutomationResult,
114
+ } from './lib/utils/AutomationExecutionEngine';
115
+ export * from './lib/components/automation';
116
+ export * from './lib/types/automation-node-data-types';
@@ -264,16 +264,16 @@ export const AutomationEndNode: React.FC<AutomationEndNodeProps> = ({ data, sele
264
264
  label={data.status}
265
265
  size="small"
266
266
  sx={{
267
- backgroundColor: data.status === 'Completed'
268
- ? 'rgba(37, 99, 235, 0.1)'
267
+ backgroundColor: data.status === 'Completed'
268
+ ? 'rgba(37, 99, 235, 0.1)'
269
269
  : data.status === 'Running'
270
- ? 'rgba(251, 191, 36, 0.1)'
271
- : 'rgba(16, 185, 129, 0.1)',
272
- color: data.status === 'Completed'
273
- ? '#93C5FD'
270
+ ? 'rgba(251, 191, 36, 0.1)'
271
+ : 'rgba(16, 185, 129, 0.1)',
272
+ color: data.status === 'Completed'
273
+ ? '#93C5FD'
274
274
  : data.status === 'Running'
275
- ? '#FCD34D'
276
- : '#86EFAC',
275
+ ? '#FCD34D'
276
+ : '#86EFAC',
277
277
  fontWeight: 500,
278
278
  fontSize: '12px',
279
279
  height: '24px',
@@ -339,16 +339,16 @@ export const AutomationFormattingNode: React.FC<AutomationFormattingNodeProps> =
339
339
  label={data.status}
340
340
  size="small"
341
341
  sx={{
342
- backgroundColor: data.status === 'Completed'
343
- ? 'rgba(37, 99, 235, 0.1)'
342
+ backgroundColor: data.status === 'Completed'
343
+ ? 'rgba(37, 99, 235, 0.1)'
344
344
  : data.status === 'Running'
345
- ? 'rgba(251, 191, 36, 0.1)'
346
- : 'rgba(16, 185, 129, 0.1)',
347
- color: data.status === 'Completed'
348
- ? '#93C5FD'
345
+ ? 'rgba(251, 191, 36, 0.1)'
346
+ : 'rgba(16, 185, 129, 0.1)',
347
+ color: data.status === 'Completed'
348
+ ? '#93C5FD'
349
349
  : data.status === 'Running'
350
- ? '#FCD34D'
351
- : '#86EFAC',
350
+ ? '#FCD34D'
351
+ : '#86EFAC',
352
352
  fontWeight: 500,
353
353
  fontSize: '12px',
354
354
  height: '24px',
@@ -43,7 +43,7 @@ export const AutomationStartNode: React.FC<AutomationStartNodeProps> = ({ data,
43
43
  // Get the icon component based on the iconName
44
44
  const IconComponent = getIconByName(data.iconName);
45
45
 
46
-
46
+
47
47
 
48
48
  const handleJsonClick = () => {
49
49
  if (nodeId) setSelectedNode(nodeId);
@@ -265,16 +265,16 @@ export const AutomationStartNode: React.FC<AutomationStartNodeProps> = ({ data,
265
265
  label={data.status}
266
266
  size="small"
267
267
  sx={{
268
- backgroundColor: data.status === 'Completed'
269
- ? 'rgba(37, 99, 235, 0.1)'
268
+ backgroundColor: data.status === 'Completed'
269
+ ? 'rgba(37, 99, 235, 0.1)'
270
270
  : data.status === 'Running'
271
- ? 'rgba(251, 191, 36, 0.1)'
272
- : 'rgba(16, 185, 129, 0.1)',
273
- color: data.status === 'Completed'
274
- ? '#93C5FD'
271
+ ? 'rgba(251, 191, 36, 0.1)'
272
+ : 'rgba(16, 185, 129, 0.1)',
273
+ color: data.status === 'Completed'
274
+ ? '#93C5FD'
275
275
  : data.status === 'Running'
276
- ? '#FCD34D'
277
- : '#86EFAC',
276
+ ? '#FCD34D'
277
+ : '#86EFAC',
278
278
  fontWeight: 500,
279
279
  fontSize: '12px',
280
280
  height: '24px',
@@ -0,0 +1,42 @@
1
+ import i18n from 'i18next';
2
+ import { initReactI18next } from 'react-i18next';
3
+
4
+ // Import translation resources
5
+ import translationEN from '../../locales/en/translation.json';
6
+
7
+ // Initialize i18next for the diagrams library
8
+ export const initDiagramsI18n = (customResources?: any) => {
9
+ // Only initialize if not already initialized
10
+ if (!i18n.isInitialized) {
11
+ i18n.use(initReactI18next).init({
12
+ resources: customResources || {
13
+ en: {
14
+ translation: translationEN,
15
+ },
16
+ },
17
+ fallbackLng: 'en',
18
+ debug: false,
19
+ interpolation: {
20
+ escapeValue: false,
21
+ },
22
+ // Add namespace for the library to avoid conflicts
23
+ defaultNS: 'translation',
24
+ });
25
+ } else if (customResources) {
26
+ // If already initialized, add resources to existing instance
27
+ Object.keys(customResources).forEach((lng) => {
28
+ Object.keys(customResources[lng]).forEach((ns) => {
29
+ i18n.addResourceBundle(lng, ns, customResources[lng][ns], true, true);
30
+ });
31
+ });
32
+ }
33
+
34
+ return i18n;
35
+ };
36
+
37
+ // Export translation resources for manual initialization
38
+ export { translationEN };
39
+
40
+ // Export configured i18n instance
41
+ export default i18n;
42
+