style: auto format whole project
This commit is contained in:
@@ -2,13 +2,12 @@ import { Text, Descendant, Transforms } from 'slate';
|
||||
import { withHistory } from 'slate-history';
|
||||
import { withReact } from 'slate-react';
|
||||
|
||||
import type {
|
||||
CustomEditor,
|
||||
CustomElement,
|
||||
VariableElement,
|
||||
} from './types';
|
||||
import type { CustomEditor, CustomElement, VariableElement } from './types';
|
||||
|
||||
function getStepPosition(id: string, stepsWithVariables: Record<string, unknown>[]) {
|
||||
function getStepPosition(
|
||||
id: string,
|
||||
stepsWithVariables: Record<string, unknown>[]
|
||||
) {
|
||||
const stepIndex = stepsWithVariables.findIndex((stepWithVariables) => {
|
||||
return stepWithVariables.id === id;
|
||||
});
|
||||
@@ -16,30 +15,42 @@ function getStepPosition(id: string, stepsWithVariables: Record<string, unknown>
|
||||
return stepIndex + 1;
|
||||
}
|
||||
|
||||
function humanizeVariableName(variableName: string, stepsWithVariables: Record<string, unknown>[]) {
|
||||
function humanizeVariableName(
|
||||
variableName: string,
|
||||
stepsWithVariables: Record<string, unknown>[]
|
||||
) {
|
||||
const nameWithoutCurlies = variableName.replace(/{{|}}/g, '');
|
||||
const stepId = nameWithoutCurlies.match(stepIdRegExp)?.[1] || '';
|
||||
const stepPosition = getStepPosition(stepId, stepsWithVariables);
|
||||
const humanizedVariableName = nameWithoutCurlies.replace(`step.${stepId}.`, `step${stepPosition}.`);
|
||||
const humanizedVariableName = nameWithoutCurlies.replace(
|
||||
`step.${stepId}.`,
|
||||
`step${stepPosition}.`
|
||||
);
|
||||
|
||||
return humanizedVariableName;
|
||||
}
|
||||
|
||||
const variableRegExp = /({{.*?}})/;
|
||||
const stepIdRegExp = /^step.([\da-zA-Z-]*)/;
|
||||
export const deserialize = (value: string, stepsWithVariables: any[]): Descendant[] => {
|
||||
if (!value) return [{
|
||||
type: 'paragraph',
|
||||
children: [{ text: '', }],
|
||||
}];
|
||||
export const deserialize = (
|
||||
value: string,
|
||||
stepsWithVariables: any[]
|
||||
): Descendant[] => {
|
||||
if (!value)
|
||||
return [
|
||||
{
|
||||
type: 'paragraph',
|
||||
children: [{ text: '' }],
|
||||
},
|
||||
];
|
||||
|
||||
return value.split('\n').map(line => {
|
||||
return value.split('\n').map((line) => {
|
||||
const nodes = line.split(variableRegExp);
|
||||
|
||||
if (nodes.length > 1) {
|
||||
return {
|
||||
type: 'paragraph',
|
||||
children: nodes.map(node => {
|
||||
children: nodes.map((node) => {
|
||||
if (node.match(variableRegExp)) {
|
||||
return {
|
||||
type: 'variable',
|
||||
@@ -52,19 +63,19 @@ export const deserialize = (value: string, stepsWithVariables: any[]): Descendan
|
||||
return {
|
||||
text: node,
|
||||
};
|
||||
})
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'paragraph',
|
||||
children: [{ text: line }],
|
||||
}
|
||||
})
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
export const serialize = (value: Descendant[]): string => {
|
||||
return value.map(node => serializeNode(node)).join('\n');
|
||||
return value.map((node) => serializeNode(node)).join('\n');
|
||||
};
|
||||
|
||||
const serializeNode = (node: CustomElement | Descendant): string => {
|
||||
@@ -76,7 +87,7 @@ const serializeNode = (node: CustomElement | Descendant): string => {
|
||||
return node.value as string;
|
||||
}
|
||||
|
||||
return node.children.map(n => serializeNode(n)).join('');
|
||||
return node.children.map((n) => serializeNode(n)).join('');
|
||||
};
|
||||
|
||||
export const withVariables = (editor: CustomEditor) => {
|
||||
@@ -84,16 +95,20 @@ export const withVariables = (editor: CustomEditor) => {
|
||||
|
||||
editor.isInline = (element: CustomElement) => {
|
||||
return element.type === 'variable' ? true : isInline(element);
|
||||
}
|
||||
};
|
||||
|
||||
editor.isVoid = (element: CustomElement) => {
|
||||
return element.type === 'variable' ? true : isVoid(element);
|
||||
}
|
||||
};
|
||||
|
||||
return editor;
|
||||
}
|
||||
};
|
||||
|
||||
export const insertVariable = (editor: CustomEditor, variableData: Pick<VariableElement, "name" | "value">, stepsWithVariables: Record<string, unknown>[]) => {
|
||||
export const insertVariable = (
|
||||
editor: CustomEditor,
|
||||
variableData: Pick<VariableElement, 'name' | 'value'>,
|
||||
stepsWithVariables: Record<string, unknown>[]
|
||||
) => {
|
||||
const variable: VariableElement = {
|
||||
type: 'variable',
|
||||
name: humanizeVariableName(variableData.name as string, stepsWithVariables),
|
||||
@@ -103,7 +118,7 @@ export const insertVariable = (editor: CustomEditor, variableData: Pick<Variable
|
||||
|
||||
Transforms.insertNodes(editor, variable);
|
||||
Transforms.move(editor);
|
||||
}
|
||||
};
|
||||
|
||||
export const customizeEditor = (editor: CustomEditor): CustomEditor => {
|
||||
return withVariables(withReact(withHistory(editor)));
|
||||
|
Reference in New Issue
Block a user