@pexelize/react-editor 2.1.1 → 2.1.3
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 +62 -1
- package/dist/index.esm.js +32 -12
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +32 -12
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import React from 'react';
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Pexelize React Editor Types
|
|
5
|
-
* Minimal type definitions for the React wrapper
|
|
6
5
|
*/
|
|
7
6
|
type EditorMode = "email" | "web" | "popup" | "document";
|
|
8
7
|
type ThemeMode = "light" | "dark" | "auto" | "pexelize-light" | "pexelize-dark";
|
|
@@ -96,10 +95,64 @@ interface SpecialLinkGroup {
|
|
|
96
95
|
name: string;
|
|
97
96
|
specialLinks: SpecialLink[];
|
|
98
97
|
}
|
|
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
|
+
}
|
|
99
151
|
interface AppearanceConfig {
|
|
100
152
|
theme?: ThemeMode | object;
|
|
101
153
|
accentColor?: string;
|
|
102
154
|
sidePanel?: {
|
|
155
|
+
/** Main tab visibility */
|
|
103
156
|
tabs?: {
|
|
104
157
|
content?: {
|
|
105
158
|
visible?: boolean;
|
|
@@ -111,8 +164,15 @@ interface AppearanceConfig {
|
|
|
111
164
|
visible?: boolean;
|
|
112
165
|
};
|
|
113
166
|
};
|
|
167
|
+
/** Modules tab configuration */
|
|
168
|
+
modulesTab?: ModulesTabConfig;
|
|
169
|
+
/** Styles tab configuration */
|
|
170
|
+
stylesTab?: StylesTabConfig;
|
|
171
|
+
/** Panel position: 'left' or 'right' (default: 'right') */
|
|
114
172
|
dock?: "left" | "right";
|
|
173
|
+
/** Panel width in pixels (default: 380) */
|
|
115
174
|
width?: number;
|
|
175
|
+
/** Whether panel can be collapsed (default: false) */
|
|
116
176
|
collapsible?: boolean;
|
|
117
177
|
};
|
|
118
178
|
}
|
|
@@ -261,6 +321,7 @@ interface PexelizeSDK {
|
|
|
261
321
|
declare global {
|
|
262
322
|
interface Window {
|
|
263
323
|
pexelize?: PexelizeSDK;
|
|
324
|
+
createEditor?: () => PexelizeSDK;
|
|
264
325
|
}
|
|
265
326
|
}
|
|
266
327
|
interface PexelizeEditorRef {
|
package/dist/index.esm.js
CHANGED
|
@@ -3,23 +3,28 @@ import { forwardRef, useRef, useEffect, useState, useCallback, useImperativeHand
|
|
|
3
3
|
|
|
4
4
|
const SDK_CDN_URL = "https://sdk.pexelize.com/latest/pexelize-sdk.min.js";
|
|
5
5
|
let sdkLoadPromise = null;
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Load the SDK script (only once across all components).
|
|
8
|
+
* After loading, window.createEditor will be available.
|
|
9
|
+
*/
|
|
10
|
+
function loadSDKScript() {
|
|
7
11
|
if (sdkLoadPromise)
|
|
8
12
|
return sdkLoadPromise;
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
// Check if already loaded
|
|
14
|
+
if (typeof window !== "undefined" && window.createEditor) {
|
|
15
|
+
return Promise.resolve();
|
|
11
16
|
}
|
|
12
17
|
sdkLoadPromise = new Promise((resolve, reject) => {
|
|
13
18
|
const script = document.createElement("script");
|
|
14
19
|
script.src = SDK_CDN_URL;
|
|
15
20
|
script.async = true;
|
|
16
21
|
script.onload = () => {
|
|
17
|
-
if (window.
|
|
18
|
-
resolve(
|
|
22
|
+
if (window.createEditor) {
|
|
23
|
+
resolve();
|
|
19
24
|
}
|
|
20
25
|
else {
|
|
21
26
|
sdkLoadPromise = null;
|
|
22
|
-
reject(new Error("Failed to load Pexelize SDK"));
|
|
27
|
+
reject(new Error("Failed to load Pexelize SDK - createEditor not found"));
|
|
23
28
|
}
|
|
24
29
|
};
|
|
25
30
|
script.onerror = () => {
|
|
@@ -30,6 +35,16 @@ function loadSDK() {
|
|
|
30
35
|
});
|
|
31
36
|
return sdkLoadPromise;
|
|
32
37
|
}
|
|
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
|
+
}
|
|
33
48
|
const PexelizeEditor = forwardRef((props, ref) => {
|
|
34
49
|
const { editorId, apiKey, templateId, design, editorMode, contentType, ai, height, options = {}, className, style, minHeight = "600px", onReady, onLoad, onChange, onError, } = props;
|
|
35
50
|
const containerRef = useRef(null);
|
|
@@ -65,9 +80,13 @@ const PexelizeEditor = forwardRef((props, ref) => {
|
|
|
65
80
|
let mounted = true;
|
|
66
81
|
const initEditor = async () => {
|
|
67
82
|
try {
|
|
68
|
-
|
|
83
|
+
// Load SDK script (only once across all components)
|
|
84
|
+
await loadSDKScript();
|
|
69
85
|
if (!mounted)
|
|
70
86
|
return;
|
|
87
|
+
// Create NEW instance for THIS component (supports multiple editors)
|
|
88
|
+
const editor = createEditorInstance();
|
|
89
|
+
editorInstanceRef.current = editor;
|
|
71
90
|
const editorConfig = contentType === "module"
|
|
72
91
|
? { ...options.editor, contentType, minRows: 1, maxRows: 1 }
|
|
73
92
|
: options.editor;
|
|
@@ -82,13 +101,14 @@ const PexelizeEditor = forwardRef((props, ref) => {
|
|
|
82
101
|
...(ai !== undefined && { ai }),
|
|
83
102
|
...(editorConfig && { editor: editorConfig }),
|
|
84
103
|
};
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
104
|
+
// Initialize THIS instance
|
|
105
|
+
editor.init(config);
|
|
106
|
+
// Subscribe to events on THIS instance
|
|
107
|
+
const unsubscribeReady = editor.addEventListener("editor:ready", handleReady);
|
|
88
108
|
eventUnsubscribersRef.current.push(unsubscribeReady);
|
|
89
|
-
const unsubscribeLoad =
|
|
109
|
+
const unsubscribeLoad = editor.addEventListener("design:loaded", () => onLoadRef.current?.());
|
|
90
110
|
eventUnsubscribersRef.current.push(unsubscribeLoad);
|
|
91
|
-
const unsubscribeChange =
|
|
111
|
+
const unsubscribeChange = editor.addEventListener("design:updated", (data) => onChangeRef.current?.(data));
|
|
92
112
|
eventUnsubscribersRef.current.push(unsubscribeChange);
|
|
93
113
|
}
|
|
94
114
|
catch (err) {
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/index.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;
|
|
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,23 +7,28 @@ 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
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Load the SDK script (only once across all components).
|
|
12
|
+
* After loading, window.createEditor will be available.
|
|
13
|
+
*/
|
|
14
|
+
function loadSDKScript() {
|
|
11
15
|
if (sdkLoadPromise)
|
|
12
16
|
return sdkLoadPromise;
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
// Check if already loaded
|
|
18
|
+
if (typeof window !== "undefined" && window.createEditor) {
|
|
19
|
+
return Promise.resolve();
|
|
15
20
|
}
|
|
16
21
|
sdkLoadPromise = new Promise((resolve, reject) => {
|
|
17
22
|
const script = document.createElement("script");
|
|
18
23
|
script.src = SDK_CDN_URL;
|
|
19
24
|
script.async = true;
|
|
20
25
|
script.onload = () => {
|
|
21
|
-
if (window.
|
|
22
|
-
resolve(
|
|
26
|
+
if (window.createEditor) {
|
|
27
|
+
resolve();
|
|
23
28
|
}
|
|
24
29
|
else {
|
|
25
30
|
sdkLoadPromise = null;
|
|
26
|
-
reject(new Error("Failed to load Pexelize SDK"));
|
|
31
|
+
reject(new Error("Failed to load Pexelize SDK - createEditor not found"));
|
|
27
32
|
}
|
|
28
33
|
};
|
|
29
34
|
script.onerror = () => {
|
|
@@ -34,6 +39,16 @@ function loadSDK() {
|
|
|
34
39
|
});
|
|
35
40
|
return sdkLoadPromise;
|
|
36
41
|
}
|
|
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
|
+
}
|
|
37
52
|
const PexelizeEditor = react.forwardRef((props, ref) => {
|
|
38
53
|
const { editorId, apiKey, templateId, design, editorMode, contentType, ai, height, options = {}, className, style, minHeight = "600px", onReady, onLoad, onChange, onError, } = props;
|
|
39
54
|
const containerRef = react.useRef(null);
|
|
@@ -69,9 +84,13 @@ const PexelizeEditor = react.forwardRef((props, ref) => {
|
|
|
69
84
|
let mounted = true;
|
|
70
85
|
const initEditor = async () => {
|
|
71
86
|
try {
|
|
72
|
-
|
|
87
|
+
// Load SDK script (only once across all components)
|
|
88
|
+
await loadSDKScript();
|
|
73
89
|
if (!mounted)
|
|
74
90
|
return;
|
|
91
|
+
// Create NEW instance for THIS component (supports multiple editors)
|
|
92
|
+
const editor = createEditorInstance();
|
|
93
|
+
editorInstanceRef.current = editor;
|
|
75
94
|
const editorConfig = contentType === "module"
|
|
76
95
|
? { ...options.editor, contentType, minRows: 1, maxRows: 1 }
|
|
77
96
|
: options.editor;
|
|
@@ -86,13 +105,14 @@ const PexelizeEditor = react.forwardRef((props, ref) => {
|
|
|
86
105
|
...(ai !== undefined && { ai }),
|
|
87
106
|
...(editorConfig && { editor: editorConfig }),
|
|
88
107
|
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
108
|
+
// Initialize THIS instance
|
|
109
|
+
editor.init(config);
|
|
110
|
+
// Subscribe to events on THIS instance
|
|
111
|
+
const unsubscribeReady = editor.addEventListener("editor:ready", handleReady);
|
|
92
112
|
eventUnsubscribersRef.current.push(unsubscribeReady);
|
|
93
|
-
const unsubscribeLoad =
|
|
113
|
+
const unsubscribeLoad = editor.addEventListener("design:loaded", () => onLoadRef.current?.());
|
|
94
114
|
eventUnsubscribersRef.current.push(unsubscribeLoad);
|
|
95
|
-
const unsubscribeChange =
|
|
115
|
+
const unsubscribeChange = editor.addEventListener("design:updated", (data) => onChangeRef.current?.(data));
|
|
96
116
|
eventUnsubscribersRef.current.push(unsubscribeChange);
|
|
97
117
|
}
|
|
98
118
|
catch (err) {
|
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":";;;;;;;
|
|
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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"}
|
package/package.json
CHANGED