@pexelize/react-editor 2.1.4 → 2.1.6

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.
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import React from 'react';
2
2
 
3
3
  /**
4
4
  * Pexelize React Editor Types
5
+ * Minimal type definitions for the React wrapper
5
6
  */
6
7
  type EditorMode = "email" | "web" | "popup" | "document";
7
8
  type ThemeMode = "light" | "dark" | "auto" | "pexelize-light" | "pexelize-dark";
@@ -95,64 +96,10 @@ interface SpecialLinkGroup {
95
96
  name: string;
96
97
  specialLinks: SpecialLink[];
97
98
  }
98
- interface ModulesTabConfig {
99
- /** Rows accordion configuration */
100
- rows?: {
101
- visible?: boolean;
102
- defaultExpanded?: boolean;
103
- };
104
- /** Saved modules accordion configuration */
105
- savedModules?: {
106
- visible?: boolean;
107
- defaultExpanded?: boolean;
108
- /** Title for the saved modules accordion (default: "Saved Modules") */
109
- title?: string;
110
- };
111
- /** Custom tabs configuration */
112
- customTabs?: Array<{
113
- id: string;
114
- title: string;
115
- icon?: string;
116
- defaultExpanded?: boolean;
117
- items?: Array<{
118
- id: string;
119
- name: string;
120
- thumbnail?: string;
121
- data?: Record<string, unknown>;
122
- }>;
123
- }>;
124
- }
125
- interface StylesTabConfig {
126
- general?: {
127
- visible?: boolean;
128
- defaultExpanded?: boolean;
129
- };
130
- fonts?: {
131
- visible?: boolean;
132
- defaultExpanded?: boolean;
133
- };
134
- contentAlignment?: {
135
- visible?: boolean;
136
- defaultExpanded?: boolean;
137
- };
138
- backgroundImage?: {
139
- visible?: boolean;
140
- defaultExpanded?: boolean;
141
- };
142
- linkStyles?: {
143
- visible?: boolean;
144
- defaultExpanded?: boolean;
145
- };
146
- preheader?: {
147
- visible?: boolean;
148
- defaultExpanded?: boolean;
149
- };
150
- }
151
99
  interface AppearanceConfig {
152
100
  theme?: ThemeMode | object;
153
101
  accentColor?: string;
154
102
  sidePanel?: {
155
- /** Main tab visibility */
156
103
  tabs?: {
157
104
  content?: {
158
105
  visible?: boolean;
@@ -164,15 +111,8 @@ interface AppearanceConfig {
164
111
  visible?: boolean;
165
112
  };
166
113
  };
167
- /** Modules tab configuration */
168
- modulesTab?: ModulesTabConfig;
169
- /** Styles tab configuration */
170
- stylesTab?: StylesTabConfig;
171
- /** Panel position: 'left' or 'right' (default: 'right') */
172
114
  dock?: "left" | "right";
173
- /** Panel width in pixels (default: 380) */
174
115
  width?: number;
175
- /** Whether panel can be collapsed (default: false) */
176
116
  collapsible?: boolean;
177
117
  };
178
118
  }
@@ -321,7 +261,6 @@ interface PexelizeSDK {
321
261
  declare global {
322
262
  interface Window {
323
263
  pexelize?: PexelizeSDK;
324
- createEditor?: () => PexelizeSDK;
325
264
  }
326
265
  }
327
266
  interface PexelizeEditorRef {
package/dist/index.esm.js CHANGED
@@ -1,30 +1,43 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { forwardRef, useRef, useEffect, useState, useCallback, useImperativeHandle } from 'react';
2
+ import { forwardRef, useRef, useState, useMemo, useEffect, useImperativeHandle } from 'react';
3
3
 
4
4
  const SDK_CDN_URL = "https://sdk.pexelize.com/latest/pexelize-sdk.min.js";
5
5
  let sdkLoadPromise = null;
6
- /**
7
- * Load the SDK script (only once across all components).
8
- * After loading, window.createEditor will be available.
9
- */
10
- function loadSDKScript() {
6
+ function loadSDK() {
11
7
  if (sdkLoadPromise)
12
8
  return sdkLoadPromise;
13
- // Check if already loaded
14
- if (typeof window !== "undefined" && window.createEditor) {
15
- return Promise.resolve();
9
+ if (typeof window !== "undefined" && window.pexelize) {
10
+ // Return the SDK module with createEditor function
11
+ return Promise.resolve({
12
+ pexelize: window.pexelize,
13
+ createEditor: (config) => {
14
+ const instance = new window.pexelize.constructor();
15
+ instance.init(config);
16
+ return instance;
17
+ },
18
+ PexelizeSDK: window.pexelize.constructor,
19
+ });
16
20
  }
17
21
  sdkLoadPromise = new Promise((resolve, reject) => {
18
22
  const script = document.createElement("script");
19
23
  script.src = SDK_CDN_URL;
20
24
  script.async = true;
21
25
  script.onload = () => {
22
- if (window.createEditor) {
23
- resolve();
26
+ if (window.pexelize) {
27
+ // Resolve with SDK module interface
28
+ resolve({
29
+ pexelize: window.pexelize,
30
+ createEditor: (config) => {
31
+ const instance = new window.pexelize.constructor();
32
+ instance.init(config);
33
+ return instance;
34
+ },
35
+ PexelizeSDK: window.pexelize.constructor,
36
+ });
24
37
  }
25
38
  else {
26
39
  sdkLoadPromise = null;
27
- reject(new Error("Failed to load Pexelize SDK - createEditor not found"));
40
+ reject(new Error("Failed to load Pexelize SDK"));
28
41
  }
29
42
  };
30
43
  script.onerror = () => {
@@ -35,22 +48,15 @@ function loadSDKScript() {
35
48
  });
36
49
  return sdkLoadPromise;
37
50
  }
38
- /**
39
- * Create a new editor instance.
40
- * Each component gets its own independent instance for multiple editors support.
41
- */
42
- function createEditorInstance() {
43
- if (!window.createEditor) {
44
- throw new Error("Pexelize SDK not loaded - call loadSDKScript first");
45
- }
46
- return window.createEditor();
47
- }
48
51
  const PexelizeEditor = forwardRef((props, ref) => {
49
52
  const { editorId, apiKey, templateId, design, editorMode, contentType, ai, height, options = {}, className, style, minHeight = "600px", onReady, onLoad, onChange, onError, } = props;
50
53
  const containerRef = useRef(null);
51
- const editorInstanceRef = useRef(null);
52
- const containerId = useRef(`pexelize-editor-${Math.random().toString(36).substr(2, 9)}`);
53
- const eventUnsubscribersRef = useRef([]);
54
+ const [editor, setEditor] = useState(null);
55
+ const [hasLoadedSDK, setHasLoadedSDK] = useState(false);
56
+ const [isEditorReady, setIsEditorReady] = useState(false);
57
+ // Stable container ID using useMemo
58
+ const containerId = useMemo(() => `pexelize-editor-${Math.random().toString(36).substr(2, 9)}`, []);
59
+ // Refs for callbacks to avoid dependency issues
54
60
  const onReadyRef = useRef(onReady);
55
61
  const onLoadRef = useRef(onLoad);
56
62
  const onChangeRef = useRef(onChange);
@@ -67,83 +73,108 @@ const PexelizeEditor = forwardRef((props, ref) => {
67
73
  useEffect(() => {
68
74
  onErrorRef.current = onError;
69
75
  }, [onError]);
70
- const [isEditorReady, setIsEditorReady] = useState(false);
71
- const handleReady = useCallback(() => {
72
- setIsEditorReady(true);
73
- if (editorInstanceRef.current) {
74
- onReadyRef.current?.(editorInstanceRef.current);
75
- }
76
- }, []);
76
+ // Build options object (memoized for comparison)
77
+ const editorOptions = useMemo(() => {
78
+ const editorConfig = contentType === "module"
79
+ ? { ...options.editor, contentType, minRows: 1, maxRows: 1 }
80
+ : options.editor;
81
+ return {
82
+ containerId,
83
+ editorId,
84
+ apiKey,
85
+ ...options,
86
+ ...(templateId !== undefined && { templateId }),
87
+ ...(design !== undefined && { design }),
88
+ ...(editorMode !== undefined && { editorMode }),
89
+ ...(ai !== undefined && { ai }),
90
+ ...(editorConfig && { editor: editorConfig }),
91
+ };
92
+ }, [
93
+ containerId,
94
+ editorId,
95
+ apiKey,
96
+ templateId,
97
+ design,
98
+ editorMode,
99
+ ai,
100
+ contentType,
101
+ options,
102
+ ]);
103
+ // 1. Cleanup effect - runs only on final unmount
104
+ useEffect(() => {
105
+ return () => {
106
+ editor?.destroy();
107
+ };
108
+ }, []); // Empty deps - only runs on unmount
109
+ // 2. SDK loading effect
77
110
  useEffect(() => {
78
- if (!containerRef.current)
111
+ setHasLoadedSDK(false);
112
+ loadSDK()
113
+ .then(() => setHasLoadedSDK(true))
114
+ .catch((err) => onErrorRef.current?.(err));
115
+ }, []); // Load SDK once
116
+ // 3. Editor creation effect - ONLY on core props change
117
+ useEffect(() => {
118
+ if (!hasLoadedSDK || !containerRef.current)
79
119
  return;
80
- let mounted = true;
120
+ // KEY: Destroy previous editor BEFORE creating new one
121
+ editor?.destroy();
81
122
  const initEditor = async () => {
82
123
  try {
83
- // Load SDK script (only once across all components)
84
- await loadSDKScript();
85
- if (!mounted)
86
- return;
87
- // Create NEW instance for THIS component (supports multiple editors)
88
- const editor = createEditorInstance();
89
- editorInstanceRef.current = editor;
90
- const editorConfig = contentType === "module"
91
- ? { ...options.editor, contentType, minRows: 1, maxRows: 1 }
92
- : options.editor;
93
- const config = {
94
- containerId: containerId.current,
95
- editorId,
96
- apiKey,
97
- ...options,
98
- ...(templateId !== undefined && { templateId }),
99
- ...(design !== undefined && { design }),
100
- ...(editorMode !== undefined && { editorMode }),
101
- ...(ai !== undefined && { ai }),
102
- ...(editorConfig && { editor: editorConfig }),
124
+ // Import createEditor for multiple instance support
125
+ const { createEditor } = await loadSDK();
126
+ // Create a new editor instance (not singleton)
127
+ const editorInstance = createEditor(editorOptions);
128
+ setEditor(editorInstance);
129
+ // Set up event listeners
130
+ const unsubscribeReady = editorInstance.addEventListener("editor:ready", () => {
131
+ setIsEditorReady(true);
132
+ onReadyRef.current?.(editorInstance);
133
+ });
134
+ const unsubscribeLoad = editorInstance.addEventListener("design:loaded", () => {
135
+ onLoadRef.current?.();
136
+ });
137
+ const unsubscribeChange = editorInstance.addEventListener("design:updated", (data) => {
138
+ onChangeRef.current?.(data);
139
+ });
140
+ // Cleanup listeners (but NOT the editor - that's handled in effect 1)
141
+ return () => {
142
+ unsubscribeReady();
143
+ unsubscribeLoad();
144
+ unsubscribeChange();
103
145
  };
104
- // Initialize THIS instance
105
- editor.init(config);
106
- // Subscribe to events on THIS instance
107
- const unsubscribeReady = editor.addEventListener("editor:ready", handleReady);
108
- eventUnsubscribersRef.current.push(unsubscribeReady);
109
- const unsubscribeLoad = editor.addEventListener("design:loaded", () => onLoadRef.current?.());
110
- eventUnsubscribersRef.current.push(unsubscribeLoad);
111
- const unsubscribeChange = editor.addEventListener("design:updated", (data) => onChangeRef.current?.(data));
112
- eventUnsubscribersRef.current.push(unsubscribeChange);
113
146
  }
114
147
  catch (err) {
115
- if (!mounted)
116
- return;
117
148
  const error = err instanceof Error ? err : new Error(String(err));
118
149
  onErrorRef.current?.(error);
150
+ // Return empty cleanup function on error
151
+ return () => { };
119
152
  }
120
153
  };
121
154
  initEditor();
122
- return () => {
123
- mounted = false;
124
- eventUnsubscribersRef.current.forEach((unsub) => {
125
- try {
126
- unsub();
127
- }
128
- catch {
129
- // ignore
130
- }
131
- });
132
- eventUnsubscribersRef.current = [];
133
- try {
134
- editorInstanceRef.current?.destroy();
135
- }
136
- catch {
137
- // ignore
138
- }
139
- editorInstanceRef.current = null;
140
- setIsEditorReady(false);
141
- };
142
- }, [editorId, apiKey, handleReady]);
155
+ }, [
156
+ // Only re-init on core props that MUST trigger re-initialization
157
+ containerId,
158
+ editorId,
159
+ apiKey,
160
+ templateId,
161
+ hasLoadedSDK,
162
+ ]);
163
+ // 4. Update options effect - update without re-init
164
+ useEffect(() => {
165
+ if (!editor || !isEditorReady)
166
+ return;
167
+ // Update modules without re-initialization
168
+ if (editorOptions.modules) {
169
+ // Cast to any to access setModules (it exists but type def may be outdated)
170
+ editor.setModules(editorOptions.modules);
171
+ }
172
+ // Note: Most options can't be updated after init, only modules can be updated
173
+ }, [editor, isEditorReady, editorOptions.modules]);
143
174
  useImperativeHandle(ref, () => ({
144
- editor: editorInstanceRef.current,
175
+ editor: editor,
145
176
  isReady: () => isEditorReady,
146
- }), [isEditorReady]);
177
+ }), [editor, isEditorReady]);
147
178
  const effectiveHeight = height ?? minHeight;
148
179
  const containerStyle = {
149
180
  width: "100%",
@@ -152,7 +183,7 @@ const PexelizeEditor = forwardRef((props, ref) => {
152
183
  : effectiveHeight,
153
184
  ...style,
154
185
  };
155
- return (jsx("div", { className: className, style: containerStyle, children: jsx("div", { id: containerId.current, ref: containerRef, style: { width: "100%", height: "100%" } }) }));
186
+ return (jsx("div", { className: className, style: containerStyle, children: jsx("div", { id: containerId, ref: containerRef, style: { width: "100%", height: "100%" } }) }));
156
187
  });
157
188
  PexelizeEditor.displayName = "PexelizeEditor";
158
189
  function usePexelizeEditor() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/index.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;AA8DA,MAAM,WAAW,GAAG,qDAAqD;AAEzE,IAAI,cAAc,GAAyB,IAAI;AAE/C;;;AAGG;AACH,SAAS,aAAa,GAAA;AACpB,IAAA,IAAI,cAAc;AAAE,QAAA,OAAO,cAAc;;IAGzC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE;AACxD,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;IAC1B;IAEA,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,QAAA,MAAM,CAAC,GAAG,GAAG,WAAW;AACxB,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AAEnB,QAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,YAAA,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,gBAAA,OAAO,EAAE;YACX;iBAAO;gBACL,cAAc,GAAG,IAAI;AACrB,gBAAA,MAAM,CACJ,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAClE;YACH;AACF,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,OAAO,GAAG,MAAK;YACpB,cAAc,GAAG,IAAI;AACrB,YAAA,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAClD,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACnC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,cAAc;AACvB;AAEA;;;AAGG;AACH,SAAS,oBAAoB,GAAA;AAC3B,IAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AACxB,QAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;IACvE;AACA,IAAA,OAAO,MAAM,CAAC,YAAY,EAAE;AAC9B;AA4BO,MAAM,cAAc,GAAG,UAAU,CAGtC,CAAC,KAAK,EAAE,GAAG,KAAI;AACf,IAAA,MAAM,EACJ,QAAQ,EACR,MAAM,EACN,UAAU,EACV,MAAM,EACN,UAAU,EACV,WAAW,EACX,EAAE,EACF,MAAM,EACN,OAAO,GAAG,EAAE,EACZ,SAAS,EACT,KAAK,EACL,SAAS,GAAG,OAAO,EACnB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,GACR,GAAG,KAAK;AAET,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC;AACjD,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAqB,IAAI,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CACxB,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,CAC7D;AACD,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAoB,EAAE,CAAC;AAE3D,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AAClC,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;IAElC,SAAS,CAAC,MAAK;AACb,QAAA,UAAU,CAAC,OAAO,GAAG,OAAO;AAC9B,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACb,SAAS,CAAC,MAAK;AACb,QAAA,SAAS,CAAC,OAAO,GAAG,MAAM;AAC5B,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACZ,SAAS,CAAC,MAAK;AACb,QAAA,WAAW,CAAC,OAAO,GAAG,QAAQ;AAChC,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACd,SAAS,CAAC,MAAK;AACb,QAAA,UAAU,CAAC,OAAO,GAAG,OAAO;AAC9B,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEb,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEzD,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAK;QACnC,gBAAgB,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;YAC7B,UAAU,CAAC,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC;QACjD;IACF,CAAC,EAAE,EAAE,CAAC;IAEN,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE;QAE3B,IAAI,OAAO,GAAG,IAAI;AAElB,QAAA,MAAM,UAAU,GAAG,YAAW;AAC5B,YAAA,IAAI;;gBAEF,MAAM,aAAa,EAAE;AACrB,gBAAA,IAAI,CAAC,OAAO;oBAAE;;AAGd,gBAAA,MAAM,MAAM,GAAG,oBAAoB,EAAE;AACrC,gBAAA,iBAAiB,CAAC,OAAO,GAAG,MAAM;AAElC,gBAAA,MAAM,YAAY,GAChB,WAAW,KAAK;AACd,sBAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1D,sBAAE,OAAO,CAAC,MAAM;AAEpB,gBAAA,MAAM,MAAM,GAAG;oBACb,WAAW,EAAE,WAAW,CAAC,OAAO;oBAChC,QAAQ;oBACR,MAAM;AACN,oBAAA,GAAG,OAAO;oBACV,IAAI,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;oBAC/C,IAAI,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;oBACvC,IAAI,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;oBAC/C,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,EAAE,EAAE,CAAC;oBAC/B,IAAI,YAAY,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;iBAC5B;;AAGnB,gBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;gBAGnB,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAC9C,cAAc,EACd,WAAW,CACZ;AACD,gBAAA,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAEpD,gBAAA,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAC/D,SAAS,CAAC,OAAO,IAAI,CACtB;AACD,gBAAA,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;gBAEnD,MAAM,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAC/C,gBAAgB,EAChB,CAAC,IAA0C,KACzC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,CAC9B;AACD,gBAAA,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACvD;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO;oBAAE;gBACd,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjE,gBAAA,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC7B;AACF,QAAA,CAAC;AAED,QAAA,UAAU,EAAE;AAEZ,QAAA,OAAO,MAAK;YACV,OAAO,GAAG,KAAK;YACf,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC9C,gBAAA,IAAI;AACF,oBAAA,KAAK,EAAE;gBACT;AAAE,gBAAA,MAAM;;gBAER;AACF,YAAA,CAAC,CAAC;AACF,YAAA,qBAAqB,CAAC,OAAO,GAAG,EAAE;AAElC,YAAA,IAAI;AACF,gBAAA,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE;YACtC;AAAE,YAAA,MAAM;;YAER;AAEA,YAAA,iBAAiB,CAAC,OAAO,GAAG,IAAI;YAChC,gBAAgB,CAAC,KAAK,CAAC;AACzB,QAAA,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAEnC,IAAA,mBAAmB,CACjB,GAAG,EACH,OAAO;QACL,MAAM,EAAE,iBAAiB,CAAC,OAAO;AACjC,QAAA,OAAO,EAAE,MAAM,aAAa;AAC7B,KAAA,CAAC,EACF,CAAC,aAAa,CAAC,CAChB;AAED,IAAA,MAAM,eAAe,GAAG,MAAM,IAAI,SAAS;AAC3C,IAAA,MAAM,cAAc,GAAwB;AAC1C,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EACJ,OAAO,eAAe,KAAK;cACvB,CAAA,EAAG,eAAe,CAAA,EAAA;AACpB,cAAE,eAAe;AACrB,QAAA,GAAG,KAAK;KACT;AAED,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,YAC9CA,GAAA,CAAA,KAAA,EAAA,EACE,EAAE,EAAE,WAAW,CAAC,OAAO,EACvB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CACxC,EAAA,CACE;AAEV,CAAC;AAED,cAAc,CAAC,WAAW,GAAG,gBAAgB;SAE7B,iBAAiB,GAAA;AAC/B,IAAA,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC;IAC3C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAE7C,SAAS,CAAC,MAAK;QACb,MAAM,UAAU,GAAG,MAAK;YACtB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK;YAC7C,UAAU,CAAC,KAAK,CAAC;AACnB,QAAA,CAAC;AAED,QAAA,UAAU,EAAE;QACZ,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC;AAC7C,QAAA,OAAO,MAAM,aAAa,CAAC,QAAQ,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC;IAEN,OAAO;QACL,GAAG;AACH,QAAA,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI;QACnC,OAAO;KACR;AACH;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/index.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,28 +7,41 @@ var react = require('react');
7
7
 
8
8
  const SDK_CDN_URL = "https://sdk.pexelize.com/latest/pexelize-sdk.min.js";
9
9
  let sdkLoadPromise = null;
10
- /**
11
- * Load the SDK script (only once across all components).
12
- * After loading, window.createEditor will be available.
13
- */
14
- function loadSDKScript() {
10
+ function loadSDK() {
15
11
  if (sdkLoadPromise)
16
12
  return sdkLoadPromise;
17
- // Check if already loaded
18
- if (typeof window !== "undefined" && window.createEditor) {
19
- return Promise.resolve();
13
+ if (typeof window !== "undefined" && window.pexelize) {
14
+ // Return the SDK module with createEditor function
15
+ return Promise.resolve({
16
+ pexelize: window.pexelize,
17
+ createEditor: (config) => {
18
+ const instance = new window.pexelize.constructor();
19
+ instance.init(config);
20
+ return instance;
21
+ },
22
+ PexelizeSDK: window.pexelize.constructor,
23
+ });
20
24
  }
21
25
  sdkLoadPromise = new Promise((resolve, reject) => {
22
26
  const script = document.createElement("script");
23
27
  script.src = SDK_CDN_URL;
24
28
  script.async = true;
25
29
  script.onload = () => {
26
- if (window.createEditor) {
27
- resolve();
30
+ if (window.pexelize) {
31
+ // Resolve with SDK module interface
32
+ resolve({
33
+ pexelize: window.pexelize,
34
+ createEditor: (config) => {
35
+ const instance = new window.pexelize.constructor();
36
+ instance.init(config);
37
+ return instance;
38
+ },
39
+ PexelizeSDK: window.pexelize.constructor,
40
+ });
28
41
  }
29
42
  else {
30
43
  sdkLoadPromise = null;
31
- reject(new Error("Failed to load Pexelize SDK - createEditor not found"));
44
+ reject(new Error("Failed to load Pexelize SDK"));
32
45
  }
33
46
  };
34
47
  script.onerror = () => {
@@ -39,22 +52,15 @@ function loadSDKScript() {
39
52
  });
40
53
  return sdkLoadPromise;
41
54
  }
42
- /**
43
- * Create a new editor instance.
44
- * Each component gets its own independent instance for multiple editors support.
45
- */
46
- function createEditorInstance() {
47
- if (!window.createEditor) {
48
- throw new Error("Pexelize SDK not loaded - call loadSDKScript first");
49
- }
50
- return window.createEditor();
51
- }
52
55
  const PexelizeEditor = react.forwardRef((props, ref) => {
53
56
  const { editorId, apiKey, templateId, design, editorMode, contentType, ai, height, options = {}, className, style, minHeight = "600px", onReady, onLoad, onChange, onError, } = props;
54
57
  const containerRef = react.useRef(null);
55
- const editorInstanceRef = react.useRef(null);
56
- const containerId = react.useRef(`pexelize-editor-${Math.random().toString(36).substr(2, 9)}`);
57
- const eventUnsubscribersRef = react.useRef([]);
58
+ const [editor, setEditor] = react.useState(null);
59
+ const [hasLoadedSDK, setHasLoadedSDK] = react.useState(false);
60
+ const [isEditorReady, setIsEditorReady] = react.useState(false);
61
+ // Stable container ID using useMemo
62
+ const containerId = react.useMemo(() => `pexelize-editor-${Math.random().toString(36).substr(2, 9)}`, []);
63
+ // Refs for callbacks to avoid dependency issues
58
64
  const onReadyRef = react.useRef(onReady);
59
65
  const onLoadRef = react.useRef(onLoad);
60
66
  const onChangeRef = react.useRef(onChange);
@@ -71,83 +77,108 @@ const PexelizeEditor = react.forwardRef((props, ref) => {
71
77
  react.useEffect(() => {
72
78
  onErrorRef.current = onError;
73
79
  }, [onError]);
74
- const [isEditorReady, setIsEditorReady] = react.useState(false);
75
- const handleReady = react.useCallback(() => {
76
- setIsEditorReady(true);
77
- if (editorInstanceRef.current) {
78
- onReadyRef.current?.(editorInstanceRef.current);
79
- }
80
- }, []);
80
+ // Build options object (memoized for comparison)
81
+ const editorOptions = react.useMemo(() => {
82
+ const editorConfig = contentType === "module"
83
+ ? { ...options.editor, contentType, minRows: 1, maxRows: 1 }
84
+ : options.editor;
85
+ return {
86
+ containerId,
87
+ editorId,
88
+ apiKey,
89
+ ...options,
90
+ ...(templateId !== undefined && { templateId }),
91
+ ...(design !== undefined && { design }),
92
+ ...(editorMode !== undefined && { editorMode }),
93
+ ...(ai !== undefined && { ai }),
94
+ ...(editorConfig && { editor: editorConfig }),
95
+ };
96
+ }, [
97
+ containerId,
98
+ editorId,
99
+ apiKey,
100
+ templateId,
101
+ design,
102
+ editorMode,
103
+ ai,
104
+ contentType,
105
+ options,
106
+ ]);
107
+ // 1. Cleanup effect - runs only on final unmount
108
+ react.useEffect(() => {
109
+ return () => {
110
+ editor?.destroy();
111
+ };
112
+ }, []); // Empty deps - only runs on unmount
113
+ // 2. SDK loading effect
81
114
  react.useEffect(() => {
82
- if (!containerRef.current)
115
+ setHasLoadedSDK(false);
116
+ loadSDK()
117
+ .then(() => setHasLoadedSDK(true))
118
+ .catch((err) => onErrorRef.current?.(err));
119
+ }, []); // Load SDK once
120
+ // 3. Editor creation effect - ONLY on core props change
121
+ react.useEffect(() => {
122
+ if (!hasLoadedSDK || !containerRef.current)
83
123
  return;
84
- let mounted = true;
124
+ // KEY: Destroy previous editor BEFORE creating new one
125
+ editor?.destroy();
85
126
  const initEditor = async () => {
86
127
  try {
87
- // Load SDK script (only once across all components)
88
- await loadSDKScript();
89
- if (!mounted)
90
- return;
91
- // Create NEW instance for THIS component (supports multiple editors)
92
- const editor = createEditorInstance();
93
- editorInstanceRef.current = editor;
94
- const editorConfig = contentType === "module"
95
- ? { ...options.editor, contentType, minRows: 1, maxRows: 1 }
96
- : options.editor;
97
- const config = {
98
- containerId: containerId.current,
99
- editorId,
100
- apiKey,
101
- ...options,
102
- ...(templateId !== undefined && { templateId }),
103
- ...(design !== undefined && { design }),
104
- ...(editorMode !== undefined && { editorMode }),
105
- ...(ai !== undefined && { ai }),
106
- ...(editorConfig && { editor: editorConfig }),
128
+ // Import createEditor for multiple instance support
129
+ const { createEditor } = await loadSDK();
130
+ // Create a new editor instance (not singleton)
131
+ const editorInstance = createEditor(editorOptions);
132
+ setEditor(editorInstance);
133
+ // Set up event listeners
134
+ const unsubscribeReady = editorInstance.addEventListener("editor:ready", () => {
135
+ setIsEditorReady(true);
136
+ onReadyRef.current?.(editorInstance);
137
+ });
138
+ const unsubscribeLoad = editorInstance.addEventListener("design:loaded", () => {
139
+ onLoadRef.current?.();
140
+ });
141
+ const unsubscribeChange = editorInstance.addEventListener("design:updated", (data) => {
142
+ onChangeRef.current?.(data);
143
+ });
144
+ // Cleanup listeners (but NOT the editor - that's handled in effect 1)
145
+ return () => {
146
+ unsubscribeReady();
147
+ unsubscribeLoad();
148
+ unsubscribeChange();
107
149
  };
108
- // Initialize THIS instance
109
- editor.init(config);
110
- // Subscribe to events on THIS instance
111
- const unsubscribeReady = editor.addEventListener("editor:ready", handleReady);
112
- eventUnsubscribersRef.current.push(unsubscribeReady);
113
- const unsubscribeLoad = editor.addEventListener("design:loaded", () => onLoadRef.current?.());
114
- eventUnsubscribersRef.current.push(unsubscribeLoad);
115
- const unsubscribeChange = editor.addEventListener("design:updated", (data) => onChangeRef.current?.(data));
116
- eventUnsubscribersRef.current.push(unsubscribeChange);
117
150
  }
118
151
  catch (err) {
119
- if (!mounted)
120
- return;
121
152
  const error = err instanceof Error ? err : new Error(String(err));
122
153
  onErrorRef.current?.(error);
154
+ // Return empty cleanup function on error
155
+ return () => { };
123
156
  }
124
157
  };
125
158
  initEditor();
126
- return () => {
127
- mounted = false;
128
- eventUnsubscribersRef.current.forEach((unsub) => {
129
- try {
130
- unsub();
131
- }
132
- catch {
133
- // ignore
134
- }
135
- });
136
- eventUnsubscribersRef.current = [];
137
- try {
138
- editorInstanceRef.current?.destroy();
139
- }
140
- catch {
141
- // ignore
142
- }
143
- editorInstanceRef.current = null;
144
- setIsEditorReady(false);
145
- };
146
- }, [editorId, apiKey, handleReady]);
159
+ }, [
160
+ // Only re-init on core props that MUST trigger re-initialization
161
+ containerId,
162
+ editorId,
163
+ apiKey,
164
+ templateId,
165
+ hasLoadedSDK,
166
+ ]);
167
+ // 4. Update options effect - update without re-init
168
+ react.useEffect(() => {
169
+ if (!editor || !isEditorReady)
170
+ return;
171
+ // Update modules without re-initialization
172
+ if (editorOptions.modules) {
173
+ // Cast to any to access setModules (it exists but type def may be outdated)
174
+ editor.setModules(editorOptions.modules);
175
+ }
176
+ // Note: Most options can't be updated after init, only modules can be updated
177
+ }, [editor, isEditorReady, editorOptions.modules]);
147
178
  react.useImperativeHandle(ref, () => ({
148
- editor: editorInstanceRef.current,
179
+ editor: editor,
149
180
  isReady: () => isEditorReady,
150
- }), [isEditorReady]);
181
+ }), [editor, isEditorReady]);
151
182
  const effectiveHeight = height ?? minHeight;
152
183
  const containerStyle = {
153
184
  width: "100%",
@@ -156,7 +187,7 @@ const PexelizeEditor = react.forwardRef((props, ref) => {
156
187
  : effectiveHeight,
157
188
  ...style,
158
189
  };
159
- return (jsxRuntime.jsx("div", { className: className, style: containerStyle, children: jsxRuntime.jsx("div", { id: containerId.current, ref: containerRef, style: { width: "100%", height: "100%" } }) }));
190
+ return (jsxRuntime.jsx("div", { className: className, style: containerStyle, children: jsxRuntime.jsx("div", { id: containerId, ref: containerRef, style: { width: "100%", height: "100%" } }) }));
160
191
  });
161
192
  PexelizeEditor.displayName = "PexelizeEditor";
162
193
  function usePexelizeEditor() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":[null],"names":["forwardRef","useRef","useEffect","useState","useCallback","useImperativeHandle","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":[null],"names":["forwardRef","useRef","useState","useMemo","useEffect","useImperativeHandle","_jsx"],"mappings":"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"}
package/package.json CHANGED
@@ -1,88 +1,88 @@
1
- {
2
- "name": "@pexelize/react-editor",
3
- "version": "2.1.4",
4
- "type": "module",
5
- "description": "React wrapper component for the Pexelize Editor - thin wrapper that exposes raw SDK for maximum flexibility",
6
- "main": "dist/index.js",
7
- "module": "dist/index.esm.js",
8
- "types": "dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "import": "./dist/index.esm.js",
12
- "require": "./dist/index.js",
13
- "types": "./dist/index.d.ts"
14
- }
15
- },
16
- "files": [
17
- "dist",
18
- "README.md",
19
- "LICENSE"
20
- ],
21
- "scripts": {
22
- "build": "rollup -c",
23
- "build:watch": "rollup -c -w",
24
- "dev": "rollup -c -w",
25
- "test": "vitest",
26
- "lint": "eslint src --ext .ts,.tsx",
27
- "typecheck": "tsc --noEmit",
28
- "clean": "rimraf dist",
29
- "prepublishOnly": "npm run build"
30
- },
31
- "keywords": [
32
- "pexelize",
33
- "editor",
34
- "email-editor",
35
- "react",
36
- "react-component",
37
- "template-editor",
38
- "template-builder",
39
- "drag-and-drop",
40
- "web page builder",
41
- "page-builder"
42
- ],
43
- "author": "Pexelize",
44
- "license": "MIT",
45
- "repository": {
46
- "type": "git",
47
- "url": "https://github.com/Zaman-Meer/pexelize-react.git"
48
- },
49
- "bugs": {
50
- "url": "https://github.com/Zaman-Meer/pexelize-react/issues"
51
- },
52
- "homepage": "https://github.com/Zaman-Meer/pexelize-react#readme",
53
- "peerDependencies": {
54
- "react": ">=17.0.0",
55
- "react-dom": ">=17.0.0"
56
- },
57
- "peerDependenciesMeta": {
58
- "react": {
59
- "optional": false
60
- },
61
- "react-dom": {
62
- "optional": false
63
- }
64
- },
65
- "devDependencies": {
66
- "@rollup/plugin-commonjs": "^25.0.7",
67
- "@rollup/plugin-node-resolve": "^15.2.3",
68
- "@rollup/plugin-typescript": "^11.1.5",
69
- "@types/node": "^20.10.4",
70
- "@types/react": "^18.2.43",
71
- "@types/react-dom": "^18.2.17",
72
- "@typescript-eslint/eslint-plugin": "^6.13.2",
73
- "@typescript-eslint/parser": "^6.13.2",
74
- "eslint": "^8.55.0",
75
- "react": "^18.2.0",
76
- "react-dom": "^18.2.0",
77
- "rimraf": "^5.0.5",
78
- "rollup": "^4.9.0",
79
- "rollup-plugin-dts": "^6.1.0",
80
- "rollup-plugin-peer-deps-external": "^2.2.4",
81
- "tslib": "^2.8.1",
82
- "typescript": "^5.3.3",
83
- "vitest": "^1.0.4"
84
- },
85
- "engines": {
86
- "node": ">=16.0.0"
87
- }
88
- }
1
+ {
2
+ "name": "@pexelize/react-editor",
3
+ "version": "2.1.6",
4
+ "type": "module",
5
+ "description": "React wrapper component for the Pexelize Editor - thin wrapper that exposes raw SDK for maximum flexibility",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.esm.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.esm.js",
12
+ "require": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "rollup -c",
23
+ "build:watch": "rollup -c -w",
24
+ "dev": "rollup -c -w",
25
+ "test": "vitest",
26
+ "lint": "eslint src --ext .ts,.tsx",
27
+ "typecheck": "tsc --noEmit",
28
+ "clean": "rimraf dist",
29
+ "prepublishOnly": "npm run build"
30
+ },
31
+ "keywords": [
32
+ "pexelize",
33
+ "editor",
34
+ "email-editor",
35
+ "react",
36
+ "react-component",
37
+ "template-editor",
38
+ "template-builder",
39
+ "drag-and-drop",
40
+ "web page builder",
41
+ "page-builder"
42
+ ],
43
+ "author": "Pexelize",
44
+ "license": "MIT",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "https://github.com/Zaman-Meer/pexelize-react.git"
48
+ },
49
+ "bugs": {
50
+ "url": "https://github.com/Zaman-Meer/pexelize-react/issues"
51
+ },
52
+ "homepage": "https://github.com/Zaman-Meer/pexelize-react#readme",
53
+ "peerDependencies": {
54
+ "react": ">=17.0.0",
55
+ "react-dom": ">=17.0.0"
56
+ },
57
+ "peerDependenciesMeta": {
58
+ "react": {
59
+ "optional": false
60
+ },
61
+ "react-dom": {
62
+ "optional": false
63
+ }
64
+ },
65
+ "devDependencies": {
66
+ "@rollup/plugin-commonjs": "^25.0.7",
67
+ "@rollup/plugin-node-resolve": "^15.2.3",
68
+ "@rollup/plugin-typescript": "^11.1.5",
69
+ "@types/node": "^20.10.4",
70
+ "@types/react": "^18.2.43",
71
+ "@types/react-dom": "^18.2.17",
72
+ "@typescript-eslint/eslint-plugin": "^6.13.2",
73
+ "@typescript-eslint/parser": "^6.13.2",
74
+ "eslint": "^8.55.0",
75
+ "react": "^18.2.0",
76
+ "react-dom": "^18.2.0",
77
+ "rimraf": "^5.0.5",
78
+ "rollup": "^4.9.0",
79
+ "rollup-plugin-dts": "^6.1.0",
80
+ "rollup-plugin-peer-deps-external": "^2.2.4",
81
+ "tslib": "^2.8.1",
82
+ "typescript": "^5.3.3",
83
+ "vitest": "^1.0.4"
84
+ },
85
+ "engines": {
86
+ "node": ">=16.0.0"
87
+ }
88
+ }