canvas-editor-engine 2.0.12 → 2.0.14

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 (42) hide show
  1. package/dist/components/canvas.component.d.ts +21 -0
  2. package/dist/components/excretions.component.d.ts +32 -0
  3. package/dist/components/loading.component.d.ts +14 -0
  4. package/dist/components/pipette.component.d.ts +23 -0
  5. package/dist/components/slot.component.d.ts +10 -0
  6. package/dist/config.d.ts +23 -0
  7. package/dist/filters/collection/vague.d.ts +13 -0
  8. package/dist/filters/index.d.ts +2 -0
  9. package/dist/index.d.ts +18 -574
  10. package/dist/index.mjs +2148 -0
  11. package/dist/services/component.service.d.ts +5 -0
  12. package/dist/services/crop.service.d.ts +7 -0
  13. package/dist/services/download.service.d.ts +4 -0
  14. package/dist/services/draw.service.d.ts +17 -0
  15. package/dist/services/event.service.d.ts +16 -0
  16. package/dist/services/logger.service.d.ts +20 -0
  17. package/dist/services/projects.service.d.ts +11 -0
  18. package/dist/services/pull-project.service.d.ts +8 -0
  19. package/dist/services/store.service.d.ts +6 -0
  20. package/dist/services/through-history.service.d.ts +12 -0
  21. package/dist/services/tool-layers.service.d.ts +4 -0
  22. package/dist/services/tool.service.d.ts +10 -0
  23. package/dist/store/history.state.d.ts +15 -0
  24. package/dist/store/image.state.d.ts +30 -0
  25. package/dist/store/store.d.ts +13 -0
  26. package/dist/types/canvas.d.ts +10 -0
  27. package/dist/types/cursor.d.ts +9 -0
  28. package/dist/types/excretion.d.ts +27 -0
  29. package/dist/types/general.d.ts +24 -0
  30. package/dist/types/history.d.ts +7 -0
  31. package/dist/types/image.d.ts +48 -0
  32. package/dist/types/log.d.ts +13 -0
  33. package/dist/types/pipette.d.ts +1 -0
  34. package/dist/types/project.d.ts +38 -0
  35. package/dist/utils/convert.d.ts +12 -0
  36. package/dist/utils/filter.d.ts +21 -0
  37. package/dist/utils/guid4.d.ts +13 -0
  38. package/dist/utils/project-file-serializer.d.ts +13 -0
  39. package/dist/web-component.d.ts +30 -0
  40. package/package.json +11 -5
  41. package/dist/index.mjs.js +0 -2
  42. package/dist/index.mjs.js.LICENSE.txt +0 -8
package/dist/index.d.ts CHANGED
@@ -1,26 +1,21 @@
1
- export interface ILayer {
2
- name: string;
3
- index: number;
4
- }
5
- export declare abstract class ConfigStore {
6
- static _WEB_COMPONENT_TAG_NAME: string;
7
- static _CANVAS_SIZE: ICanvasSize;
8
- static _LAYERS: ILayer[];
9
- }
10
- export declare class ConfigFabric implements ConfigStore {
11
- protected static _WEB_COMPONENT_TAG_NAME: string;
12
- protected static _CANVAS_SIZE: ICanvasSize;
13
- protected static _LAYERS: ILayer[];
14
- }
15
- export default class AppConfig extends ConfigFabric {
16
- static get WEB_COMPONENT_TAG_NAME(): string;
17
- static set WEB_COMPONENT_TAG_NAME(value: string | undefined);
18
- static get CANVAS_SIZE(): ICanvasSize;
19
- static set CANVAS_SIZE(value: ICanvasSize | undefined);
20
- static get LAYERS(): ILayer[];
21
- static set LAYERS(value: ILayer[]);
22
- }
23
-
1
+ import AppConfig from "./config";
2
+ import WebComponent from "./web-component";
3
+ import CanvasComponent from "./components/canvas.component";
4
+ import PipetteComponent from "./components/pipette.component";
5
+ import ExcretionComponent from "./components/excretions.component";
6
+ import SlotComponent from "./components/slot.component";
7
+ import LoadingComponent from "./components/loading.component";
8
+ import DrawService from "./services/draw.service";
9
+ import ToolService from "./services/tool.service";
10
+ import LoggerService from "./services/logger.service";
11
+ import CropService from "./services/crop.service";
12
+ import DownloadService from "./services/download.service";
13
+ import ToolLayerService from "./services/tool-layers.service";
14
+ import EventService from "./services/event.service";
15
+ import ThroughHistoryService from "./services/through-history.service";
16
+ import ProjectsService from "./services/projects.service";
17
+ import PullProjectService from "./services/pull-project.service";
18
+ import AppStore from "./store/store";
24
19
  declare class CanvasEditorEngine {
25
20
  constructor(webComponentTagName?: string);
26
21
  getInitial(): {
@@ -38,554 +33,3 @@ declare class VueCanvasEditorEngine extends CanvasEditorEngine {
38
33
  getCanvas(): HTMLCanvasElement;
39
34
  }
40
35
  export { AppConfig, PipetteComponent, CanvasComponent, ExcretionComponent, SlotComponent, LoadingComponent, ToolService, DrawService, LoggerService, CropService, DownloadService, ToolLayerService, EventService, ThroughHistoryService, ProjectsService, PullProjectService, StaticCanvasEditorEngine, VueCanvasEditorEngine, AppStore, };
41
-
42
- export declare class WebComponentWrapper {
43
- baseElement: HTMLDivElement;
44
- editorWrapElement: HTMLDivElement;
45
- stylesWrapElement: HTMLDivElement;
46
- toolsWrapElement: HTMLDivElement;
47
- constructor();
48
- get base(): {
49
- add: (component: TComponent, style?: HTMLStyleElement) => HTMLDivElement;
50
- };
51
- get editorWrap(): {
52
- add: (component: TComponent, style?: HTMLStyleElement) => HTMLDivElement;
53
- };
54
- get stylesWrap(): {
55
- add: (component: TComponent, style?: HTMLStyleElement) => HTMLDivElement;
56
- };
57
- get toolsWrap(): {
58
- add: (component: TComponent, style?: HTMLStyleElement) => HTMLDivElement;
59
- };
60
- private _methods;
61
- private _add;
62
- private _baseStyle;
63
- }
64
- declare global {
65
- interface HTMLElement {
66
- }
67
- }
68
- export default class WebComponent extends HTMLElement {
69
- constructor();
70
- }
71
-
72
- export default class CanvasComponent extends ComponentService {
73
- private static template;
74
- private static css;
75
- static eventListener: HTMLDivElement;
76
- static canvas: HTMLCanvasElement;
77
- static ctx: CanvasRenderingContext2D | null;
78
- private static subscriptions;
79
- private static _cursorStyle;
80
- static getComponent(): {
81
- canvasTemplate: HTMLElement;
82
- canvasStyle: HTMLStyleElement;
83
- };
84
- static getCanvasSelector(): string;
85
- static set cursorStyle(styleName: TCursorStyleName | undefined | null);
86
- static getCursorPosition(event: MouseEvent): ICursorPosition;
87
- static subscribe(eventName: TSubscriptionTypes, action: TSubscribeAction): void;
88
- static simulateSubscriptions(): void;
89
- }
90
-
91
- export default class ExcretionsComponent extends ComponentService {
92
- private static template;
93
- private static templateExcretion;
94
- private static _excretionDefaultStyle;
95
- private static css;
96
- static excretionWrap: HTMLElement;
97
- private static _excretions;
98
- private static _excretionState;
99
- private static _excretionActivity;
100
- private static _excretionToolState;
101
- private static _tempCoords;
102
- static excretionsCoords: IExcretionsCoords[];
103
- private static _additionStyle;
104
- static get additionStyle(): TExcretionStyle;
105
- static set additionStyle(value: TExcretionStyle);
106
- private static applyExcretionStyle;
107
- private static determineCropStyle;
108
- private static determineDefaultStyle;
109
- private static tool;
110
- static getComponent(): {
111
- excretionsTemplate: HTMLElement;
112
- excretionsStyle: HTMLStyleElement;
113
- };
114
- private static set excretionState(value);
115
- static setToolState(toolState: TExcretionToolState): void;
116
- static clearExcretionsCoords(): void;
117
- private static getTempCoords;
118
- private static endExcretion;
119
- private static emmit;
120
- }
121
-
122
- export default class LoadingComponent extends ComponentService {
123
- private static template;
124
- private static css;
125
- static loading: HTMLElement;
126
- static getComponent(): {
127
- loadingTemplate: HTMLElement;
128
- loadingStyle: HTMLStyleElement;
129
- };
130
- static hide(): void;
131
- static view(): void;
132
- private static subscribeLoadingStart;
133
- private static subscribeLoadingEnd;
134
- }
135
-
136
- export default class PipetteComponent extends ComponentService {
137
- static template: string;
138
- static css: string;
139
- static pipette: HTMLElement;
140
- private static _pipetteColor;
141
- static set pipetteColor(color: THEXColor);
142
- static get pipetteColor(): THEXColor;
143
- private static _pipetteColorElement;
144
- private static _pipetteState;
145
- private static tool;
146
- static getComponent(): {
147
- pipetteTemplate: HTMLElement;
148
- pipetteStyle: HTMLStyleElement;
149
- };
150
- static setState(state: TPipetteState): void;
151
- static emmit(): void;
152
- private static setColorFromChoosenPixel;
153
- private static show;
154
- private static hide;
155
- }
156
-
157
- export default class SlotComponent extends ComponentService {
158
- private static template;
159
- private static css;
160
- static slot: HTMLSlotElement;
161
- static getComponent(slotName: string): {
162
- slotTemplate: HTMLElement;
163
- slotStyle: HTMLStyleElement;
164
- };
165
- }
166
-
167
- export { VagueFilter, };
168
-
169
- export default class VagueFilter extends Filter {
170
- options: IImageOptions;
171
- filterList: TFilterMethod[];
172
- constructor(ctx: CanvasRenderingContext2D, options: IImageOptions);
173
- on(action: TFilterMethod, filterOptions: IFilterOptions): Promise<IImageLoggingDataVague>;
174
- pixel(imageData: ImageData, filterOptions: IFilterOptions): ImageData;
175
- private getQualityProcessedRemainder;
176
- private getQualityBuff;
177
- private getMostCommonQuanlityBuff;
178
- private getMostCommonElement;
179
- }
180
-
181
- export default class ComponentService {
182
- protected static getTemplate(template: string, wrapOptions?: IWrapOptions): HTMLElement | null;
183
- protected static getStyle(css: string): HTMLStyleElement | null;
184
- }
185
-
186
- export default class CropService {
187
- static setup(): void;
188
- static crop(ctx: CanvasRenderingContext2D): void;
189
- static viewCropButton(): void;
190
- static get options(): IImageOptions;
191
- }
192
-
193
- export default class DownloadService {
194
- static getDataUrl(): string;
195
- static download(filename?: string): void;
196
- }
197
-
198
- export default class DrawService {
199
- static imageProcessor: IDrawImageProcessor;
200
- static drawImage(ctx: CanvasRenderingContext2D, src: string, options: IDrawImageArgs): void;
201
- static drawProject(ctx: CanvasRenderingContext2D, project: Project): void;
202
- static drawSmoothImage(useStore: boolean, options: IDrawImageArgs, filterOptions: IFilterOptions): void;
203
- private static updateImageStateAfterVague;
204
- private static getFilterArgs;
205
- }
206
- export declare class SCImage implements IDrawImageProcessor {
207
- private img;
208
- private ctx;
209
- constructor(src: string, ctx: CanvasRenderingContext2D);
210
- draw(options?: IDrawImageArgs): Promise<unknown>;
211
- vague(options: IImageOptions, filterOptions: IFilterOptions): Promise<IImageLoggingDataVague>;
212
- }
213
-
214
- export declare abstract class ControlEvent {
215
- name: string;
216
- action: (args?: any) => any;
217
- }
218
- export declare class EventAtom implements ControlEvent {
219
- id: IGUID4;
220
- name: string;
221
- action: (args?: any) => any;
222
- }
223
- export default class EventService {
224
- static eventList: EventAtom[];
225
- static subcribe(controlEvent: ControlEvent): void;
226
- static dispatch(name: ControlEvent['name'], eventArgs?: any): void;
227
- static applyEvents(baseElement: HTMLDivElement): void;
228
- }
229
-
230
- export default class LoggerService {
231
- static log: ILog<ComponentService, any, any>;
232
- static get components(): {
233
- add<TLogPrototype>(logItem: ILogItem<TLogPrototype>): void;
234
- get<TLogPrototype>(field: keyof ILog<ComponentService, any, any>, name: string): void;
235
- };
236
- static get services(): {
237
- add<TLogPrototype>(logItem: ILogItem<TLogPrototype>): void;
238
- get<TLogPrototype>(field: keyof ILog<ComponentService, any, any>, name: string): void;
239
- };
240
- static get planed(): {
241
- add<TLogPrototype>(logItem: ILogItem<TLogPrototype>): void;
242
- get<TLogPrototype>(field: keyof ILog<ComponentService, any, any>, name: string): void;
243
- };
244
- private static getMethods;
245
- private static _add;
246
- private static _get;
247
- }
248
-
249
- export default class ProjectsService {
250
- private static _modules;
251
- private static _serializer;
252
- static on(moduleName: TProjectModuleName): {
253
- getSerializerInstance: (file: any) => ProjectFileSerializer;
254
- instance: IProjectModule;
255
- };
256
- private static _addModule;
257
- }
258
-
259
- export default class PullProjectService {
260
- private static _project;
261
- static get project(): Project;
262
- static refreshProject(): void;
263
- static updateProject(project: IUpdateProject): void;
264
- static pull(name: Project['name'], description: Project['description']): void;
265
- }
266
-
267
- export declare abstract class StateService {
268
- abstract reset(): void;
269
- }
270
- export declare abstract class StoreService {
271
- abstract reset(): void;
272
- }
273
-
274
- export default class ThroughHistoryService {
275
- static cache: IHistoryLine[];
276
- static current(): IHistoryLine;
277
- static prev(): IHistoryLine;
278
- static undo(ctx: CanvasRenderingContext2D): void;
279
- static redo(ctx: CanvasRenderingContext2D): void;
280
- static clearCache(): void;
281
- static recovery(project: Project): void;
282
- private static updateCanvas;
283
- }
284
-
285
- export default class ToolLayerService {
286
- static multiplier: number;
287
- static getLayerIndex(layerName: string): number;
288
- }
289
-
290
- export default class ToolService {
291
- static before: ITool | null;
292
- static active: ITool | null;
293
- static registry: ITool[];
294
- static add(tool: ITool): boolean;
295
- static setActive(id: ITool['id']): void;
296
- static offActive(id?: ITool['id']): void;
297
- private static off;
298
- }
299
-
300
- export interface IHistoryState {
301
- historyLines: IHistoryLine[];
302
- }
303
- export declare class HistoryState implements StateService {
304
- private default;
305
- private _emergeCompleteIt;
306
- private _historyLines;
307
- get historyLines(): IHistoryState['historyLines'];
308
- constructor();
309
- reduce(name: TReducerNames, payload?: IHistoryLine | IHistoryState): void;
310
- emerge(completeIt: (history: IHistoryState['historyLines']) => void): void;
311
- reset(): void;
312
- }
313
-
314
- export interface IImageState {
315
- position: IPosition;
316
- size: ISize;
317
- tempImageData: ImageData | null;
318
- }
319
- export interface IImageStateReduce {
320
- position?: IImageState['position'];
321
- size?: IImageState['size'];
322
- tempImageData?: IImageState['tempImageData'];
323
- }
324
- export declare class ImageState implements StateService {
325
- private default;
326
- private _position;
327
- private _size;
328
- private _tempImageData;
329
- get position(): IImageState['position'];
330
- get size(): IImageState['size'];
331
- get tempImageData(): IImageState['tempImageData'];
332
- constructor();
333
- reduce(payload: IImageStateReduce, title?: string): void;
334
- reset(): void;
335
- getEntry(): {
336
- position: IPosition;
337
- size: ISize;
338
- imageData: ImageData;
339
- };
340
- addToHistory(title: string): void;
341
- }
342
-
343
- export declare class Store implements StoreService {
344
- imageState: ImageState;
345
- historyState: HistoryState;
346
- constructor(imageState: ImageState, historyState: HistoryState);
347
- reset(): void;
348
- }
349
- export default class AppStore {
350
- static store: Store;
351
- static subscribe(to: 'history', completeIt: (...args: any) => void): void;
352
- }
353
-
354
- export interface ICanvasSize {
355
- width: number;
356
- height: number;
357
- }
358
- export type TSubscriptionTypes = 'click' | 'mousemove' | 'mousedown' | 'mouseup';
359
- export type TSubscribeAction = (event: MouseEvent, cursorPosition?: ICursorPosition) => void;
360
- export type TSubscriptions = {
361
- [key in TSubscriptionTypes]: TSubscribeAction[];
362
- };
363
-
364
- export interface ICursorPosition {
365
- x: number;
366
- y: number;
367
- }
368
- export interface ICursorStyle {
369
- before: TCursorStyleName | null;
370
- current: TCursorStyleName | null;
371
- }
372
- export type TCursorStyleName = 'default' | 'context-menu' | 'help' | 'pointer' | 'progress' | 'wait' | 'cell' | 'crosshair' | 'text' | 'vertical-text' | 'copy' | 'alias' | 'move' | 'not-allowed' | 'grab' | 'grabbing' | 'zoom-in' | 'zoom-out';
373
-
374
- export interface IExcretionsCoords {
375
- start?: {
376
- x: number;
377
- y: number;
378
- };
379
- end?: {
380
- x: number;
381
- y: number;
382
- };
383
- }
384
- export interface IExcretionTempStart {
385
- start: {
386
- x: number;
387
- y: number;
388
- };
389
- }
390
- export interface IExcretionTempEnd {
391
- end: {
392
- x: number;
393
- y: number;
394
- };
395
- }
396
- export type TExcretionTempCoords = (IExcretionTempStart | IExcretionTempEnd)[];
397
- export type TExcretionToolState = 'taken' | 'abandoned';
398
- export type TExcretionState = 'create' | 'add' | 'remove' | 'abandoned';
399
- export type TExcretionActivity = 'active' | 'end' | 'abandoned';
400
- export type TExcretionStyle = 'default' | 'crop';
401
-
402
- export type THEXColor = `#${string}`;
403
- export type TComponent = HTMLElement | HTMLDivElement | HTMLCanvasElement;
404
- export interface IWrapOptions {
405
- tag?: string;
406
- className?: string;
407
- id?: string;
408
- }
409
- export interface ITool {
410
- id: number;
411
- name: string;
412
- onAction?: (...args: any) => void;
413
- offAction?: (...args: any) => void;
414
- support?: (...args: any) => void;
415
- }
416
- export type IGUID4 = `${number}-${number}-${number}-${number}`;
417
- export interface IPosition {
418
- x: number;
419
- y: number;
420
- }
421
- export interface ISize {
422
- width: number;
423
- height: number;
424
- }
425
- export type TStringMatrix = string[][];
426
-
427
- export interface IHistoryLine {
428
- stateName: string;
429
- stateValue: IImageState;
430
- view: string;
431
- }
432
- export type TReducerNames = 'SET_HISTORY' | 'UPDATE_HISTORY' | 'UNDO' | 'REDO';
433
-
434
- export interface IOptionImageSize {
435
- width?: number;
436
- height?: number;
437
- }
438
- export interface IImageOptions extends IPosition, IOptionImageSize {
439
- }
440
- export interface IDrawImageArgs {
441
- position: IArgumentImagePosition;
442
- size?: TArgumentImageSize;
443
- }
444
- export interface IArgumentImagePosition extends IPosition {
445
- }
446
- export interface IPixelPosition extends IPosition {
447
- }
448
- export type TArgumentImageSize = IOptionImageSize | 'initial';
449
- export interface IImageSize extends ISize {
450
- }
451
- export type TRGBABuff = TByteRGBColor[];
452
- export type TByteRGBColor = [number, number, number, number];
453
- export type TBuff<T> = T[][];
454
- export type TQualityBuff = TStringMatrix;
455
- export type TRangeCommit = IPixelPosition[][];
456
- export type TFilterMethod = 'pixel';
457
- export interface IFilterOptions {
458
- quality: number;
459
- }
460
- export declare const enum E_RGBA {
461
- r = 0,
462
- g = 1,
463
- b = 2,
464
- a = 3
465
- }
466
- export interface IExtendedImageDataModel {
467
- imageData: ImageData;
468
- size: ISize;
469
- }
470
- export interface IImageLoggingData {
471
- imageData: ImageData;
472
- size: ISize;
473
- position: IPosition;
474
- }
475
- export interface IImageLoggingDataVague extends IImageLoggingData, IFilterOptions {
476
- }
477
- export interface IDrawImageProcessor {
478
- draw(options?: IDrawImageArgs): Promise<any>;
479
- vague(options: IImageOptions, filterOptions: IFilterOptions): Promise<IImageLoggingDataVague>;
480
- }
481
-
482
- export interface ILog<A, R, P> {
483
- components: ILogItem<A>[];
484
- services: ILogItem<R>[];
485
- planed: ILogItem<P>[];
486
- }
487
- export interface ILogItem<TLogPrototype> {
488
- info: ILogItemInfo;
489
- prototype: TLogPrototype;
490
- }
491
- export interface ILogItemInfo {
492
- name: string;
493
- description: string;
494
- }
495
-
496
- export type TPipetteState = 'taken' | 'abandoned' | 'selected-color';
497
-
498
- export declare class Project {
499
- id: string;
500
- name: string;
501
- description: string;
502
- state: {
503
- current: IImageLoggingData;
504
- history: IHistoryLine[];
505
- cache: IHistoryLine[];
506
- };
507
- createdAt: string;
508
- updatedAt: string;
509
- }
510
- export interface IUpdateProject {
511
- id?: string;
512
- name?: string;
513
- description?: string;
514
- state?: {
515
- current: IImageLoggingData;
516
- history: IHistoryLine[];
517
- cache: IHistoryLine[];
518
- };
519
- updatedAt?: string;
520
- }
521
- export interface IProjectModule {
522
- getProjects(): Project[];
523
- getProject(projectId: string): Project;
524
- saveProjects(projects: Project[]): void;
525
- saveProject(project: Project): void;
526
- removeProject(projectId: string): void;
527
- updateProject(project: Project): void;
528
- }
529
- export type TProjectModule = {
530
- name: string;
531
- instance: IProjectModule;
532
- };
533
- export type TProjectModuleName = 'LocalStorage' | 'File';
534
-
535
- export declare class Convert {
536
- static byteRGBToHEX(color: TByteRGBColor): THEXColor;
537
- static rgbToHex(r: number, g: number, b: number): THEXColor;
538
- static hexToRgb(hex: string): {
539
- r: number;
540
- g: number;
541
- b: number;
542
- };
543
- private static componentToHEX;
544
- }
545
-
546
- export declare class Filter {
547
- ctx: CanvasRenderingContext2D;
548
- imageSize: IImageSize;
549
- constructor(ctx: CanvasRenderingContext2D);
550
- setImageSize(size: IImageSize): void;
551
- copy(options: IImageOptions): ImageData;
552
- copyExtendedModel(options: IImageOptions): IExtendedImageDataModel;
553
- update(imgData: ImageData, options: IImageOptions): void;
554
- clearEmptyPixels(imageData: ImageData): IExtendedImageDataModel;
555
- getSizeOfSparseMatrix(RGBAMatrix: TBuff<number[]>, tempSize: ISize): ISize;
556
- getBuffCollection(imageData: ImageData): {
557
- rowRGBABuff: TRGBABuff;
558
- hexBuff: `#${string}`[];
559
- buff: TBuff<string>;
560
- };
561
- getBuff(hexBuff: THEXColor[]): TBuff<string>;
562
- getRGBAMatrix(rowRGBABuff: TRGBABuff, size?: ISize): TBuff<number[]>;
563
- getRowRGBABuff(imageData: ImageData): TRGBABuff;
564
- }
565
-
566
- export declare class Guid4 {
567
- stack: IGUID4[];
568
- guid4: IGUID4;
569
- constructor();
570
- generate(): `${number}-${number}-${number}-${number}`;
571
- get finite(): IGUID4;
572
- private generateWithFactor;
573
- private getFactor;
574
- private get attempt();
575
- private get Guid4();
576
- private formating;
577
- }
578
-
579
- export declare class ProjectFileSerializer {
580
- private file;
581
- private projects;
582
- constructor(file: any);
583
- private load;
584
- saveProjects(projects: Project[]): void;
585
- getProjects(): Project[];
586
- getProject(projectId: string): Project;
587
- saveProject(project: Project): void;
588
- removeProject(projectId: string): void;
589
- updateProject(project: Project): void;
590
- }
591
-