tidy(ui): mark canvas module attrs readonly

This commit is contained in:
psychedelicious
2024-09-03 10:15:24 +10:00
parent 517946f66e
commit 771c3210b7
25 changed files with 136 additions and 157 deletions

View File

@@ -22,12 +22,11 @@ const DEFAULT_CONFIG: CanvasBackgroundModuleConfig = {
*/
export class CanvasBackgroundModule extends CanvasModuleBase {
readonly type = 'background';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
subscriptions = new Set<() => void>();
config: CanvasBackgroundModuleConfig = DEFAULT_CONFIG;

View File

@@ -26,12 +26,11 @@ const NO_ANCHORS: string[] = [];
*/
export class CanvasBboxModule extends CanvasModuleBase {
readonly type = 'bbox';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
subscriptions: Set<() => void> = new Set();

View File

@@ -27,12 +27,11 @@ const DEFAULT_CONFIG: BrushToolPreviewConfig = {
*/
export class CanvasBrushToolPreview extends CanvasModuleBase {
readonly type = 'brush_tool_preview';
id: string;
path: string[];
parent: CanvasToolModule;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasToolModule;
readonly manager: CanvasManager;
readonly log: Logger;
config: BrushToolPreviewConfig = DEFAULT_CONFIG;

View File

@@ -32,12 +32,11 @@ const DEFAULT_CONFIG: CanvasCacheModuleConfig = {
*/
export class CanvasCacheModule extends CanvasModuleBase {
readonly type = 'cache';
id: string;
path: string[];
log: Logger;
parent: CanvasManager;
manager: CanvasManager;
readonly id: string;
readonly path: string[];
readonly log: Logger;
readonly parent: CanvasManager;
readonly manager: CanvasManager;
config: CanvasCacheModuleConfig = DEFAULT_CONFIG;

View File

@@ -68,12 +68,11 @@ const DEFAULT_CONFIG: ColorPickerToolConfig = {
*/
export class CanvasColorPickerToolPreview extends CanvasModuleBase {
readonly type = 'color_picker_tool_preview';
id: string;
path: string[];
parent: CanvasToolModule;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasToolModule;
readonly manager: CanvasManager;
readonly log: Logger;
config: ColorPickerToolConfig = DEFAULT_CONFIG;

View File

@@ -23,12 +23,11 @@ import { assert } from 'tsafe';
*/
export class CanvasCompositorModule extends CanvasModuleBase {
readonly type = 'compositor';
id: string;
path: string[];
log: Logger;
parent: CanvasManager;
manager: CanvasManager;
readonly id: string;
readonly path: string[];
readonly log: Logger;
readonly parent: CanvasManager;
readonly manager: CanvasManager;
constructor(manager: CanvasManager) {
super();

View File

@@ -33,12 +33,11 @@ import { assert } from 'tsafe';
*/
export class CanvasEntityLayerAdapter extends CanvasModuleBase {
readonly type = 'entity_layer_adapter';
id: string;
path: string[];
manager: CanvasManager;
parent: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly manager: CanvasManager;
readonly parent: CanvasManager;
readonly log: Logger;
/**
* The last known state of the entity.

View File

@@ -23,12 +23,11 @@ import stableHash from 'stable-hash';
export class CanvasEntityMaskAdapter extends CanvasModuleBase {
readonly type = 'entity_mask_adapter';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
state: CanvasInpaintMaskState | CanvasRegionalGuidanceState;

View File

@@ -62,12 +62,11 @@ type AnyObjectState = CanvasBrushLineState | CanvasEraserLineState | CanvasImage
*/
export class CanvasEntityRenderer extends CanvasModuleBase {
readonly type = 'entity_renderer';
id: string;
path: string[];
parent: CanvasEntityLayerAdapter | CanvasEntityMaskAdapter;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasEntityLayerAdapter | CanvasEntityMaskAdapter;
readonly manager: CanvasManager;
readonly log: Logger;
/**
* A set of subscriptions that should be cleaned up when the transformer is destroyed.

View File

@@ -78,12 +78,11 @@ const DEFAULT_CONFIG: CanvasEntityTransformerConfig = {
export class CanvasEntityTransformer extends CanvasModuleBase {
readonly type = 'entity_transformer';
id: string;
path: string[];
parent: CanvasEntityLayerAdapter | CanvasEntityMaskAdapter;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasEntityLayerAdapter | CanvasEntityMaskAdapter;
readonly manager: CanvasManager;
readonly log: Logger;
config: CanvasEntityTransformerConfig = DEFAULT_CONFIG;

View File

@@ -23,12 +23,11 @@ const DEFAULT_CONFIG: EraserToolPreviewConfig = {
export class CanvasEraserToolPreview extends CanvasModuleBase {
readonly type = 'eraser_tool_preview';
id: string;
path: string[];
parent: CanvasToolModule;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasToolModule;
readonly manager: CanvasManager;
readonly log: Logger;
config: EraserToolPreviewConfig = DEFAULT_CONFIG;

View File

@@ -13,12 +13,11 @@ import { assert } from 'tsafe';
export class CanvasFilterModule extends CanvasModuleBase {
readonly type = 'canvas_filter';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
imageState: CanvasImageState | null = null;

View File

@@ -28,12 +28,11 @@ export const $canvasManager = atom<CanvasManager | null>(null);
export class CanvasManager extends CanvasModuleBase {
readonly type = 'manager';
id: string;
path: string[];
manager: CanvasManager;
parent: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly manager: CanvasManager;
readonly parent: CanvasManager;
readonly log: Logger;
store: AppStore;
socket: AppSocket;

View File

@@ -2,7 +2,14 @@ import type { SerializableObject } from 'common/types';
import type { CanvasManager } from 'features/controlLayers/konva/CanvasManager';
import type { Logger } from 'roarr';
/**
* Base class for all canvas modules.
*/
export abstract class CanvasModuleBase {
/**
* The type of the module.
*/
abstract readonly type: string;
/**
* The unique identifier of the module.
*
@@ -15,11 +22,7 @@ export abstract class CanvasModuleBase {
* // this.id -> "raster_layer:aS2NREsrlz"
* ```
*/
abstract id: string;
/**
* The type of the module.
*/
abstract type: string;
abstract readonly id: string;
/**
* The path of the module in the canvas module tree.
*
@@ -31,15 +34,15 @@ export abstract class CanvasModuleBase {
* // this.path -> ["manager:3PWJWmHbou", "raster_layer:aS2NREsrlz", "entity_renderer:sfLO4j1B0n", "brush_line:Zrsu8gpZMd"]
* ```
*/
abstract path: string[];
/**
* The canvas manager.
*/
abstract manager: CanvasManager;
abstract readonly path: string[];
/**
* The parent module. This may be the canvas manager or another module.
*/
abstract parent: CanvasModuleBase;
abstract readonly parent: CanvasModuleBase;
/**
* The canvas manager.
*/
abstract readonly manager: CanvasManager;
/**
* The logger for the module. The logger must be a `ROARR` logger.
*
@@ -50,7 +53,7 @@ export abstract class CanvasModuleBase {
* this.log = this.manager.buildLogger(this);
* ```
*/
abstract log: Logger;
abstract readonly log: Logger;
/**
* Returns a logging context object that includes relevant information about the module.

View File

@@ -9,12 +9,11 @@ import type { Logger } from 'roarr';
export class CanvasObjectBrushLineRenderer extends CanvasModuleBase {
readonly type = 'object_brush_line_renderer';
id: string;
path: string[];
parent: CanvasEntityRenderer;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasEntityRenderer;
readonly manager: CanvasManager;
readonly log: Logger;
state: CanvasBrushLineState;
konva: {

View File

@@ -8,12 +8,11 @@ import type { Logger } from 'roarr';
export class CanvasObjectEraserLineRenderer extends CanvasModuleBase {
readonly type = 'object_eraser_line_renderer';
id: string;
path: string[];
parent: CanvasEntityRenderer;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasEntityRenderer;
readonly manager: CanvasManager;
readonly log: Logger;
state: CanvasEraserLineState;
konva: {

View File

@@ -14,12 +14,11 @@ import { getImageDTO } from 'services/api/endpoints/images';
export class CanvasObjectImageRenderer extends CanvasModuleBase {
readonly type = 'object_image_renderer';
id: string;
path: string[];
parent: CanvasEntityRenderer | CanvasStagingAreaModule | CanvasFilterModule;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasEntityRenderer | CanvasStagingAreaModule | CanvasFilterModule;
readonly manager: CanvasManager;
readonly log: Logger;
state: CanvasImageState;
konva: {

View File

@@ -9,12 +9,11 @@ import type { Logger } from 'roarr';
export class CanvasObjectRectRenderer extends CanvasModuleBase {
readonly type = 'object_rect_renderer';
id: string;
path: string[];
parent: CanvasEntityRenderer;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasEntityRenderer;
readonly manager: CanvasManager;
readonly log: Logger;
state: CanvasRectState;
konva: {

View File

@@ -8,12 +8,11 @@ import type { S } from 'services/api/types';
export class CanvasProgressImageModule extends CanvasModuleBase {
readonly type = 'progress_image';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
progressImageId: string | null = null;
konva: {

View File

@@ -10,12 +10,11 @@ import type { Logger } from 'roarr';
export class CanvasRenderingModule extends CanvasModuleBase {
readonly type = 'canvas_renderer';
id: string;
path: string[];
log: Logger;
parent: CanvasManager;
manager: CanvasManager;
readonly id: string;
readonly path: string[];
readonly log: Logger;
readonly parent: CanvasManager;
readonly manager: CanvasManager;
state: CanvasState | null = null;
settings: CanvasSettingsState | null = null;

View File

@@ -37,12 +37,11 @@ const DEFAULT_CONFIG: CanvasStageModuleConfig = {
export class CanvasStageModule extends CanvasModuleBase {
readonly type = 'stage';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
container: HTMLDivElement;
konva: { stage: Konva.Stage };

View File

@@ -9,12 +9,11 @@ import type { Logger } from 'roarr';
export class CanvasStagingAreaModule extends CanvasModuleBase {
readonly type = 'staging_area';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
subscriptions: Set<() => void> = new Set();
konva: { group: Konva.Group };

View File

@@ -46,7 +46,7 @@ import { $lastCanvasProgressEvent } from 'services/events/setEventListeners';
type EntityStateAndAdapter =
| {
id: string;
id: string;
type: CanvasRasterLayerState['type'];
state: CanvasRasterLayerState;
adapter: CanvasEntityLayerAdapter;
@@ -72,12 +72,11 @@ type EntityStateAndAdapter =
export class CanvasStateApiModule extends CanvasModuleBase {
readonly type = 'state_api';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
/**
* The redux store.

View File

@@ -38,12 +38,11 @@ const DEFAULT_CONFIG: CanvasToolModuleConfig = {
export class CanvasToolModule extends CanvasModuleBase {
readonly type = 'tool';
id: string;
path: string[];
parent: CanvasManager;
manager: CanvasManager;
log: Logger;
readonly id: string;
readonly path: string[];
readonly parent: CanvasManager;
readonly manager: CanvasManager;
readonly log: Logger;
subscriptions: Set<() => void> = new Set();
config: CanvasToolModuleConfig = DEFAULT_CONFIG;

View File

@@ -6,12 +6,11 @@ import type { Logger } from 'roarr';
export class CanvasWorkerModule extends CanvasModuleBase {
readonly type = 'worker';
id: string;
path: string[];
log: Logger;
parent: CanvasManager;
manager: CanvasManager;
readonly id: string;
readonly path: string[];
readonly log: Logger;
readonly parent: CanvasManager;
readonly manager: CanvasManager;
worker: Worker = new Worker(new URL('./worker.ts', import.meta.url), { type: 'module', name: 'worker' });
tasks: Map<string, { task: GetBboxTask; onComplete: (extents: Extents | null) => void }> = new Map();