@fyul/embed-sdk 2.5.21 → 2.6.0

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 (103) hide show
  1. package/dist/cjs/helpers/messageLogger.d.ts +1 -0
  2. package/dist/cjs/helpers/messageLogger.js +2 -0
  3. package/dist/cjs/index.d.ts +2 -0
  4. package/dist/cjs/index.js +4 -1
  5. package/dist/cjs/modules/baseModule.d.ts +2 -2
  6. package/dist/cjs/modules/embed-studio/broadcastEvents/baseEmbedStudioBroadcastEvent.d.ts +6 -0
  7. package/dist/cjs/modules/embed-studio/broadcastEvents/baseEmbedStudioBroadcastEvent.js +10 -0
  8. package/dist/cjs/modules/embed-studio/broadcastEvents/onDesignStatusUpdate.d.ts +5 -0
  9. package/dist/cjs/modules/embed-studio/broadcastEvents/onDesignStatusUpdate.js +10 -0
  10. package/dist/cjs/modules/embed-studio/broadcastEvents/onErrorUpdate.d.ts +5 -0
  11. package/dist/cjs/modules/embed-studio/broadcastEvents/onErrorUpdate.js +10 -0
  12. package/dist/cjs/modules/embed-studio/embedStudioBroadcastModule.d.ts +9 -0
  13. package/dist/cjs/modules/embed-studio/embedStudioBroadcastModule.js +20 -0
  14. package/dist/cjs/modules/embed-studio/embedStudioModule.d.ts +10 -0
  15. package/dist/cjs/modules/embed-studio/embedStudioModule.js +21 -0
  16. package/dist/cjs/modules/embed-studio/events.d.ts +26 -0
  17. package/dist/cjs/modules/embed-studio/events.js +25 -0
  18. package/dist/cjs/modules/embed-studio/types/data.types.d.ts +46 -0
  19. package/dist/cjs/modules/embed-studio/types/data.types.js +2 -0
  20. package/dist/cjs/modules/embed-studio/types/event/actionEvent.types.d.ts +7 -0
  21. package/dist/cjs/modules/embed-studio/types/event/actionEvent.types.js +2 -0
  22. package/dist/cjs/modules/embed-studio/types/event/actionEventPayload.types.d.ts +9 -0
  23. package/dist/cjs/modules/embed-studio/types/event/actionEventPayload.types.js +2 -0
  24. package/dist/cjs/modules/embed-studio/types/event/broadcastEvent.types.d.ts +9 -0
  25. package/dist/cjs/modules/embed-studio/types/event/broadcastEvent.types.js +2 -0
  26. package/dist/cjs/modules/embed-studio/types/event/broadcastEventPayload.types.d.ts +4 -0
  27. package/dist/cjs/modules/embed-studio/types/event/broadcastEventPayload.types.js +2 -0
  28. package/dist/cjs/modules/embed-studio/types/event/resultEvent.types.d.ts +5 -0
  29. package/dist/cjs/modules/embed-studio/types/event/resultEvent.types.js +2 -0
  30. package/dist/cjs/modules/embed-studio/types/event/resultEventPayload.types.d.ts +5 -0
  31. package/dist/cjs/modules/embed-studio/types/event/resultEventPayload.types.js +2 -0
  32. package/dist/cjs/modules/embed-studio/types/index.d.ts +8 -0
  33. package/dist/cjs/modules/embed-studio/types/index.js +27 -0
  34. package/dist/cjs/modules/eventTypes.d.ts +2 -2
  35. package/dist/cjs/modules/events.d.ts +12 -6
  36. package/dist/cjs/modules/events.js +5 -0
  37. package/dist/cjs/modules/moduleNames.d.ts +1 -0
  38. package/dist/cjs/modules/moduleNames.js +1 -0
  39. package/dist/cjs/modules/modules.d.ts +3 -0
  40. package/dist/cjs/modules/modules.js +3 -0
  41. package/dist/cjs/services/embedCommunicator.d.ts +3 -3
  42. package/dist/cjs/services/embedCommunicator.js +1 -0
  43. package/dist/cjs/services/embedStudio.d.ts +20 -0
  44. package/dist/cjs/services/embedStudio.js +88 -0
  45. package/dist/cjs/types/event/action/actionEvent.types.d.ts +2 -1
  46. package/dist/cjs/types/event/action/actionEventPayload.types.d.ts +2 -1
  47. package/dist/cjs/types/event/result/resultEvent.types.d.ts +2 -1
  48. package/dist/cjs/types/event/result/resultEventPayload.types.d.ts +2 -1
  49. package/dist/cjs/types/module/module.types.d.ts +10 -0
  50. package/dist/cjs/version.d.ts +1 -1
  51. package/dist/cjs/version.js +1 -1
  52. package/dist/esm/helpers/messageLogger.d.ts +1 -0
  53. package/dist/esm/helpers/messageLogger.js +2 -0
  54. package/dist/esm/index.d.ts +2 -0
  55. package/dist/esm/index.js +2 -0
  56. package/dist/esm/modules/baseModule.d.ts +2 -2
  57. package/dist/esm/modules/embed-studio/broadcastEvents/baseEmbedStudioBroadcastEvent.d.ts +6 -0
  58. package/dist/esm/modules/embed-studio/broadcastEvents/baseEmbedStudioBroadcastEvent.js +6 -0
  59. package/dist/esm/modules/embed-studio/broadcastEvents/onDesignStatusUpdate.d.ts +5 -0
  60. package/dist/esm/modules/embed-studio/broadcastEvents/onDesignStatusUpdate.js +6 -0
  61. package/dist/esm/modules/embed-studio/broadcastEvents/onErrorUpdate.d.ts +5 -0
  62. package/dist/esm/modules/embed-studio/broadcastEvents/onErrorUpdate.js +6 -0
  63. package/dist/esm/modules/embed-studio/embedStudioBroadcastModule.d.ts +9 -0
  64. package/dist/esm/modules/embed-studio/embedStudioBroadcastModule.js +16 -0
  65. package/dist/esm/modules/embed-studio/embedStudioModule.d.ts +10 -0
  66. package/dist/esm/modules/embed-studio/embedStudioModule.js +17 -0
  67. package/dist/esm/modules/embed-studio/events.d.ts +26 -0
  68. package/dist/esm/modules/embed-studio/events.js +22 -0
  69. package/dist/esm/modules/embed-studio/types/data.types.d.ts +46 -0
  70. package/dist/esm/modules/embed-studio/types/data.types.js +1 -0
  71. package/dist/esm/modules/embed-studio/types/event/actionEvent.types.d.ts +7 -0
  72. package/dist/esm/modules/embed-studio/types/event/actionEvent.types.js +1 -0
  73. package/dist/esm/modules/embed-studio/types/event/actionEventPayload.types.d.ts +9 -0
  74. package/dist/esm/modules/embed-studio/types/event/actionEventPayload.types.js +1 -0
  75. package/dist/esm/modules/embed-studio/types/event/broadcastEvent.types.d.ts +9 -0
  76. package/dist/esm/modules/embed-studio/types/event/broadcastEvent.types.js +1 -0
  77. package/dist/esm/modules/embed-studio/types/event/broadcastEventPayload.types.d.ts +4 -0
  78. package/dist/esm/modules/embed-studio/types/event/broadcastEventPayload.types.js +1 -0
  79. package/dist/esm/modules/embed-studio/types/event/resultEvent.types.d.ts +5 -0
  80. package/dist/esm/modules/embed-studio/types/event/resultEvent.types.js +1 -0
  81. package/dist/esm/modules/embed-studio/types/event/resultEventPayload.types.d.ts +5 -0
  82. package/dist/esm/modules/embed-studio/types/event/resultEventPayload.types.js +1 -0
  83. package/dist/esm/modules/embed-studio/types/index.d.ts +8 -0
  84. package/dist/esm/modules/embed-studio/types/index.js +11 -0
  85. package/dist/esm/modules/eventTypes.d.ts +2 -2
  86. package/dist/esm/modules/events.d.ts +12 -6
  87. package/dist/esm/modules/events.js +5 -0
  88. package/dist/esm/modules/moduleNames.d.ts +1 -0
  89. package/dist/esm/modules/moduleNames.js +1 -0
  90. package/dist/esm/modules/modules.d.ts +3 -0
  91. package/dist/esm/modules/modules.js +3 -0
  92. package/dist/esm/services/embedCommunicator.d.ts +3 -3
  93. package/dist/esm/services/embedCommunicator.js +1 -0
  94. package/dist/esm/services/embedStudio.d.ts +20 -0
  95. package/dist/esm/services/embedStudio.js +84 -0
  96. package/dist/esm/types/event/action/actionEvent.types.d.ts +2 -1
  97. package/dist/esm/types/event/action/actionEventPayload.types.d.ts +2 -1
  98. package/dist/esm/types/event/result/resultEvent.types.d.ts +2 -1
  99. package/dist/esm/types/event/result/resultEventPayload.types.d.ts +2 -1
  100. package/dist/esm/types/module/module.types.d.ts +10 -0
  101. package/dist/esm/version.d.ts +1 -1
  102. package/dist/esm/version.js +1 -1
  103. package/package.json +1 -1
