Merged PR 170: Add new eslint rules
- naming-convention - prefer-arrow-callback - func-style - import/no-default-export
This commit is contained in:
parent
3f58c5ba5e
commit
ad126c6c28
65 changed files with 781 additions and 784 deletions
|
@ -3,7 +3,7 @@ import { IAvailableContainer } from '../Interfaces/IAvailableContainer';
|
|||
import { IAvailableSymbol } from '../Interfaces/IAvailableSymbol';
|
||||
import { IConfiguration } from '../Interfaces/IConfiguration';
|
||||
import { ContainerModel, IContainerModel } from '../Interfaces/IContainerModel';
|
||||
import IContainerProperties from '../Interfaces/IContainerProperties';
|
||||
import { IContainerProperties } from '../Interfaces/IContainerProperties';
|
||||
import { IEditorState } from '../Interfaces/IEditorState';
|
||||
import { ISymbolModel } from '../Interfaces/ISymbolModel';
|
||||
|
||||
|
@ -36,7 +36,7 @@ export const APPLY_BEHAVIORS_ON_CHILDREN = true;
|
|||
/**
|
||||
* Returns the default editor state given the configuration
|
||||
*/
|
||||
export const GetDefaultEditorState = (configuration: IConfiguration): IEditorState => {
|
||||
export function GetDefaultEditorState(configuration: IConfiguration): IEditorState {
|
||||
const mainContainer = new ContainerModel(
|
||||
null,
|
||||
{
|
||||
|
@ -50,22 +50,23 @@ export const GetDefaultEditorState = (configuration: IConfiguration): IEditorSta
|
|||
configuration,
|
||||
history: [
|
||||
{
|
||||
LastAction: '',
|
||||
MainContainer: mainContainer,
|
||||
SelectedContainerId: mainContainer.properties.id,
|
||||
TypeCounters: {},
|
||||
Symbols: new Map(),
|
||||
SelectedSymbolId: ''
|
||||
lastAction: '',
|
||||
mainContainer: mainContainer,
|
||||
selectedContainerId: mainContainer.properties.id,
|
||||
typeCounters: {},
|
||||
symbols: new Map(),
|
||||
selectedSymbolId: ''
|
||||
}
|
||||
],
|
||||
historyCurrentStep: 0
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Default config when the API is not available
|
||||
*/
|
||||
export const DEFAULT_CONFIG: IConfiguration = {
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
AvailableContainers: [
|
||||
{
|
||||
Type: 'Container',
|
||||
|
@ -87,6 +88,7 @@ export const DEFAULT_CONFIG: IConfiguration = {
|
|||
stroke: 'black'
|
||||
}
|
||||
}
|
||||
/* eslint-enable */
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -107,7 +109,7 @@ export const DEFAULT_MAINCONTAINER_PROPS: IContainerProperties = {
|
|||
height: Number(DEFAULT_CONFIG.MainContainer.Height),
|
||||
isAnchor: false,
|
||||
isFlex: false,
|
||||
XPositionReference: XPositionReference.Left,
|
||||
xPositionReference: XPositionReference.Left,
|
||||
style: {
|
||||
stroke: 'black',
|
||||
fillOpacity: 0
|
||||
|
@ -124,42 +126,40 @@ export const DEFAULT_MAINCONTAINER_PROPS: IContainerProperties = {
|
|||
* @param containerConfig default config of the container sent by the API
|
||||
* @returns {IContainerProperties} Default properties of a newly created container
|
||||
*/
|
||||
export const GetDefaultContainerProps = (
|
||||
type: string,
|
||||
export function GetDefaultContainerProps(type: string,
|
||||
typeCount: number,
|
||||
parent: IContainerModel,
|
||||
x: number,
|
||||
y: number,
|
||||
width: number,
|
||||
height: number,
|
||||
containerConfig: IAvailableContainer
|
||||
): IContainerProperties => ({
|
||||
id: `${type}-${typeCount}`,
|
||||
type,
|
||||
parentId: parent.properties.id,
|
||||
linkedSymbolId: '',
|
||||
displayedText: `${type}-${typeCount}`,
|
||||
x,
|
||||
y,
|
||||
margin: containerConfig.Margin ?? {},
|
||||
width,
|
||||
height,
|
||||
isAnchor: false,
|
||||
isFlex: containerConfig.IsFlex ?? containerConfig.Width === undefined,
|
||||
XPositionReference: containerConfig.XPositionReference ?? XPositionReference.Left,
|
||||
minWidth: containerConfig.MinWidth ?? 1,
|
||||
maxWidth: containerConfig.MaxWidth ?? Number.MAX_SAFE_INTEGER,
|
||||
customSVG: containerConfig.CustomSVG,
|
||||
style: structuredClone(containerConfig.Style),
|
||||
userData: structuredClone(containerConfig.UserData)
|
||||
});
|
||||
containerConfig: IAvailableContainer): IContainerProperties {
|
||||
return ({
|
||||
id: `${type}-${typeCount}`,
|
||||
type,
|
||||
parentId: parent.properties.id,
|
||||
linkedSymbolId: '',
|
||||
displayedText: `${type}-${typeCount}`,
|
||||
x,
|
||||
y,
|
||||
margin: containerConfig.Margin ?? {},
|
||||
width,
|
||||
height,
|
||||
isAnchor: false,
|
||||
isFlex: containerConfig.IsFlex ?? containerConfig.Width === undefined,
|
||||
xPositionReference: containerConfig.XPositionReference ?? XPositionReference.Left,
|
||||
minWidth: containerConfig.MinWidth ?? 1,
|
||||
maxWidth: containerConfig.MaxWidth ?? Number.MAX_SAFE_INTEGER,
|
||||
customSVG: containerConfig.CustomSVG,
|
||||
style: structuredClone(containerConfig.Style),
|
||||
userData: structuredClone(containerConfig.UserData)
|
||||
});
|
||||
}
|
||||
|
||||
export const GetDefaultSymbolModel = (
|
||||
name: string,
|
||||
export function GetDefaultSymbolModel(name: string,
|
||||
newCounters: Record<string, number>,
|
||||
type: string,
|
||||
symbolConfig: IAvailableSymbol
|
||||
): ISymbolModel => {
|
||||
symbolConfig: IAvailableSymbol): ISymbolModel {
|
||||
return {
|
||||
id: `${name}-${newCounters[type]}`,
|
||||
type: name,
|
||||
|
@ -169,4 +169,4 @@ export const GetDefaultSymbolModel = (
|
|||
height: symbolConfig.Height ?? DEFAULT_SYMBOL_HEIGHT,
|
||||
linkedContainers: new Set()
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ export function * MakeBFSIterator(root: IContainerModel): Generator<ContainerAnd
|
|||
* Returns the depth of the container
|
||||
* @returns The depth of the container
|
||||
*/
|
||||
export function getDepth(parent: IContainerModel): number {
|
||||
export function GetDepth(parent: IContainerModel): number {
|
||||
let depth = 0;
|
||||
|
||||
let current: IContainerModel | null = parent;
|
||||
|
@ -70,10 +70,10 @@ export function getDepth(parent: IContainerModel): number {
|
|||
* Returns the absolute position by iterating to the parent
|
||||
* @returns The absolute position of the container
|
||||
*/
|
||||
export function getAbsolutePosition(container: IContainerModel): [number, number] {
|
||||
export function GetAbsolutePosition(container: IContainerModel): [number, number] {
|
||||
const x = container.properties.x;
|
||||
const y = container.properties.y;
|
||||
return cancelParentTransform(container.parent, x, y);
|
||||
return CancelParentTransform(container.parent, x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -83,7 +83,7 @@ export function getAbsolutePosition(container: IContainerModel): [number, number
|
|||
* @param y value to be restored
|
||||
* @returns x and y such that the transformations of the parent are cancelled
|
||||
*/
|
||||
export function cancelParentTransform(parent: IContainerModel | null, x: number, y: number): [number, number] {
|
||||
export function CancelParentTransform(parent: IContainerModel | null, x: number, y: number): [number, number] {
|
||||
let current = parent;
|
||||
while (current != null) {
|
||||
x += current.properties.x;
|
||||
|
@ -100,7 +100,7 @@ export function cancelParentTransform(parent: IContainerModel | null, x: number,
|
|||
* @param y value to be restored
|
||||
* @returns x and y such that the transformations of the parent are cancelled
|
||||
*/
|
||||
export function applyParentTransform(parent: IContainerModel | null, x: number, y: number): [number, number] {
|
||||
export function ApplyParentTransform(parent: IContainerModel | null, x: number, y: number): [number, number] {
|
||||
let current = parent;
|
||||
while (current != null) {
|
||||
x -= current.properties.x;
|
||||
|
@ -110,7 +110,7 @@ export function applyParentTransform(parent: IContainerModel | null, x: number,
|
|||
return [x, y];
|
||||
}
|
||||
|
||||
export function findContainerById(root: IContainerModel, id: string): IContainerModel | undefined {
|
||||
export function FindContainerById(root: IContainerModel, id: string): IContainerModel | undefined {
|
||||
const it = MakeIterator(root);
|
||||
for (const container of it) {
|
||||
if (container.properties.id === id) {
|
||||
|
@ -125,13 +125,13 @@ export interface IPair<T> {
|
|||
next: T
|
||||
}
|
||||
|
||||
export function * pairwise<T>(arr: T[]): Generator<IPair<T>, void, unknown> {
|
||||
export function * Pairwise<T>(arr: T[]): Generator<IPair<T>, void, unknown> {
|
||||
for (let i = 0; i < arr.length - 1; i++) {
|
||||
yield { cur: arr[i], next: arr[i + 1] };
|
||||
}
|
||||
}
|
||||
|
||||
export function * reversePairwise<T>(arr: T[]): Generator<IPair<T>, void, unknown> {
|
||||
export function * ReversePairwise<T>(arr: T[]): Generator<IPair<T>, void, unknown> {
|
||||
for (let i = arr.length - 1; i > 0; i--) {
|
||||
yield { cur: arr[i], next: arr[i - 1] };
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { findContainerById, MakeIterator } from './itertools';
|
||||
import { FindContainerById, MakeIterator } from './itertools';
|
||||
import { IEditorState } from '../Interfaces/IEditorState';
|
||||
import { IHistoryState } from '../Interfaces/IHistoryState';
|
||||
|
||||
|
@ -19,34 +19,32 @@ export function Revive(editorState: IEditorState): void {
|
|||
}
|
||||
}
|
||||
|
||||
export const ReviveState = (
|
||||
state: IHistoryState
|
||||
): void => {
|
||||
if (state.MainContainer === null || state.MainContainer === undefined) {
|
||||
export function ReviveState(state: IHistoryState): void {
|
||||
if (state.mainContainer === null || state.mainContainer === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
state.Symbols = new Map(state.Symbols);
|
||||
for (const symbol of state.Symbols.values()) {
|
||||
state.symbols = new Map(state.symbols);
|
||||
for (const symbol of state.symbols.values()) {
|
||||
symbol.linkedContainers = new Set(symbol.linkedContainers);
|
||||
}
|
||||
|
||||
const it = MakeIterator(state.MainContainer);
|
||||
const it = MakeIterator(state.mainContainer);
|
||||
for (const container of it) {
|
||||
const parentId = container.properties.parentId;
|
||||
if (parentId === null) {
|
||||
container.parent = null;
|
||||
continue;
|
||||
}
|
||||
const parent = findContainerById(state.MainContainer, parentId);
|
||||
const parent = FindContainerById(state.mainContainer, parentId);
|
||||
if (parent === undefined) {
|
||||
continue;
|
||||
}
|
||||
container.parent = parent;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export const getCircularReplacer = (): (key: any, value: object | Map<string, any> | null) => object | null | undefined => {
|
||||
export function GetCircularReplacer(): (key: any, value: object | Map<string, any> | null) => object | null | undefined {
|
||||
return (key: any, value: object | null) => {
|
||||
if (key === 'parent') {
|
||||
return;
|
||||
|
@ -62,4 +60,4 @@ export const getCircularReplacer = (): (key: any, value: object | Map<string, an
|
|||
|
||||
return value;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ function GetInitialMatrix(
|
|||
return matrix;
|
||||
}
|
||||
|
||||
function getAllIndexes(arr: number[], val: number): number[] {
|
||||
function GetAllIndexes(arr: number[], val: number): number[] {
|
||||
const indexes = []; let i = -1;
|
||||
while ((i = arr.indexOf(val, i + 1)) !== -1) {
|
||||
indexes.push(i);
|
||||
|
@ -125,9 +125,9 @@ function ApplyMainLoop(oldMatrix: number[][], rowlength: number): number[][] {
|
|||
// 1) find the index with smallest coefficient (O(n)+)
|
||||
const lastRow = matrix[matrix.length - 1];
|
||||
const min = Math.min(...lastRow);
|
||||
const indexes = getAllIndexes(lastRow, min);
|
||||
const indexes = GetAllIndexes(lastRow, min);
|
||||
// to avoid infinite loop try to select the least used selected index
|
||||
const pivotColIndex = getLeastUsedIndex(indexes, indexesTried);
|
||||
const pivotColIndex = GetLeastUsedIndex(indexes, indexesTried);
|
||||
// record the usage of index by incrementing
|
||||
indexesTried[pivotColIndex] = indexesTried[pivotColIndex] !== undefined ? indexesTried[pivotColIndex] + 1 : 1;
|
||||
|
||||
|
@ -227,7 +227,7 @@ function GetSolutions(nCols: number, finalMatrix: number[][]): number[] {
|
|||
* @param indexesTried Record of indexes. Count the number of times the index was used.
|
||||
* @returns The least used index
|
||||
*/
|
||||
function getLeastUsedIndex(indexes: number[], indexesTried: Record<number, number>): number {
|
||||
function GetLeastUsedIndex(indexes: number[], indexesTried: Record<number, number>): number {
|
||||
let minUsed = Infinity;
|
||||
let minIndex = -1;
|
||||
for (const index of indexes) {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
export function truncateString(str: string, num: number): string {
|
||||
export function TruncateString(str: string, num: number): string {
|
||||
if (str.length <= num) {
|
||||
return str;
|
||||
}
|
||||
return `${str.slice(0, num)}...`;
|
||||
}
|
||||
|
||||
export function camelize(str: string): any {
|
||||
export function Camelize(str: string): any {
|
||||
return str.split('-').map((word, index) => index > 0 ? word.charAt(0).toUpperCase() + word.slice(1) : word).join('');
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import { XPositionReference } from '../Enums/XPositionReference';
|
|||
* it is better to fix serialization with the reviver.
|
||||
*/
|
||||
|
||||
export function transformX(x: number, width: number, xPositionReference = XPositionReference.Left): number {
|
||||
export function TransformX(x: number, width: number, xPositionReference = XPositionReference.Left): number {
|
||||
let transformedX = x;
|
||||
if (xPositionReference === XPositionReference.Center) {
|
||||
transformedX += width / 2;
|
||||
|
@ -20,7 +20,7 @@ export function transformX(x: number, width: number, xPositionReference = XPosit
|
|||
return transformedX;
|
||||
}
|
||||
|
||||
export function restoreX(x: number, width: number, xPositionReference = XPositionReference.Left): number {
|
||||
export function RestoreX(x: number, width: number, xPositionReference = XPositionReference.Left): number {
|
||||
let transformedX = x;
|
||||
if (xPositionReference === XPositionReference.Center) {
|
||||
transformedX -= width / 2;
|
||||
|
|
|
@ -7,14 +7,15 @@ afterEach(() => {
|
|||
cleanup();
|
||||
});
|
||||
|
||||
const customRender = (ui: React.ReactElement, options = {}): RenderResult =>
|
||||
render(ui, {
|
||||
function CustomRender(ui: React.ReactElement, options = {}): RenderResult {
|
||||
return render(ui, {
|
||||
// wrap provider(s) here if needed
|
||||
wrapper: ({ children }) => children,
|
||||
...options
|
||||
});
|
||||
}
|
||||
|
||||
export * from '@testing-library/react';
|
||||
export { default as userEvent } from '@testing-library/user-event';
|
||||
// override render export
|
||||
export { customRender as render };
|
||||
export { CustomRender as render };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue