@colijnit/inphoto 300.1.2 → 300.1.4

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 (58) hide show
  1. package/assets/inphoto-add-products.jpg +0 -0
  2. package/fesm2022/colijnit-inphoto.mjs +987 -804
  3. package/fesm2022/colijnit-inphoto.mjs.map +1 -1
  4. package/icons/arrow_down_solid_full.svg +1 -0
  5. package/icons/minus_solid_full.svg +1 -0
  6. package/icons/plus_solid_full.svg +1 -0
  7. package/index.d.ts +120 -54
  8. package/lib/component/ai-prompt/style/_layout.scss +1 -37
  9. package/lib/component/ai-prompt/style/_material-definition.scss +3 -1
  10. package/lib/component/ai-prompt/style/_theme.scss +60 -1
  11. package/lib/component/canvas-tool-bar/style/_layout.scss +20 -21
  12. package/lib/component/catalog/style/_layout.scss +1 -1
  13. package/lib/component/catalog/style/_theme.scss +8 -0
  14. package/lib/component/edit-canvas/style/_layout.scss +53 -4
  15. package/lib/component/edit-canvas/style/_theme.scss +4 -0
  16. package/lib/component/header/style/_layout.scss +24 -0
  17. package/lib/component/header/style/_material-definition.scss +3 -0
  18. package/lib/component/header/style/_theme.scss +20 -0
  19. package/lib/component/image-enhancer/style/_layout.scss +0 -61
  20. package/lib/component/image-enhancer/style/_theme.scss +14 -7
  21. package/lib/component/image-history/style/_layout.scss +3 -14
  22. package/lib/component/image-history/style/_theme.scss +19 -1
  23. package/lib/component/image-history-tile/style/_layout.scss +0 -11
  24. package/lib/component/image-history-tile/style/_theme.scss +9 -12
  25. package/lib/component/image-process-complete/style/_layout.scss +37 -29
  26. package/lib/component/image-process-complete/style/_material-definition.scss +2 -0
  27. package/lib/component/image-process-complete/style/_theme.scss +25 -46
  28. package/lib/component/image-tile/components/color-palette-option/style/_layout.scss +2 -2
  29. package/lib/component/image-tile/style/_layout.scss +26 -23
  30. package/lib/component/image-tile/style/_theme.scss +45 -0
  31. package/lib/component/photo-editor/style/_layout.scss +16 -2
  32. package/lib/component/prepare-starting-image/style/_layout.scss +29 -74
  33. package/lib/component/prepare-starting-image/style/_material-definition.scss +1 -0
  34. package/lib/component/prepare-starting-image/style/_theme.scss +20 -93
  35. package/lib/component/ready-to-add-articles/style/_layout.scss +6 -1
  36. package/lib/component/ready-to-add-articles/style/_theme.scss +3 -3
  37. package/lib/component/scene-context-menu/style/_layout.scss +0 -22
  38. package/lib/component/scene-context-menu/style/_material-definition.scss +2 -1
  39. package/lib/component/scene-context-menu/style/_theme.scss +36 -0
  40. package/lib/component/segment-inpaint/style/_layout.scss +26 -29
  41. package/lib/component/segment-inpaint/style/_theme.scss +33 -0
  42. package/lib/component/step-tile/style/_layout.scss +57 -0
  43. package/lib/component/step-tile/style/_material-definition.scss +2 -0
  44. package/lib/component/step-tile/style/_theme.scss +89 -0
  45. package/lib/component/threed-to-ai/style/_layout.scss +0 -19
  46. package/lib/component/threed-to-ai/style/_theme.scss +24 -0
  47. package/lib/component/threedscene/style/_layout.scss +17 -3
  48. package/lib/style/_variables.scss +1 -0
  49. package/lib/style/inphoto-globals.scss +1 -0
  50. package/package.json +1 -1
  51. package/lib/component/image-process-complete/components/image-process-complete-next/style/_layout.scss +0 -45
  52. package/lib/component/image-process-complete/components/image-process-complete-next/style/_material-definition.scss +0 -3
  53. package/lib/component/image-process-complete/components/image-process-complete-next/style/_theme.scss +0 -10
  54. package/lib/component/segment-inpaint/components/inpaint-info-card/style/_layout.scss +0 -49
  55. package/lib/component/segment-inpaint/components/inpaint-info-card/style/_material-definition.scss +0 -3
  56. package/lib/component/segment-inpaint/components/inpaint-info-card/style/_theme.scss +0 -10
  57. /package/lib/component/{image-process-complete/components/image-process-complete-next → header}/style/material.scss +0 -0
  58. /package/lib/component/{segment-inpaint/components/inpaint-info-card → step-tile}/style/material.scss +0 -0
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M297.4 566.6C309.9 579.1 330.2 579.1 342.7 566.6L502.7 406.6C515.2 394.1 515.2 373.8 502.7 361.3C490.2 348.8 469.9 348.8 457.4 361.3L352 466.7L352 96C352 78.3 337.7 64 320 64C302.3 64 288 78.3 288 96L288 466.7L182.6 361.3C170.1 348.8 149.8 348.8 137.3 361.3C124.8 373.8 124.8 394.1 137.3 406.6L297.3 566.6z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M96 320C96 302.3 110.3 288 128 288L512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352L128 352C110.3 352 96 337.7 96 320z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M352 128C352 110.3 337.7 96 320 96C302.3 96 288 110.3 288 128L288 288L128 288C110.3 288 96 302.3 96 320C96 337.7 110.3 352 128 352L288 352L288 512C288 529.7 302.3 544 320 544C337.7 544 352 529.7 352 512L352 352L512 352C529.7 352 544 337.7 544 320C544 302.3 529.7 288 512 288L352 288L352 128z"/></svg>
package/index.d.ts CHANGED
@@ -31,6 +31,7 @@ import * as i5 from '@colijnit/utilities';
31
31
  declare enum Icon {
32
32
  AngleDownSolidFull = "angle_down_solid_full",
33
33
  AngleUpSolidFull = "angle_up_solid_full",
34
+ ArrowDownSolidFull = "arrow_down_solid_full",
34
35
  ArrowLeftSolidFull = "arrow_left_solid_full",
35
36
  ArrowRightSolidFull = "arrow_right_solid_full",
36
37
  ArrowRotateLeftSolidFull = "arrow_rotate_left_solid_full",
@@ -61,8 +62,10 @@ declare enum Icon {
61
62
  InfoSolidFull = "info_solid_full",
62
63
  LightbulbRegularFull = "lightbulb_regular_full",
63
64
  LockSolidFull = "lock_solid_full",
65
+ MinusSolidFull = "minus_solid_full",
64
66
  PaintbrushRegular = "paintbrush_regular",
65
67
  PenToSquareSolidFull = "pen_to_square_solid_full",
68
+ PlusSolidFull = "plus_solid_full",
66
69
  RotateLeftSharpSolidFull = "rotate_left_sharp_solid_full",
67
70
  RotateSolidFull = "rotate_solid_full",
68
71
  SaveSkinny = "save_skinny",
@@ -468,6 +471,7 @@ declare class InphotoSceneService implements OnDestroy {
468
471
  constructor(_objectsService: InphotoItemService);
469
472
  ngOnDestroy(): void;
470
473
  init(element: ElementRef<HTMLDivElement>): void;
474
+ resize(width: number, height: number): void;
471
475
  getSceneAsImage(): string;
472
476
  addObjectToScene(result: ArticleConfiguration): void;
473
477
  placeObject(object: Object3D): void;
@@ -699,6 +703,7 @@ declare class InphotoDataService {
699
703
  removeMask(color: ColorPalette): void;
700
704
  hasAnyMask(): boolean;
701
705
  clearAllMasks(): void;
706
+ cleanUp(): void;
702
707
  static ɵfac: i0.ɵɵFactoryDeclaration<InphotoDataService, never>;
703
708
  static ɵprov: i0.ɵɵInjectableDeclaration<InphotoDataService>;
704
709
  }
@@ -715,10 +720,17 @@ declare class EditCanvasComponent implements AfterViewInit {
715
720
  set segmentationInPainting(value: SegmentationResponse);
716
721
  set inpaintMode(value: boolean);
717
722
  set eraserMode(value: boolean);
723
+ set dragMode(value: boolean);
724
+ get dragMode(): boolean;
718
725
  onSegmentationPointClick: EventEmitter<SegmentationPoint>;
719
726
  imageState: EventEmitter<string>;
720
727
  set maskColor(color: ColorPalette);
721
728
  get maskColor(): ColorPalette;
729
+ get zoomPercent(): number;
730
+ get minZoomPercent(): number;
731
+ get maxZoomPercent(): number;
732
+ get canZoomIn(): boolean;
733
+ get canZoomOut(): boolean;
722
734
  ctx: CanvasRenderingContext2D;
723
735
  drawing: boolean;
724
736
  brushSize: number;
@@ -728,39 +740,62 @@ declare class EditCanvasComponent implements AfterViewInit {
728
740
  private _currentStroke;
729
741
  private _segCanvas;
730
742
  private _segCtx;
743
+ private _exportCanvas;
744
+ private _exportCtx;
731
745
  private _image;
732
746
  private _inpaintMode;
733
747
  private _eraserMode;
734
748
  private _maskColor;
735
749
  private _subs;
736
750
  private _canvasLoaded;
751
+ private _zoom;
752
+ private _offsetX;
753
+ private _offsetY;
754
+ private _minZoom;
755
+ private _maxZoom;
756
+ private _zoomStep;
757
+ private _dragMode;
758
+ private _panning;
759
+ private _panStart;
737
760
  constructor(iconService: InphotoIconCacheService, dataService: InphotoDataService, _appEventService: InphotoEventService);
738
761
  ngAfterViewInit(): void;
739
762
  changeCanvasCursor(icon: Icon): void;
740
763
  startDrawing(event: MouseEvent): void;
741
764
  draw(event: MouseEvent): void;
742
765
  stopDrawing(): void;
766
+ onWheel(event: WheelEvent): void;
767
+ zoomIn(): void;
768
+ zoomOut(): void;
769
+ onZoomInput(event: Event): void;
770
+ resetView(): void;
743
771
  undoLastStroke(color?: ColorPalette): void;
744
772
  clearColor(color: ColorPalette): void;
745
- private _syncLayersFromData;
746
773
  clearCanvas(): void;
747
774
  loadBackground(): void;
775
+ private _applyCanvasSize;
776
+ private _syncLayersFromData;
748
777
  private _getLayer;
749
778
  private _resizeAndReplayLayers;
779
+ private _composite;
750
780
  private _render;
781
+ private _setZoom;
782
+ private _setZoomCentered;
783
+ private _clampOffsets;
751
784
  private _replayColor;
785
+ private _getBufferCoords;
752
786
  private _getCanvasCoords;
753
787
  private _drawSegmentation;
754
788
  private _ensureSegCanvas;
755
789
  private _saveCanvas;
790
+ private _setPlainCursor;
756
791
  private _colorToString;
757
792
  static ɵfac: i0.ɵɵFactoryDeclaration<EditCanvasComponent, never>;
758
- static ɵcmp: i0.ɵɵComponentDeclaration<EditCanvasComponent, "co-edit-canvas", never, { "image": { "alias": "image"; "required": false; }; "segmentationInPainting": { "alias": "segmentationInPainting"; "required": false; }; "inpaintMode": { "alias": "inpaintMode"; "required": false; }; "eraserMode": { "alias": "eraserMode"; "required": false; }; }, { "onSegmentationPointClick": "onSegmentationPointClick"; "imageState": "imageState"; }, never, never, false, never>;
793
+ static ɵcmp: i0.ɵɵComponentDeclaration<EditCanvasComponent, "co-edit-canvas", never, { "image": { "alias": "image"; "required": false; }; "segmentationInPainting": { "alias": "segmentationInPainting"; "required": false; }; "inpaintMode": { "alias": "inpaintMode"; "required": false; }; "eraserMode": { "alias": "eraserMode"; "required": false; }; "dragMode": { "alias": "dragMode"; "required": false; }; }, { "onSegmentationPointClick": "onSegmentationPointClick"; "imageState": "imageState"; }, never, never, false, never>;
759
794
  }
760
795
 
761
796
  declare class EditCanvasModule {
762
797
  static ɵfac: i0.ɵɵFactoryDeclaration<EditCanvasModule, never>;
763
- static ɵmod: i0.ɵɵNgModuleDeclaration<EditCanvasModule, [typeof EditCanvasComponent], [typeof i2$1.FormsModule, typeof i2.IconModule, typeof i2.ButtonModule], [typeof EditCanvasComponent]>;
798
+ static ɵmod: i0.ɵɵNgModuleDeclaration<EditCanvasModule, [typeof EditCanvasComponent], [typeof i2$1.FormsModule, typeof i2.IconModule, typeof i2.ButtonModule, typeof i2.InputTextModule], [typeof EditCanvasComponent]>;
764
799
  static ɵinj: i0.ɵɵInjectorDeclaration<EditCanvasModule>;
765
800
  }
766
801
 
@@ -820,7 +855,8 @@ declare class ImageEnhancer {
820
855
  declare enum FileTypes {
821
856
  JPG = "JPG",
822
857
  JPEG = "JPEG",
823
- PNG = "PNG"
858
+ PNG = "PNG",
859
+ WEBP = "WEBP"
824
860
  }
825
861
 
826
862
  declare class ImageUpload implements OnDestroy {
@@ -1100,6 +1136,7 @@ declare class PhotoEditorComponent implements OnInit {
1100
1136
  showLoader: boolean;
1101
1137
  loadingTexts: string[];
1102
1138
  canvasErase: boolean;
1139
+ dragMode: boolean;
1103
1140
  maskingList: MaskImageColorInterface[];
1104
1141
  canvasMaskColor: ColorPalette;
1105
1142
  private _image;
@@ -1107,6 +1144,7 @@ declare class PhotoEditorComponent implements OnInit {
1107
1144
  constructor(iconService: InphotoIconCacheService, dataService: InphotoDataService, _connectorService: InPhotoConnectorService, _changeDetection: ChangeDetectorRef, _eventService: InphotoEventService);
1108
1145
  ngOnInit(): void;
1109
1146
  toggleEraseMode(state: boolean): void;
1147
+ toggleDragMode(value: boolean): void;
1110
1148
  handleCreatePromptWithImages(event: PromptWithImages): void;
1111
1149
  handleStyleSelection(event: EnhanceStyle): void;
1112
1150
  handleSetImageFromHistory(event: string): void;
@@ -1162,23 +1200,21 @@ declare class CanvasToolBarComponent {
1162
1200
  get canvasInpaintMode(): boolean;
1163
1201
  set canvasEraseMode(value: boolean);
1164
1202
  get canvasEraseMode(): boolean;
1165
- showActionButtons: boolean;
1166
- showInfoIcon: boolean;
1203
+ set canvasDragMode(value: boolean);
1204
+ get canvasDragMode(): boolean;
1167
1205
  title: string;
1168
1206
  dragBoundary: string;
1169
1207
  changeEraseMode: EventEmitter<boolean>;
1170
- cancelClick: EventEmitter<void>;
1171
- processSegmentation: EventEmitter<void>;
1172
- openInfoContainer: EventEmitter<any>;
1208
+ changeDragMode: EventEmitter<boolean>;
1173
1209
  private _canvasInpaintMode;
1174
1210
  private _canvasEraseMode;
1211
+ private _canvasDragMode;
1175
1212
  constructor(iconService: InphotoIconCacheService);
1176
- toggleEraseMode(mode: boolean): void;
1177
- openInfoDialog(): void;
1178
- handleCancelClick(): void;
1179
- processInpainted(): void;
1213
+ selectBrush(): void;
1214
+ selectEraser(): void;
1215
+ toggleDragMode(): void;
1180
1216
  static ɵfac: i0.ɵɵFactoryDeclaration<CanvasToolBarComponent, never>;
1181
- static ɵcmp: i0.ɵɵComponentDeclaration<CanvasToolBarComponent, "co-canvas-tool-bar", never, { "canvasInpaintMode": { "alias": "canvasInpaintMode"; "required": false; }; "canvasEraseMode": { "alias": "canvasEraseMode"; "required": false; }; "showActionButtons": { "alias": "showActionButtons"; "required": false; }; "showInfoIcon": { "alias": "showInfoIcon"; "required": false; }; "title": { "alias": "title"; "required": false; }; "dragBoundary": { "alias": "dragBoundary"; "required": false; }; }, { "changeEraseMode": "changeEraseMode"; "cancelClick": "cancelClick"; "processSegmentation": "processSegmentation"; "openInfoContainer": "openInfoContainer"; }, never, never, false, never>;
1217
+ static ɵcmp: i0.ɵɵComponentDeclaration<CanvasToolBarComponent, "co-canvas-tool-bar", never, { "canvasInpaintMode": { "alias": "canvasInpaintMode"; "required": false; }; "canvasEraseMode": { "alias": "canvasEraseMode"; "required": false; }; "canvasDragMode": { "alias": "canvasDragMode"; "required": false; }; "title": { "alias": "title"; "required": false; }; "dragBoundary": { "alias": "dragBoundary"; "required": false; }; }, { "changeEraseMode": "changeEraseMode"; "changeDragMode": "changeDragMode"; }, never, never, false, never>;
1182
1218
  }
1183
1219
 
1184
1220
  declare class CanvasToolBarModule {
@@ -1193,6 +1229,11 @@ declare class PhotoEditorModule {
1193
1229
  static ɵinj: i0.ɵɵInjectorDeclaration<PhotoEditorModule>;
1194
1230
  }
1195
1231
 
1232
+ interface SegmentationJob {
1233
+ image: string;
1234
+ segmentJobId: string;
1235
+ }
1236
+
1196
1237
  declare class PrepareStartingImageComponent {
1197
1238
  iconService: InphotoIconCacheService;
1198
1239
  private _connectorService;
@@ -1202,7 +1243,7 @@ declare class PrepareStartingImageComponent {
1202
1243
  image: string;
1203
1244
  cancelClick: EventEmitter<void>;
1204
1245
  processedRoom: EventEmitter<SceneBuildObject>;
1205
- segmentationJobId: EventEmitter<string>;
1246
+ segmentationJobId: EventEmitter<SegmentationJob>;
1206
1247
  imageReady: EventEmitter<string>;
1207
1248
  continueToAI: EventEmitter<string>;
1208
1249
  disableSelectObjectsButton: boolean;
@@ -1218,9 +1259,54 @@ declare class PrepareStartingImageComponent {
1218
1259
  static ɵcmp: i0.ɵɵComponentDeclaration<PrepareStartingImageComponent, "co-prepare-starting-image", never, { "image": { "alias": "image"; "required": false; }; }, { "cancelClick": "cancelClick"; "processedRoom": "processedRoom"; "segmentationJobId": "segmentationJobId"; "imageReady": "imageReady"; "continueToAI": "continueToAI"; }, never, never, false, never>;
1219
1260
  }
1220
1261
 
1262
+ declare class StepTileComponent {
1263
+ iconService: InphotoIconCacheService;
1264
+ readonly icons: typeof Icon;
1265
+ showClass(): boolean;
1266
+ tileIcon: Icon;
1267
+ tileImage: string;
1268
+ title: string;
1269
+ description: string;
1270
+ showNewBanner: boolean;
1271
+ numberedStep: string;
1272
+ buttonText: string;
1273
+ buttonIcon: Icon;
1274
+ onClick: EventEmitter<void>;
1275
+ onButtonClick: EventEmitter<void>;
1276
+ constructor(iconService: InphotoIconCacheService);
1277
+ handleClick(): void;
1278
+ handleButtonClick(): void;
1279
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepTileComponent, never>;
1280
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepTileComponent, "co-step-tile", never, { "tileIcon": { "alias": "tileIcon"; "required": false; }; "tileImage": { "alias": "tileImage"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "showNewBanner": { "alias": "showNewBanner"; "required": false; }; "numberedStep": { "alias": "numberedStep"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; "buttonIcon": { "alias": "buttonIcon"; "required": false; }; }, { "onClick": "onClick"; "onButtonClick": "onButtonClick"; }, never, never, false, never>;
1281
+ }
1282
+
1283
+ declare class StepTileModule {
1284
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepTileModule, never>;
1285
+ static ɵmod: i0.ɵɵNgModuleDeclaration<StepTileModule, [typeof StepTileComponent], [typeof i2.IconModule, typeof PipeModule, typeof i2.ButtonModule], [typeof StepTileComponent]>;
1286
+ static ɵinj: i0.ɵɵInjectorDeclaration<StepTileModule>;
1287
+ }
1288
+
1289
+ declare class HeaderComponent {
1290
+ iconService: InphotoIconCacheService;
1291
+ readonly icons: typeof Icon;
1292
+ showClass(): boolean;
1293
+ headerIcon: Icon;
1294
+ header: string;
1295
+ description: string;
1296
+ constructor(iconService: InphotoIconCacheService);
1297
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeaderComponent, never>;
1298
+ static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "co-header", never, { "headerIcon": { "alias": "headerIcon"; "required": false; }; "header": { "alias": "header"; "required": false; }; "description": { "alias": "description"; "required": false; }; }, {}, never, never, false, never>;
1299
+ }
1300
+
1301
+ declare class HeaderModule {
1302
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeaderModule, never>;
1303
+ static ɵmod: i0.ɵɵNgModuleDeclaration<HeaderModule, [typeof HeaderComponent], [typeof i2.IconModule, typeof PipeModule], [typeof HeaderComponent]>;
1304
+ static ɵinj: i0.ɵɵInjectorDeclaration<HeaderModule>;
1305
+ }
1306
+
1221
1307
  declare class PrepareStartingImageModule {
1222
1308
  static ɵfac: i0.ɵɵFactoryDeclaration<PrepareStartingImageModule, never>;
1223
- static ɵmod: i0.ɵɵNgModuleDeclaration<PrepareStartingImageModule, [typeof PrepareStartingImageComponent], [typeof EditCanvasModule, typeof i2.ButtonModule, typeof PipeModule, typeof BackNextButtonsModule, typeof i2.IconModule, typeof ProcessLoaderModule], [typeof PrepareStartingImageComponent]>;
1309
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PrepareStartingImageModule, [typeof PrepareStartingImageComponent], [typeof EditCanvasModule, typeof i2.ButtonModule, typeof PipeModule, typeof BackNextButtonsModule, typeof i2.IconModule, typeof ProcessLoaderModule, typeof StepTileModule, typeof HeaderModule], [typeof PrepareStartingImageComponent]>;
1224
1310
  static ɵinj: i0.ɵɵInjectorDeclaration<PrepareStartingImageModule>;
1225
1311
  }
1226
1312
 
@@ -1421,6 +1507,7 @@ declare class InPhotoComponent {
1421
1507
  appInitializerService: AppInitializerService;
1422
1508
  appEventService: InphotoEventService;
1423
1509
  private _cdk;
1510
+ private _dataService;
1424
1511
  showClass(): boolean;
1425
1512
  set settings(input: any);
1426
1513
  showImageUpload: boolean;
@@ -1434,14 +1521,14 @@ declare class InPhotoComponent {
1434
1521
  preparedImage: string;
1435
1522
  aiDecorationImage: string;
1436
1523
  roomData: SceneBuildObject;
1437
- segmentJobId: string;
1438
- constructor(appInitializerService: AppInitializerService, appEventService: InphotoEventService, _cdk: ChangeDetectorRef);
1524
+ segmentJob: SegmentationJob;
1525
+ constructor(appInitializerService: AppInitializerService, appEventService: InphotoEventService, _cdk: ChangeDetectorRef, _dataService: InphotoDataService);
1439
1526
  handleCancelClick(): void;
1440
1527
  startPoint(): void;
1441
1528
  handleImageUpload(image: string): void;
1442
1529
  handleProcessedRoom(roomData: SceneBuildObject): void;
1443
1530
  handleStart3D(data: SceneBuildObject): void;
1444
- handleSegmentationJobId(segmentJobId: string): void;
1531
+ handleSegmentationJob(segmentJob: SegmentationJob): void;
1445
1532
  handleSegmentOutput(image: string): void;
1446
1533
  handleCancelSegmentClick(): void;
1447
1534
  handleMenuChange(event: any): void;
@@ -1459,47 +1546,38 @@ declare class SegmentInpaintComponent {
1459
1546
  private _loaderService;
1460
1547
  readonly icons: typeof Icon;
1461
1548
  showClass(): boolean;
1462
- set image(value: string);
1463
- get image(): string;
1464
- set segmentJobId(value: string);
1465
- get segmentJobId(): string;
1549
+ set segmentJob(value: SegmentationJob);
1550
+ get segmentJob(): SegmentationJob;
1466
1551
  cancelClick: EventEmitter<void>;
1467
1552
  preparedImage: EventEmitter<string>;
1468
1553
  segmentationInPaintingData: any;
1469
1554
  showInfoDialog: boolean;
1470
1555
  canvasInPaint: boolean;
1471
1556
  canvasErase: boolean;
1557
+ dragMode: boolean;
1472
1558
  showLoader: boolean;
1473
1559
  loadingTexts: string[];
1474
- private _image;
1475
- private _segmentJobiId;
1560
+ image: string;
1561
+ segmentJobId: string;
1562
+ private _segmentJob;
1476
1563
  private _inpaintImageState;
1477
1564
  constructor(iconService: InphotoIconCacheService, _connectorService: InPhotoConnectorService, _loaderService: LoaderService);
1565
+ handleSetValues(): void;
1478
1566
  handleCancelClick(): void;
1479
1567
  openInfoDialog(): void;
1480
- handleCloseInfoDialogClick(): void;
1481
1568
  toggleEraseMode(erase: boolean): void;
1569
+ toggleDragMode(value: boolean): void;
1482
1570
  handleSegmentationPointClick(event: SegmentationPoint): void;
1483
1571
  processInpainted(): void;
1484
1572
  handleImageStateChange(image: string): void;
1485
1573
  private _handleLoader;
1486
1574
  static ɵfac: i0.ɵɵFactoryDeclaration<SegmentInpaintComponent, never>;
1487
- static ɵcmp: i0.ɵɵComponentDeclaration<SegmentInpaintComponent, "co-segment-inpaint", never, { "image": { "alias": "image"; "required": false; }; "segmentJobId": { "alias": "segmentJobId"; "required": false; }; }, { "cancelClick": "cancelClick"; "preparedImage": "preparedImage"; }, never, never, false, never>;
1488
- }
1489
-
1490
- declare class InpaintInfoCardComponent {
1491
- showClass(): boolean;
1492
- icon: SafeHtml;
1493
- title: string;
1494
- description: string;
1495
- number: number;
1496
- static ɵfac: i0.ɵɵFactoryDeclaration<InpaintInfoCardComponent, never>;
1497
- static ɵcmp: i0.ɵɵComponentDeclaration<InpaintInfoCardComponent, "co-inpaint-info-card", never, { "icon": { "alias": "icon"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "number": { "alias": "number"; "required": false; }; }, {}, never, never, false, never>;
1575
+ static ɵcmp: i0.ɵɵComponentDeclaration<SegmentInpaintComponent, "co-segment-inpaint", never, { "segmentJob": { "alias": "segmentJob"; "required": false; }; }, { "cancelClick": "cancelClick"; "preparedImage": "preparedImage"; }, never, never, false, never>;
1498
1576
  }
1499
1577
 
1500
1578
  declare class SegmentInpaintModule {
1501
1579
  static ɵfac: i0.ɵɵFactoryDeclaration<SegmentInpaintModule, never>;
1502
- static ɵmod: i0.ɵɵNgModuleDeclaration<SegmentInpaintModule, [typeof SegmentInpaintComponent, typeof InpaintInfoCardComponent], [typeof EditCanvasModule, typeof i2.IconModule, typeof PipeModule, typeof i2.ButtonModule, typeof ProcessLoaderModule, typeof CanvasToolBarModule], [typeof SegmentInpaintComponent, typeof InpaintInfoCardComponent]>;
1580
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SegmentInpaintModule, [typeof SegmentInpaintComponent], [typeof EditCanvasModule, typeof i2.IconModule, typeof PipeModule, typeof i2.ButtonModule, typeof ProcessLoaderModule, typeof CanvasToolBarModule, typeof StepTileModule, typeof HeaderModule], [typeof SegmentInpaintComponent]>;
1503
1581
  static ɵinj: i0.ɵɵInjectorDeclaration<SegmentInpaintModule>;
1504
1582
  }
1505
1583
 
@@ -1513,6 +1591,7 @@ declare class ImageProcessCompleteComponent {
1513
1591
  get image(): string;
1514
1592
  handleStart3D: EventEmitter<SceneBuildObject>;
1515
1593
  handleAiDecorationClicked: EventEmitter<string>;
1594
+ handleContinueSegmentation: EventEmitter<SegmentationJob>;
1516
1595
  cancelClick: EventEmitter<void>;
1517
1596
  showLoader: boolean;
1518
1597
  loadingTexts: string[];
@@ -1521,29 +1600,16 @@ declare class ImageProcessCompleteComponent {
1521
1600
  constructor(iconService: InphotoIconCacheService, _connectorService: InPhotoConnectorService, _appEventService: InphotoEventService);
1522
1601
  handle3DClick(): void;
1523
1602
  handleAiClick(): void;
1603
+ handleContinueSegmentationClick(): void;
1524
1604
  cancel(): void;
1525
1605
  private _handleRoomReceived;
1526
1606
  static ɵfac: i0.ɵɵFactoryDeclaration<ImageProcessCompleteComponent, never>;
1527
- static ɵcmp: i0.ɵɵComponentDeclaration<ImageProcessCompleteComponent, "co-image-process-complete", never, { "image": { "alias": "image"; "required": false; }; }, { "handleStart3D": "handleStart3D"; "handleAiDecorationClicked": "handleAiDecorationClicked"; "cancelClick": "cancelClick"; }, never, never, false, never>;
1528
- }
1529
-
1530
- declare class ImageProcessCompleteNextComponent {
1531
- iconService: InphotoIconCacheService;
1532
- readonly icons: typeof Icon;
1533
- showClass(): boolean;
1534
- icon: Icon;
1535
- header: string;
1536
- body: string;
1537
- onClick: EventEmitter<void>;
1538
- constructor(iconService: InphotoIconCacheService);
1539
- handleClick(): void;
1540
- static ɵfac: i0.ɵɵFactoryDeclaration<ImageProcessCompleteNextComponent, never>;
1541
- static ɵcmp: i0.ɵɵComponentDeclaration<ImageProcessCompleteNextComponent, "co-image-process-complete-next", never, { "icon": { "alias": "icon"; "required": false; }; "header": { "alias": "header"; "required": false; }; "body": { "alias": "body"; "required": false; }; }, { "onClick": "onClick"; }, never, never, false, never>;
1607
+ static ɵcmp: i0.ɵɵComponentDeclaration<ImageProcessCompleteComponent, "co-image-process-complete", never, { "image": { "alias": "image"; "required": false; }; }, { "handleStart3D": "handleStart3D"; "handleAiDecorationClicked": "handleAiDecorationClicked"; "handleContinueSegmentation": "handleContinueSegmentation"; "cancelClick": "cancelClick"; }, never, never, false, never>;
1542
1608
  }
1543
1609
 
1544
1610
  declare class ImageProcessCompleteModule {
1545
1611
  static ɵfac: i0.ɵɵFactoryDeclaration<ImageProcessCompleteModule, never>;
1546
- static ɵmod: i0.ɵɵNgModuleDeclaration<ImageProcessCompleteModule, [typeof ImageProcessCompleteComponent, typeof ImageProcessCompleteNextComponent], [typeof i2.IconModule, typeof PipeModule, typeof i2.ButtonModule, typeof ProcessLoaderModule], [typeof ImageProcessCompleteComponent, typeof ImageProcessCompleteNextComponent]>;
1612
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ImageProcessCompleteModule, [typeof ImageProcessCompleteComponent], [typeof i2.IconModule, typeof PipeModule, typeof i2.ButtonModule, typeof ProcessLoaderModule, typeof StepTileModule, typeof HeaderModule], [typeof ImageProcessCompleteComponent]>;
1547
1613
  static ɵinj: i0.ɵɵInjectorDeclaration<ImageProcessCompleteModule>;
1548
1614
  }
1549
1615
 
@@ -3,11 +3,8 @@
3
3
  @include cfg.export-module('co-ai-prompt-layout') {
4
4
  .co-ai-prompt {
5
5
  .custom-prompt-container {
6
- margin: 20px auto;
7
- background: var(--co-inphoto-background-white);
8
- border-radius: var(--co-inphoto-border-radius);
6
+
9
7
  box-sizing: border-box;
10
- padding: 15px;
11
8
 
12
9
  .custom-height {
13
10
  height: 100px;
@@ -27,31 +24,11 @@
27
24
  }
28
25
  }
29
26
 
30
- .prompt-head {
31
- @include cfg.sub-header-text();
32
- }
33
-
34
- .prompt-text {
35
- @include cfg.text();
36
- margin-bottom: 10px;
37
- }
38
-
39
27
  .prompt-mode {
40
28
  margin: 10px auto;
41
29
  display: flex;
42
30
  align-items: center;
43
31
 
44
- .prompt-mode-text {
45
- font-size: var(--co-inphoto-font-size-label);
46
- .active {
47
- font-weight: bold;
48
- }
49
-
50
- .spacer {
51
- margin: 0 4px;
52
- color: #CCC;
53
- }
54
- }
55
32
 
56
33
  .prompt-mode-switch {
57
34
  margin-right: 15px;
@@ -68,7 +45,6 @@
68
45
  height: 0;
69
46
 
70
47
  &:checked + .slider {
71
- background-color: var(--co-inphoto-accent-color);
72
48
 
73
49
  &:before {
74
50
  -webkit-transform: translateX(20px);
@@ -76,10 +52,6 @@
76
52
  transform: translateX(20px);
77
53
  }
78
54
  }
79
-
80
- &:focus + .slider {
81
- box-shadow: 0 0 1px var(--co-inphoto-accent-color);
82
- }
83
55
  }
84
56
  }
85
57
 
@@ -90,7 +62,6 @@
90
62
  left: 0;
91
63
  right: 0;
92
64
  bottom: 0;
93
- background-color: #ccc;
94
65
  transition: 0.4s;
95
66
 
96
67
  &:before {
@@ -100,7 +71,6 @@
100
71
  width: 16px;
101
72
  left: 4px;
102
73
  bottom: 4px;
103
- background-color: white;
104
74
  transition: 0.4s;
105
75
  }
106
76
 
@@ -114,12 +84,6 @@
114
84
  }
115
85
  }
116
86
  }
117
-
118
-
119
- .required-input-empty {
120
- border: 1px solid #dc3545;
121
- background-color: rgba(220, 53, 69, 0.25);
122
- }
123
87
  }
124
88
  }
125
89
  }
@@ -1,3 +1,5 @@
1
1
  :root {
2
-
2
+ --co-inphoto-prompt-spacer-color: #D9D9DF;
3
+ --co-inphoto-input-required-error-color: #dc3545;
4
+ --co-inphoto-input-required-error-background: rgba(220, 53, 69, 0.25);
3
5
  }
@@ -2,8 +2,67 @@
2
2
 
3
3
  @include cfg.export-module('co-ai-prompt-theme') {
4
4
  .co-ai-prompt {
5
+ .custom-prompt-container {
6
+ margin: 20px auto;
7
+ background: var(--co-inphoto-background-white);
8
+ border-radius: var(--co-inphoto-border-radius);
9
+ padding: 15px;
10
+
11
+
12
+ .prompt-head {
13
+ @include cfg.sub-header-text();
14
+ }
15
+
16
+ .prompt-text {
17
+ @include cfg.text();
18
+ margin-bottom: 10px;
19
+ }
20
+
21
+ .prompt-mode {
22
+ .prompt-mode-text {
23
+ font-size: var(--co-inphoto-font-size-label);
24
+
25
+ .active {
26
+ font-weight: bold;
27
+ }
28
+
29
+ .spacer {
30
+ margin: 0 4px;
31
+ color: var(--co-inphoto-prompt-spacer-color);
32
+ }
33
+ }
34
+
35
+ .prompt-mode-switch {
36
+
37
+ .switch {
38
+
39
+ input {
40
+ &:checked + .slider {
41
+ background-color: var(--co-inphoto-accent-color);
42
+ }
43
+
44
+ &:focus + .slider {
45
+ box-shadow: 0 0 1px var(--co-inphoto-accent-color);
46
+ }
47
+ }
48
+ }
49
+
50
+ .slider {
51
+ background-color: var(--co-inphoto-prompt-spacer-color);
52
+
53
+ &:before {
54
+ background-color: var(--co-inphoto-background-white);
55
+ }
56
+ }
57
+ }
58
+ }
59
+
60
+ .required-input-empty {
61
+ border: 1px solid var(--co-inphoto-input-required-error-color);
62
+ background-color: var(--co-inphoto-input-required-error-background);
63
+ }
64
+ }
5
65
  }
6
66
  }
7
67
 
8
68
 
9
-
@@ -5,44 +5,40 @@
5
5
  .canvas-toolbar {
6
6
  display: flex;
7
7
  align-items: center;
8
- background: var(--co-inphoto-dialog-background-color);
8
+ background: var(--co-inphoto-background-white);
9
9
  position: absolute;
10
10
  top: 50px;
11
- left: calc(50% - 400px);
12
- z-index: 100;
11
+ left: 25%;
12
+ z-index: 25;
13
13
  border-radius: var(--co-inphoto-border-radius);
14
14
  box-sizing: border-box;
15
- padding: 15px 15px 15px 0;
15
+ padding: 10px;
16
16
  justify-content: space-around;
17
17
 
18
18
  .drag-indicator-icon {
19
19
  cursor: grab;
20
+ box-sizing: border-box;
21
+ padding: 8px;
22
+ background: var(--co-inphoto-dialog-background-color);
23
+ border-radius: var(--co-inphoto-border-radius);
20
24
 
21
25
  &:active {
22
26
  cursor: grabbing;
23
27
  }
24
28
 
25
- @include cfg.default-icon(var(--co-inphoto-icon-size-large), var(--co-inphoto-icon-size-large), var(--co-inphoto-accent-text));
29
+ @include cfg.default-icon(var(--co-inphoto-button-small-icon-size), var(--co-inphoto-button-small-icon-size), var(--co-inphoto-accent-text));
26
30
  }
27
31
 
28
32
  .modus-indicator, .tool-selection, .actions {
29
33
  display: flex;
30
34
  align-items: center;
31
- margin: 0 10px;
35
+ margin: 0 5px;
32
36
  }
33
37
 
34
38
 
35
39
  .modus-indicator {
36
40
  .modus-indicator-text {
37
41
  @include cfg.sub-header-text();
38
- margin-right: 10px;
39
- }
40
-
41
- .modus-indicator-info-icon {
42
- .info-button {
43
- @include cfg.default-icon(var(--co-inphoto-toolbar-info-icon-size), var(--co-inphoto-toolbar-info-icon-size), var(--co-inphoto-icon-color));
44
- cursor: pointer;
45
- }
46
42
  }
47
43
  }
48
44
 
@@ -50,23 +46,25 @@
50
46
  color: var(--co-inphoto-toolbar-spacer-color);
51
47
  font-size: 30px;
52
48
  font-weight: lighter;
53
- margin: 0 10px;
49
+ margin: 0 5px;
54
50
  }
55
51
 
56
52
  .tool-selection {
57
- .brush-button, .eraser-button {
53
+ .brush-button, .eraser-button, .drag-button {
58
54
  background-color: var(--co-inphoto-button-background);
59
55
  color: var(--co-inphoto-button-color);
60
56
  font-size: var(--co-inphoto-button-font-size);
61
57
  border: var(--co-inphoto-button-border);
62
58
  cursor: pointer;
63
- padding: var(--co-inphoto-button-padding);
59
+ padding: 0;
64
60
  border-radius: var(--co-inphoto-button-radius);
65
61
  margin: 0 4px;
62
+ height: 35px;
63
+ width: 35px;
66
64
 
67
65
  .co-icon {
68
- height: var(--co-inphoto-button-icon-size);
69
- width: var(--co-inphoto-button-icon-size);
66
+ height: var(--co-inphoto-button-small-icon-size);
67
+ width: var(--co-inphoto-button-small-icon-size);
70
68
 
71
69
  svg, path {
72
70
  fill: var(--co-inphoto-button-icon-color);
@@ -91,6 +89,7 @@
91
89
  gap: 20px;
92
90
 
93
91
  .cancel-button, .action-button {
92
+ height: 35px;
94
93
  display: flex;
95
94
  align-content: center;
96
95
  align-items: center;
@@ -104,7 +103,7 @@
104
103
  font-size: var(--co-inphoto-button-font-size);
105
104
  padding: var(--co-inphoto-button-padding);
106
105
  font-weight: 500;
107
- @include cfg.default-icon(var(--co-inphoto-button-icon-size), var(--co-inphoto-button-icon-size), var(--co-inphoto-button-icon-color));
106
+ @include cfg.default-icon(var(--co-inphoto-button-small-icon-size), var(--co-inphoto-button-small-icon-size), var(--co-inphoto-button-icon-color));
108
107
 
109
108
  .label {
110
109
  margin-right: 10px;
@@ -119,7 +118,7 @@
119
118
  var(--co-inphoto-action-button-background),
120
119
  var(--co-inphoto-action-button-color),
121
120
  var(--co-inphoto-action-button-font-size),
122
- var(--co-inphoto-action-button-icon-size),
121
+ var(--co-inphoto-button-small-icon-size),
123
122
  var(--co-inphoto-action-button-icon-color),
124
123
  var(--co-inphoto-action-button-border),
125
124
  var(--co-inphoto-action-button-radius),