@@ -11,8 +11,8 @@ export declare class EmbedCommunicator {
11
11
  private isListening;
12
12
  private constructor();
13
13
  static getInstance(): EmbedCommunicator;
14
- sendCorrelatedRequest<TReturn>(eventName: ActionEventName, moduleType: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.WHITE_LABEL, payload?: ActionEventPayload): Promise<TReturn>;
15
- setIFrameManager(mainModule: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.WHITE_LABEL, iFrameManager: iFrameManager): void;
14
+ sendCorrelatedRequest<TReturn>(eventName: ActionEventName, moduleType: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.EMBED_STUDIO | typeof MODULE_NAMES.WHITE_LABEL, payload?: ActionEventPayload): Promise<TReturn>;
15
+ setIFrameManager(mainModule: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.EMBED_STUDIO | typeof MODULE_NAMES.WHITE_LABEL, iFrameManager: iFrameManager): void;
16
16
  setupListener(): void;
17
17
  private handleInboundMessageEvent;
18
18
  private handleInboundEvent;
@@ -22,6 +22,6 @@ export declare class EmbedCommunicator {
22
22
  isValidBroadcastEvent(event: BroadcastEvent): false | import("../modules/edm/types").OnDesignStatusEvent | import("../modules/edm/types").OnErrorEvent | import("../modules/edm/types").OnFilePickerRequestedEvent | import("../modules/edm/types").StepResponse | import("../modules/white-label/types").OnShoppingCartUpdateEvent | import("../modules/edm/types/event/broadcastEventPayload.types").OnPricingStatusUpdateEventPayload | undefined;
23
23
  private resolveSuccessfulEvent;
24
24
  handleBroadcastEvent(event: BroadcastEvent): void;
25
- protected send(event: ActionEvent, moduleType: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.WHITE_LABEL): void;
25
+ protected send(event: ActionEvent, moduleType: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.EMBED_STUDIO | typeof MODULE_NAMES.WHITE_LABEL): void;
26
26
  cleanup(): void;
27
27
  }
@@ -14,6 +14,7 @@ class EmbedCommunicator {
14
14
  iFrameManagers = {
15
15
  [moduleNames_1.MODULE_NAMES.SDK]: null,
16
16
  [moduleNames_1.MODULE_NAMES.EDM]: null,
17
+ [moduleNames_1.MODULE_NAMES.EMBED_STUDIO]: null,
17
18
  [moduleNames_1.MODULE_NAMES.WHITE_LABEL]: null,
18
19
  };
19
20
  isListening = false;
@@ -0,0 +1,20 @@
1
+ import { EmbedStudioBroadcastModule } from '../modules/embed-studio/embedStudioBroadcastModule';
2
+ import type { EmbedStudioParams, EmbedStudioConfig } from '../modules/embed-studio/types/data.types';
3
+ import type { EmbedStudioBroadcastListeners } from '../modules/embed-studio/types/event/broadcastEvent.types';
4
+ import type { SaveDesignResultPayload } from '../modules/embed-studio/types/event/resultEventPayload.types';
5
+ import type { HandledResponse } from '../types/event/result/resultEventPayload.types';
6
+ export declare class EmbedStudio {
7
+ private params;
8
+ private config?;
9
+ static BASE_URL: string;
10
+ static broadCastEventHandler: EmbedStudioBroadcastModule | null;
11
+ private iFrameManager;
12
+ private communicator;
13
+ private moduleLoader;
14
+ private initialized;
15
+ constructor(params: EmbedStudioParams, config?: EmbedStudioConfig | undefined, callbacks?: Partial<EmbedStudioBroadcastListeners>);
16
+ init(): Promise<void>;
17
+ saveDesign(): Promise<HandledResponse<SaveDesignResultPayload, Error>>;
18
+ destroy(): void;
19
+ static getBroadCastEventHandler(): EmbedStudioBroadcastModule;
20
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmbedStudio = void 0;
4
+ const iFrameManager_1 = require("../services/iFrameManager");
5
+ const embedCommunicator_1 = require("../services/embedCommunicator");
6
+ const moduleLoaderService_1 = require("../services/moduleLoaderService");
7
+ const embedStudioBroadcastModule_1 = require("../modules/embed-studio/embedStudioBroadcastModule");
8
+ const moduleNames_1 = require("../modules/moduleNames");
9
+ const version_1 = require("../version");
10
+ const messageLogger_1 = require("../helpers/messageLogger");
11
+ class EmbedStudio {
12
+ params;
13
+ config;
14
+ static BASE_URL = globalThis.__FYUL_TESTING_VARS__?.iframeUrl ??
15
+ 'https://embed-studio.fyul.com';
16
+ static broadCastEventHandler = null;
17
+ iFrameManager = null;
18
+ communicator = embedCommunicator_1.EmbedCommunicator.getInstance();
19
+ moduleLoader = moduleLoaderService_1.ModuleLoaderService.getInstance();
20
+ initialized = false;
21
+ constructor(params, config, callbacks) {
22
+ this.params = params;
23
+ this.config = config;
24
+ EmbedStudio.broadCastEventHandler = new embedStudioBroadcastModule_1.EmbedStudioBroadcastModule(callbacks);
25
+ (0, messageLogger_1.setLoggerState)(params?.debug ?? false, messageLogger_1.SOURCES.EMBED_STUDIO);
26
+ }
27
+ async init() {
28
+ if (this.initialized) {
29
+ (0, messageLogger_1.logEmbedMessage)({
30
+ message: 'EmbedStudio already initialized',
31
+ logType: messageLogger_1.LOG_TYPES.WARN,
32
+ });
33
+ return;
34
+ }
35
+ const elementToBindTo = this.params.element ?? document.getElementById(this.params.elementId);
36
+ if (!elementToBindTo) {
37
+ (0, messageLogger_1.logEmbedMessage)({
38
+ message: 'Cant find element for EmbedStudio',
39
+ logType: messageLogger_1.LOG_TYPES.ERROR,
40
+ });
41
+ return;
42
+ }
43
+ this.iFrameManager = new iFrameManager_1.iFrameManager({
44
+ baseUrl: EmbedStudio.BASE_URL,
45
+ urlParams: {
46
+ nonce: this.params.nonce,
47
+ sdkMode: true,
48
+ },
49
+ class: this.params.iframeClassName,
50
+ elementToAppendTo: elementToBindTo,
51
+ });
52
+ await this.iFrameManager.create();
53
+ this.communicator.setIFrameManager(moduleNames_1.MODULE_NAMES.EMBED_STUDIO, this.iFrameManager);
54
+ this.communicator.setupListener();
55
+ const embedStudioModule = this.moduleLoader.getModule(moduleNames_1.MODULE_NAMES.EMBED_STUDIO);
56
+ const notification = await embedStudioModule.setup({
57
+ ...this.config,
58
+ ...this.params,
59
+ clientVersion: version_1.VERSION,
60
+ });
61
+ (0, messageLogger_1.logEmbedMessage)({
62
+ message: ['EmbedStudio setup notification', notification],
63
+ logType: messageLogger_1.LOG_TYPES.LOG,
64
+ });
65
+ this.initialized = true;
66
+ }
67
+ saveDesign() {
68
+ const module = this.moduleLoader.getModule(moduleNames_1.MODULE_NAMES.EMBED_STUDIO);
69
+ return module.saveDesign();
70
+ }
71
+ destroy() {
72
+ if (this.iFrameManager) {
73
+ this.iFrameManager.destroy();
74
+ this.iFrameManager = null;
75
+ }
76
+ this.communicator.cleanup();
77
+ this.moduleLoader.clearCache();
78
+ this.initialized = false;
79
+ EmbedStudio.broadCastEventHandler = null;
80
+ }
81
+ static getBroadCastEventHandler() {
82
+ if (!EmbedStudio.broadCastEventHandler) {
83
+ throw new Error('No active EmbedStudioBroadcastModule instance');
84
+ }
85
+ return EmbedStudio.broadCastEventHandler;
86
+ }
87
+ }
88
+ exports.EmbedStudio = EmbedStudio;
@@ -3,6 +3,7 @@ import { ActionEvent as CatalogActionEvent } from '../../../modules/catalog/type
3
3
  import { ActionEvent as MockupGenerationActionEvent } from '../../../modules/mockup-generation/types/event/actionEvent.types';
4
4
  import { ActionEvent as ProductPublishActionEvent } from '../../../modules/product-publish/types/event/actionEvent.types';
5
5
  import { ActionEvent as EdmActionEvent } from '../../../modules/edm/types/event/actionEvent.types';
6
+ import { ActionEvent as EmbedStudioActionEvent } from '../../../modules/embed-studio/types/event/actionEvent.types';
6
7
  import { ActionEvent as WhiteLabelActionEvent } from '../../../modules/white-label/types/event/actionEvent.types';
7
8
  import { ALL_ACTION_EVENTS } from '../../../modules/events';
8
9
  import { Event } from '../../../types/event/event.types';
@@ -10,4 +11,4 @@ import { EVENT_TYPES } from '../../../modules/eventTypes';
10
11
  import { ActionEventPayload } from './actionEventPayload.types';
11
12
  export type ActionEventName = (typeof ALL_ACTION_EVENTS)[keyof typeof ALL_ACTION_EVENTS];
12
13
  export type BaseActionEvent<TName extends ActionEventName, TPayload extends ActionEventPayload> = Event<TName, typeof EVENT_TYPES.ACTION, TPayload>;
13
- export type ActionEvent = MockupGenerationActionEvent | CatalogActionEvent | ProductPublishActionEvent | SdkActionEvent | EdmActionEvent | WhiteLabelActionEvent;
14
+ export type ActionEvent = MockupGenerationActionEvent | CatalogActionEvent | ProductPublishActionEvent | SdkActionEvent | EdmActionEvent | EmbedStudioActionEvent | WhiteLabelActionEvent;
@@ -3,5 +3,6 @@ import { ActionEventPayload as CatalogEventPayload } from '../../../modules/cata
3
3
  import { ActionEventPayload as MockupGenerationEventPayload } from '../../../modules/mockup-generation/types/event/actionEventPayload.types';
4
4
  import { ActionEventPayload as ProductPublishEventPayload } from '../../../modules/product-publish/types/event/actionEventPayload.types';
5
5
  import { ActionEventPayload as EdmEventPayload } from '../../../modules/edm/types/event/actionEventPayload.types';
6
+ import { ActionEventPayload as EmbedStudioActionEventPayload } from '../../../modules/embed-studio/types/event/actionEventPayload.types';
6
7
  import { ActionEventPayload as WhiteLabelEventPayload } from '../../../modules/white-label/types/event/actionEventPayload.types';
7
- export type ActionEventPayload = LoadModulePayload | MockupGenerationEventPayload | CatalogEventPayload | SdkEventPayload | ProductPublishEventPayload | EdmEventPayload | WhiteLabelEventPayload | undefined;
8
+ export type ActionEventPayload = LoadModulePayload | MockupGenerationEventPayload | CatalogEventPayload | SdkEventPayload | ProductPublishEventPayload | EdmEventPayload | EmbedStudioActionEventPayload | WhiteLabelEventPayload | undefined;
@@ -2,6 +2,7 @@ import { ResultEvent as CatalogResultEvent } from '../../../modules/catalog/type
2
2
  import { ResultEvent as MockupGenerationResultEvent } from '../../../modules/mockup-generation/types/event/resultEvent.types';
3
3
  import { ResultEvent as ProductPublishResultEvent } from '../../../modules/product-publish/types/event/resultEvent.types';
4
4
  import { ResultEvent as EdmResultPayload } from '../../../modules/edm/types/event/resultEvent.types';
5
+ import { ResultEvent as EmbedStudioResultEvent } from '../../../modules/embed-studio/types/event/resultEvent.types';
5
6
  import { ResultEvent as WhiteLabelResultPayload } from '../../../modules/white-label/types/event/resultEvent.types';
6
7
  import { ResultEventPayload } from './resultEventPayload.types';
7
8
  import { EVENT_TYPES } from '../../../modules/eventTypes';
@@ -9,4 +10,4 @@ import { Event } from '../../../types/event/event.types';
9
10
  import { ALL_RESULT_EVENTS } from '../../../modules/events';
10
11
  export type ResultEventName = (typeof ALL_RESULT_EVENTS)[keyof typeof ALL_RESULT_EVENTS];
11
12
  export type BaseResultEvent<TName extends ResultEventName, TPayload extends ResultEventPayload> = Event<TName, typeof EVENT_TYPES.RESULT, TPayload>;
12
- export type ResultEvent = MockupGenerationResultEvent | CatalogResultEvent | ProductPublishResultEvent | EdmResultPayload | WhiteLabelResultPayload;
13
+ export type ResultEvent = MockupGenerationResultEvent | CatalogResultEvent | ProductPublishResultEvent | EdmResultPayload | EmbedStudioResultEvent | WhiteLabelResultPayload;
@@ -2,8 +2,9 @@ import type { CatalogResultPayload } from '../../../modules/catalog/types';
2
2
  import type { MockupGenerationResultPayload } from '../../../modules/mockup-generation/types';
3
3
  import type { ProductPublishResultPayload } from '../../../modules/product-publish/types';
4
4
  import type { EdmResultPayload } from '../../../modules/edm/types/event/resultEventPayload.types';
5
+ import type { EmbedStudioResultPayload } from '../../../modules/embed-studio/types/event/resultEventPayload.types';
5
6
  import type { WhiteLabelResultPayload } from '../../../modules/white-label/types/event/resultEventPayload.types';
6
- export type ResultEventPayload = MockupGenerationResultPayload | CatalogResultPayload | ProductPublishResultPayload | EdmResultPayload | WhiteLabelResultPayload;
7
+ export type ResultEventPayload = MockupGenerationResultPayload | CatalogResultPayload | ProductPublishResultPayload | EdmResultPayload | EmbedStudioResultPayload | WhiteLabelResultPayload;
7
8
  export type HandledResponse<T, K extends Error> = {
8
9
  data: T;
9
10
  error: null;
@@ -5,7 +5,9 @@ import { GetCatalogCategoriesResultPayload, GetCatalogProductsByIdsPayload, GetC
5
5
  import { NotificationEventPayload } from '../../types/event/notification/notificationEventPayload.types';
6
6
  import { DeleteProductsPayload, DeleteProductResultPayload, GetProductPublishPayload, GetSavedProductsPayload, GetSavedProductsResultPayload, ProductPublishData } from '../../modules/product-publish/types';
7
7
  import { OnDesignStatusEventPayload, OnErrorEventPayload, OnFilePickerRequestedEventPayload, OnPricingStatusUpdateEventPayload, OnStepStatusUpdateEventPayload } from '../../modules/edm/types/event/broadcastEventPayload.types';
8
+ import { OnDesignStatusEventPayload as EmbedStudioOnDesignStatusEventPayload, OnErrorEventPayload as EmbedStudioOnErrorEventPayload } from '../../modules/embed-studio/types/event/broadcastEventPayload.types';
8
9
  import { AddImagePayload, AddImageResultPayload, InitializeEdmPayload, NavigateStepPayload, NavigateStepResultPayload, SaveDesignResultPayload, SetStylePayload, SetStyleResultPayload } from '../../modules/edm/types';
10
+ import { InitializeEmbedStudioPayload, SaveDesignResultPayload as EmbedStudioSaveDesignResultPayload } from '../../modules/embed-studio/types';
9
11
  import { InitializeWhiteLabelPayload, GoToViewResultPayload, GoToViewPayload } from '../../modules/white-label/types';
10
12
  import { OnShoppingCartUpdateEventPayload } from '../../modules/white-label/types/event/broadcastEventPayload.types';
11
13
  /** This file ensures that Iframe and SDK has the same source of truth for return values */
@@ -35,6 +37,10 @@ export interface IEdmModule {
35
37
  setStyle(payload: SetStylePayload): SetStyleResultPayload;
36
38
  navigateStep(payload: NavigateStepPayload): NavigateStepResultPayload;
37
39
  }
40
+ export interface IEmbedStudioModule {
41
+ setup(config?: InitializeEmbedStudioPayload): NotificationEventPayload | void;
42
+ saveDesign(): EmbedStudioSaveDesignResultPayload;
43
+ }
38
44
  export interface IEdmBroadcastModule {
39
45
  onDesignStatusUpdate(event: OnDesignStatusEventPayload): void;
40
46
  onFilePickerRequested(event: OnFilePickerRequestedEventPayload): void;
@@ -42,6 +48,10 @@ export interface IEdmBroadcastModule {
42
48
  onStepStatusUpdate(event: OnStepStatusUpdateEventPayload): void;
43
49
  onErrorUpdate(event: OnErrorEventPayload): void;
44
50
  }
51
+ export interface IEmbedStudioBroadcastModule {
52
+ onDesignStatusUpdate(event: EmbedStudioOnDesignStatusEventPayload): void;
53
+ onErrorUpdate(event: EmbedStudioOnErrorEventPayload): void;
54
+ }
45
55
  export interface IWhiteLabelModule {
46
56
  setup(config: InitializeWhiteLabelPayload): NotificationEventPayload | void;
47
57
  goToView(event: GoToViewPayload): GoToViewResultPayload;
@@ -1 +1 @@
1
- export declare const VERSION: "2.5.21";
1
+ export declare const VERSION: "2.6.0";
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // AUTO-GENERATED
5
- exports.VERSION = '2.5.21';
5
+ exports.VERSION = '2.6.0';
@@ -8,6 +8,7 @@ export declare const SOURCES: {
8
8
  readonly HOST: "Host";
9
9
  readonly SDK: "SDK";
10
10
  readonly EDM: "EDM";
11
+ readonly EMBED_STUDIO: "EmbedStudio";
11
12
  readonly WHITE_LABEL: "WhiteLabel";
12
13
  };
13
14
  export interface MessageLoggerState {
@@ -8,6 +8,7 @@ export const SOURCES = {
8
8
  HOST: 'Host',
9
9
  SDK: 'SDK',
10
10
  EDM: 'EDM',
11
+ EMBED_STUDIO: 'EmbedStudio',
11
12
  WHITE_LABEL: 'WhiteLabel',
12
13
  };
13
14
  export const messageLoggerState = {
@@ -29,6 +30,7 @@ function getSourceStyle(source) {
29
30
  font-weight: bold;
30
31
  `;
31
32
  case SOURCES.EDM:
33
+ case SOURCES.EMBED_STUDIO:
32
34
  case SOURCES.SDK:
33
35
  case SOURCES.WHITE_LABEL:
34
36
  return `
@@ -1,5 +1,6 @@
1
1
  export { Embed } from './services/embed';
2
2
  export { EDM } from './services/edm';
3
+ export { EmbedStudio } from './services/embedStudio';
3
4
  export { WhiteLabel } from './services/whiteLabel';
4
5
  export * from './types/event/event.types';
5
6
  export * from './types/event/eventPayload.types';
@@ -16,6 +17,7 @@ export * as MockupGenerationModule from './modules/mockup-generation/types';
16
17
  export * as ProductPublishModule from './modules/product-publish/types';
17
18
  export * as SdkModule from './modules/sdk/types';
18
19
  export * as EdmModule from './modules/edm/types';
20
+ export * as EmbedStudioModule from './modules/embed-studio/types';
19
21
  export * as WhiteLabelModule from './modules/white-label/types';
20
22
  export { ALL_EVENTS } from './modules/events';
21
23
  export { MODULE_NAMES } from './modules/modules';
package/dist/esm/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { Embed } from './services/embed';
2
2
  export { EDM } from './services/edm';
3
+ export { EmbedStudio } from './services/embedStudio';
3
4
  export { WhiteLabel } from './services/whiteLabel';
4
5
  /* EXPORTS */
5
6
  // TODO: properly foldered exports?
@@ -20,6 +21,7 @@ export * as MockupGenerationModule from './modules/mockup-generation/types';
20
21
  export * as ProductPublishModule from './modules/product-publish/types';
21
22
  export * as SdkModule from './modules/sdk/types';
22
23
  export * as EdmModule from './modules/edm/types';
24
+ export * as EmbedStudioModule from './modules/embed-studio/types';
23
25
  export * as WhiteLabelModule from './modules/white-label/types';
24
26
  // Constants
25
27
  export { ALL_EVENTS } from './modules/events';
@@ -4,7 +4,7 @@ import { ResultEventPayload } from '../types/event/result/resultEventPayload.typ
4
4
  import { NotificationEventPayload } from '../types/event/notification/notificationEventPayload.types';
5
5
  import type { MODULE_NAMES } from '../modules/moduleNames';
6
6
  export declare abstract class BaseModule {
7
- protected moduleType: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.WHITE_LABEL;
8
- constructor(moduleType: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.WHITE_LABEL);
7
+ protected moduleType: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.EMBED_STUDIO | typeof MODULE_NAMES.WHITE_LABEL;
8
+ constructor(moduleType: typeof MODULE_NAMES.SDK | typeof MODULE_NAMES.EDM | typeof MODULE_NAMES.EMBED_STUDIO | typeof MODULE_NAMES.WHITE_LABEL);
9
9
  protected sendRequest<T extends ResultEventPayload | NotificationEventPayload>(eventName: ActionEventName, eventPayload?: ActionEventPayload): Promise<T>;
10
10
  }
@@ -0,0 +1,6 @@
1
+ import { BroadcastEventPayload } from '../../../modules/embed-studio/types/event/broadcastEventPayload.types';
2
+ import { BaseBroadcastEventHandler } from '../../../types/event/broadcast/baseBroadcastEventHandler';
3
+ export declare abstract class BaseEmbedStudioBroadcastEvent implements BaseBroadcastEventHandler {
4
+ abstract handle(event: BroadcastEventPayload): void;
5
+ get broadcastHandler(): import("../embedStudioBroadcastModule").EmbedStudioBroadcastModule;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { EmbedStudio } from '../../../services/embedStudio';
2
+ export class BaseEmbedStudioBroadcastEvent {
3
+ get broadcastHandler() {
4
+ return EmbedStudio.getBroadCastEventHandler();
5
+ }
6
+ }
@@ -0,0 +1,5 @@
1
+ import { OnDesignStatusEventPayload } from '../../../modules/embed-studio/types/event/broadcastEventPayload.types';
2
+ import { BaseEmbedStudioBroadcastEvent } from '../../../modules/embed-studio/broadcastEvents/baseEmbedStudioBroadcastEvent';
3
+ export declare class OnDesignStatusUpdate extends BaseEmbedStudioBroadcastEvent {
4
+ handle(event: OnDesignStatusEventPayload): void;
5
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseEmbedStudioBroadcastEvent } from '../../../modules/embed-studio/broadcastEvents/baseEmbedStudioBroadcastEvent';
2
+ export class OnDesignStatusUpdate extends BaseEmbedStudioBroadcastEvent {
3
+ handle(event) {
4
+ this.broadcastHandler.onDesignStatusUpdate(event);
5
+ }
6
+ }
@@ -0,0 +1,5 @@
1
+ import { OnErrorEventPayload } from '../../../modules/embed-studio/types/event/broadcastEventPayload.types';
2
+ import { BaseEmbedStudioBroadcastEvent } from '../../../modules/embed-studio/broadcastEvents/baseEmbedStudioBroadcastEvent';
3
+ export declare class OnErrorUpdate extends BaseEmbedStudioBroadcastEvent {
4
+ handle(event: OnErrorEventPayload): void;
5
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseEmbedStudioBroadcastEvent } from '../../../modules/embed-studio/broadcastEvents/baseEmbedStudioBroadcastEvent';
2
+ export class OnErrorUpdate extends BaseEmbedStudioBroadcastEvent {
3
+ handle(event) {
4
+ this.broadcastHandler.onErrorUpdate(event);
5
+ }
6
+ }
@@ -0,0 +1,9 @@
1
+ import { IEmbedStudioBroadcastModule } from '../../types/module/module.types';
2
+ import { EmbedStudioBroadcastListeners } from '../../modules/embed-studio/types/event/broadcastEvent.types';
3
+ import { OnDesignStatusEventPayload, OnErrorEventPayload } from '../../modules/embed-studio/types/event/broadcastEventPayload.types';
4
+ export declare class EmbedStudioBroadcastModule implements IEmbedStudioBroadcastModule {
5
+ protected listeners?: Partial<EmbedStudioBroadcastListeners>;
6
+ constructor(listeners?: Partial<EmbedStudioBroadcastListeners>);
7
+ onDesignStatusUpdate(event: OnDesignStatusEventPayload): void;
8
+ onErrorUpdate(event: OnErrorEventPayload): void;
9
+ }
@@ -0,0 +1,16 @@
1
+ export class EmbedStudioBroadcastModule {
2
+ listeners;
3
+ constructor(listeners) {
4
+ this.listeners = listeners;
5
+ }
6
+ onDesignStatusUpdate(event) {
7
+ if (this.listeners?.onDesignStatusUpdate) {
8
+ this.listeners.onDesignStatusUpdate(event);
9
+ }
10
+ }
11
+ onErrorUpdate(event) {
12
+ if (this.listeners?.onError) {
13
+ this.listeners.onError(event);
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,10 @@
1
+ import { IEmbedStudioModule } from '../../types/module/module.types';
2
+ import { BaseModule } from '../../modules/baseModule';
3
+ import { InitializeEmbedStudioPayload, SaveDesignResultPayload } from './types';
4
+ import { NotificationEventPayload } from '../../types/event/notification/notificationEventPayload.types';
5
+ import { WithHandledResponses } from '../../helpers/typeHelper.types';
6
+ export declare class EmbedStudioModule extends BaseModule implements WithHandledResponses<IEmbedStudioModule> {
7
+ constructor();
8
+ setup(payload?: InitializeEmbedStudioPayload): Promise<NotificationEventPayload>;
9
+ saveDesign(): Promise<import("../..").HandledResponse<SaveDesignResultPayload, Error>>;
10
+ }
@@ -0,0 +1,17 @@
1
+ import { BaseModule } from '../../modules/baseModule';
2
+ import { EVENTS_ACTION } from './events';
3
+ import { handleResponse } from '../../helpers/responseHandler';
4
+ import { MODULE_NAMES } from '../../modules/modules';
5
+ export class EmbedStudioModule extends BaseModule {
6
+ constructor() {
7
+ super(MODULE_NAMES.EMBED_STUDIO);
8
+ }
9
+ // @ts-expect-error setup does not return data
10
+ async setup(payload) {
11
+ return await this.sendRequest(EVENTS_ACTION.INITIALIZE_EMBED_STUDIO, payload);
12
+ }
13
+ async saveDesign() {
14
+ const response = await this.sendRequest(EVENTS_ACTION.SAVE_DESIGN, {}).catch((e) => e);
15
+ return handleResponse(response, 'Failed to save design');
16
+ }
17
+ }
@@ -0,0 +1,26 @@
1
+ export declare const EVENTS_ACTION: {
2
+ readonly INITIALIZE_EMBED_STUDIO: "actionInitializeEdm";
3
+ readonly SAVE_DESIGN: "actionSaveDesign";
4
+ readonly SET_STORE_CONTEXT: "actionSetStoreContext";
5
+ };
6
+ export declare const EVENTS_NOTIFICATION: {
7
+ readonly EMBED_STUDIO_INITIALIZATION_SUCCESS: "notificationEdmInitializationSuccess";
8
+ readonly SAVE_DESIGN_FAILURE: "actionSaveDesignFailure";
9
+ };
10
+ export declare const EVENTS_RESULT: {
11
+ readonly SAVE_DESIGN_RESULT: "resultSaveDesign";
12
+ };
13
+ export declare const EVENT_BROADCAST: {
14
+ readonly ON_DESIGN_STATUS_UPDATE: "onDesignStatusUpdate";
15
+ readonly ON_INTERNAL_ERROR: "onError";
16
+ };
17
+ export declare const EVENTS: {
18
+ readonly ON_DESIGN_STATUS_UPDATE: "onDesignStatusUpdate";
19
+ readonly ON_INTERNAL_ERROR: "onError";
20
+ readonly SAVE_DESIGN_RESULT: "resultSaveDesign";
21
+ readonly EMBED_STUDIO_INITIALIZATION_SUCCESS: "notificationEdmInitializationSuccess";
22
+ readonly SAVE_DESIGN_FAILURE: "actionSaveDesignFailure";
23
+ readonly INITIALIZE_EMBED_STUDIO: "actionInitializeEdm";
24
+ readonly SAVE_DESIGN: "actionSaveDesign";
25
+ readonly SET_STORE_CONTEXT: "actionSetStoreContext";
26
+ };
@@ -0,0 +1,22 @@
1
+ export const EVENTS_ACTION = {
2
+ INITIALIZE_EMBED_STUDIO: 'actionInitializeEdm',
3
+ SAVE_DESIGN: 'actionSaveDesign',
4
+ SET_STORE_CONTEXT: 'actionSetStoreContext',
5
+ };
6
+ export const EVENTS_NOTIFICATION = {
7
+ EMBED_STUDIO_INITIALIZATION_SUCCESS: 'notificationEdmInitializationSuccess',
8
+ SAVE_DESIGN_FAILURE: 'actionSaveDesignFailure',
9
+ };
10
+ export const EVENTS_RESULT = {
11
+ SAVE_DESIGN_RESULT: 'resultSaveDesign',
12
+ };
13
+ export const EVENT_BROADCAST = {
14
+ ON_DESIGN_STATUS_UPDATE: 'onDesignStatusUpdate',
15
+ ON_INTERNAL_ERROR: 'onError',
16
+ };
17
+ export const EVENTS = {
18
+ ...EVENTS_ACTION,
19
+ ...EVENTS_NOTIFICATION,
20
+ ...EVENTS_RESULT,
21
+ ...EVENT_BROADCAST,
22
+ };
@@ -0,0 +1,46 @@
1
+ export interface EmbedStudioConfig {
2
+ }
3
+ export type EmbedStudioParams = ({
4
+ element: HTMLElement;
5
+ elementId?: null;
6
+ } & EmbedStudioCommonParams) | ({
7
+ elementId: string;
8
+ element?: null;
9
+ } & EmbedStudioCommonParams);
10
+ export interface EmbedStudioCommonParams {
11
+ nonce: string;
12
+ externalProductId: string;
13
+ iframeClassName?: string;
14
+ origin?: string;
15
+ initProduct?: {
16
+ productId: number;
17
+ printProviderId?: number;
18
+ technique?: string;
19
+ forceOrientation?: 'horizontal' | 'vertical' | string;
20
+ };
21
+ debug?: boolean;
22
+ }
23
+ export interface Message {
24
+ type: string;
25
+ message: string;
26
+ messageCode: string;
27
+ }
28
+ export interface FyulTemplate {
29
+ id: string;
30
+ external_product_id: string;
31
+ colors: string[];
32
+ sizes: string[];
33
+ technique: string;
34
+ }
35
+ export interface OnDesignStatusEvent {
36
+ designChanged: boolean;
37
+ designValid: boolean;
38
+ usedPlacements: string[];
39
+ selectedVariantIds: number[];
40
+ subTechnique: string;
41
+ errors: string[];
42
+ fatalErrors: Message[];
43
+ }
44
+ export interface OnErrorEvent {
45
+ error: string | Error;
46
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { EVENTS_ACTION } from '../../../../modules/embed-studio/events';
2
+ import { InitializeEmbedStudioPayload, SetStoreContextPayload } from '../../../../modules/embed-studio/types';
3
+ import { BaseActionEvent } from '../../../../types/event/action/actionEvent.types';
4
+ export type InitializeEmbedStudioAction = BaseActionEvent<typeof EVENTS_ACTION.INITIALIZE_EMBED_STUDIO, InitializeEmbedStudioPayload>;
5
+ export type SaveDesignAction = BaseActionEvent<typeof EVENTS_ACTION.SAVE_DESIGN, undefined>;
6
+ export type SetStoreContextAction = BaseActionEvent<typeof EVENTS_ACTION.SET_STORE_CONTEXT, SetStoreContextPayload>;
7
+ export type ActionEvent = InitializeEmbedStudioAction | SaveDesignAction | SetStoreContextAction;
@@ -0,0 +1,9 @@
1
+ import { EmbedStudioConfig, EmbedStudioParams } from '../../../../modules/embed-studio/types/data.types';
2
+ export type InitializeEmbedStudioPayload = EmbedStudioConfig & EmbedStudioParams & InitializeEmbedStudioPayloadWithVersion;
3
+ export interface InitializeEmbedStudioPayloadWithVersion {
4
+ clientVersion: string;
5
+ }
6
+ export interface SetStoreContextPayload {
7
+ storeId: string;
8
+ }
9
+ export type ActionEventPayload = InitializeEmbedStudioPayloadWithVersion | SetStoreContextPayload;
@@ -0,0 +1,9 @@
1
+ import { EVENT_BROADCAST } from '../../../../modules/embed-studio/events';
2
+ import { BaseBroadcastEvent } from '../../../../types/event/broadcast/broadcastEvent.types';
3
+ import { OnDesignStatusEventPayload, OnErrorEventPayload } from '../../../../modules/embed-studio/types/event/broadcastEventPayload.types';
4
+ export type OnDesignStatusUpdateBroadcast = BaseBroadcastEvent<typeof EVENT_BROADCAST.ON_DESIGN_STATUS_UPDATE, OnDesignStatusEventPayload>;
5
+ export type OnErrorUpdateBroadcast = BaseBroadcastEvent<typeof EVENT_BROADCAST.ON_INTERNAL_ERROR, OnErrorEventPayload>;
6
+ export type EmbedStudioBroadcastEvent = OnDesignStatusUpdateBroadcast | OnErrorUpdateBroadcast;
7
+ export type EmbedStudioBroadcastListeners = {
8
+ [K in EmbedStudioBroadcastEvent as K['name']]: (event: Exclude<K['payload'], undefined>) => void;
9
+ };
@@ -0,0 +1,4 @@
1
+ import { OnDesignStatusEvent, OnErrorEvent } from '../../../../modules/embed-studio/types/data.types';
2
+ export type OnDesignStatusEventPayload = OnDesignStatusEvent;
3
+ export type OnErrorEventPayload = OnErrorEvent;
4
+ export type BroadcastEventPayload = OnDesignStatusEventPayload | OnErrorEventPayload;
@@ -0,0 +1,5 @@
1
+ import { BaseResultEvent } from '../../../../types/event/result/resultEvent.types';
2
+ import type { EVENTS_RESULT } from '../../../../modules/embed-studio/events';
3
+ import { SaveDesignResultPayload } from '../../../../modules/embed-studio/types/event/resultEventPayload.types';
4
+ export type SaveDesignResultEvent = BaseResultEvent<typeof EVENTS_RESULT.SAVE_DESIGN_RESULT, SaveDesignResultPayload>;
5
+ export type ResultEvent = SaveDesignResultEvent;
@@ -0,0 +1,5 @@
1
+ import { FyulTemplate } from '../../../../modules/embed-studio/types/data.types';
2
+ export type SaveDesignResultPayload = {
3
+ template: FyulTemplate;
4
+ };
5
+ export type EmbedStudioResultPayload = SaveDesignResultPayload;
@@ -0,0 +1,8 @@
1
+ export * from '../../../modules/embed-studio/types/data.types';
2
+ export * from '../../../modules/embed-studio/types/event/actionEvent.types';
3
+ export * from '../../../modules/embed-studio/types/event/actionEventPayload.types';
4
+ export * from '../../../modules/embed-studio/types/event/resultEvent.types';
5
+ export * from '../../../modules/embed-studio/types/event/resultEventPayload.types';
6
+ export * from '../../../modules/embed-studio/types/event/broadcastEventPayload.types';
7
+ export * from '../../../modules/embed-studio/types/event/broadcastEvent.types';
8
+ export * from '../../../modules/embed-studio/events';
@@ -0,0 +1,11 @@
1
+ // Data types
2
+ export * from '../../../modules/embed-studio/types/data.types';
3
+ // Event types
4
+ export * from '../../../modules/embed-studio/types/event/actionEvent.types';
5
+ export * from '../../../modules/embed-studio/types/event/actionEventPayload.types';
6
+ export * from '../../../modules/embed-studio/types/event/resultEvent.types';
7
+ export * from '../../../modules/embed-studio/types/event/resultEventPayload.types';
8
+ export * from '../../../modules/embed-studio/types/event/broadcastEventPayload.types';
9
+ export * from '../../../modules/embed-studio/types/event/broadcastEvent.types';
10
+ // Event names
11
+ export * from '../../../modules/embed-studio/events';