@servicetitan/dte-unlayer 0.0.1-test1
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/api-core.d.ts +19 -0
- package/dist/api-core.d.ts.map +1 -0
- package/dist/api-core.js +121 -0
- package/dist/api-core.js.map +1 -0
- package/dist/api-custom-tools.d.ts +18 -0
- package/dist/api-custom-tools.d.ts.map +1 -0
- package/dist/api-custom-tools.js +96 -0
- package/dist/api-custom-tools.js.map +1 -0
- package/dist/editor.d.ts +19 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +47 -0
- package/dist/editor.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/loadScript.d.ts +2 -0
- package/dist/loadScript.d.ts.map +1 -0
- package/dist/loadScript.js +24 -0
- package/dist/loadScript.js.map +1 -0
- package/dist/shared/const.d.ts +27 -0
- package/dist/shared/const.d.ts.map +1 -0
- package/dist/shared/const.js +6 -0
- package/dist/shared/const.js.map +1 -0
- package/dist/shared/fonts.d.ts +10 -0
- package/dist/shared/fonts.d.ts.map +1 -0
- package/dist/shared/fonts.js +127 -0
- package/dist/shared/fonts.js.map +1 -0
- package/dist/shared/schema.d.ts +51 -0
- package/dist/shared/schema.d.ts.map +1 -0
- package/dist/shared/schema.js +104 -0
- package/dist/shared/schema.js.map +1 -0
- package/dist/shared/tools.d.ts +14 -0
- package/dist/shared/tools.d.ts.map +1 -0
- package/dist/shared/tools.js +8 -0
- package/dist/shared/tools.js.map +1 -0
- package/dist/store.d.ts +31 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +274 -0
- package/dist/store.js.map +1 -0
- package/dist/tools.d.ts +26 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +164 -0
- package/dist/tools.js.map +1 -0
- package/dist/unlayer-interface.d.ts +64 -0
- package/dist/unlayer-interface.d.ts.map +1 -0
- package/dist/unlayer-interface.js +2 -0
- package/dist/unlayer-interface.js.map +1 -0
- package/dist/unlayer.d.ts +57 -0
- package/dist/unlayer.d.ts.map +1 -0
- package/dist/unlayer.js +117 -0
- package/dist/unlayer.js.map +1 -0
- package/package.json +20 -0
- package/src/__tests__/schema.test.ts +96 -0
- package/src/api-core.ts +94 -0
- package/src/api-custom-tools.ts +79 -0
- package/src/editor.tsx +87 -0
- package/src/index.ts +11 -0
- package/src/loadScript.ts +27 -0
- package/src/shared/const.ts +30 -0
- package/src/shared/fonts.ts +126 -0
- package/src/shared/schema.ts +190 -0
- package/src/shared/tools.ts +18 -0
- package/src/store.ts +197 -0
- package/src/tools.ts +213 -0
- package/src/unlayer-interface.tsx +71 -0
- package/src/unlayer.tsx +176 -0
package/dist/tools.js
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { constGenericsEditor } from './shared/const';
|
|
2
|
+
import { unlayerUnitsParseToolKey } from './shared/tools';
|
|
3
|
+
import { versions } from './unlayer';
|
|
4
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
5
|
+
export const unlayerGetDefaultDesign = () => ({
|
|
6
|
+
counters: {
|
|
7
|
+
u_column: 1,
|
|
8
|
+
u_row: 1,
|
|
9
|
+
u_content_custom_generic_list_of_fields: 1,
|
|
10
|
+
},
|
|
11
|
+
body: {
|
|
12
|
+
rows: [
|
|
13
|
+
{
|
|
14
|
+
cells: [1],
|
|
15
|
+
columns: [
|
|
16
|
+
{
|
|
17
|
+
contents: [],
|
|
18
|
+
values: {
|
|
19
|
+
backgroundColor: '',
|
|
20
|
+
padding: '0px',
|
|
21
|
+
border: {},
|
|
22
|
+
_meta: {
|
|
23
|
+
htmlID: 'u_column_1',
|
|
24
|
+
htmlClassNames: 'u_column',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
values: {
|
|
30
|
+
displayCondition: null,
|
|
31
|
+
columns: false,
|
|
32
|
+
backgroundColor: '',
|
|
33
|
+
columnsBackgroundColor: '',
|
|
34
|
+
backgroundImage: {
|
|
35
|
+
url: '',
|
|
36
|
+
fullWidth: true,
|
|
37
|
+
repeat: false,
|
|
38
|
+
center: true,
|
|
39
|
+
cover: false,
|
|
40
|
+
},
|
|
41
|
+
padding: '0px',
|
|
42
|
+
hideDesktop: false,
|
|
43
|
+
hideMobile: false,
|
|
44
|
+
noStackMobile: false,
|
|
45
|
+
_meta: {
|
|
46
|
+
htmlID: 'u_row_1',
|
|
47
|
+
htmlClassNames: 'u_row',
|
|
48
|
+
},
|
|
49
|
+
selectable: true,
|
|
50
|
+
draggable: true,
|
|
51
|
+
duplicatable: true,
|
|
52
|
+
deletable: true,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
values: {
|
|
57
|
+
backgroundColor: 'rgba(0,0,0,0)',
|
|
58
|
+
backgroundImage: {
|
|
59
|
+
url: '',
|
|
60
|
+
fullWidth: true,
|
|
61
|
+
repeat: false,
|
|
62
|
+
center: true,
|
|
63
|
+
cover: false,
|
|
64
|
+
},
|
|
65
|
+
contentWidth: '100%',
|
|
66
|
+
contentAlign: 'center',
|
|
67
|
+
fontFamily: {
|
|
68
|
+
label: 'Arial',
|
|
69
|
+
value: 'arial,helvetica,sans-serif',
|
|
70
|
+
},
|
|
71
|
+
preheaderText: '',
|
|
72
|
+
linkStyle: {
|
|
73
|
+
body: true,
|
|
74
|
+
linkColor: '#0000ee',
|
|
75
|
+
linkHoverColor: '#0000ee',
|
|
76
|
+
linkUnderline: true,
|
|
77
|
+
linkHoverUnderline: true,
|
|
78
|
+
},
|
|
79
|
+
_meta: {
|
|
80
|
+
htmlID: 'u_body',
|
|
81
|
+
htmlClassNames: 'u_body',
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
schemaVersion: versions.schema,
|
|
86
|
+
});
|
|
87
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
88
|
+
export const unlayerToolsIterate = (design, cb) => {
|
|
89
|
+
var _a, _b;
|
|
90
|
+
for (const row of (_b = (_a = design === null || design === void 0 ? void 0 : design.body) === null || _a === void 0 ? void 0 : _a.rows) !== null && _b !== void 0 ? _b : []) {
|
|
91
|
+
for (const column of row.columns) {
|
|
92
|
+
for (const content of column.contents) {
|
|
93
|
+
if (cb(content) === false) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
export const unlayerToolsIterateCustom = (design, cb) => {
|
|
101
|
+
unlayerToolsIterate(design, tool => {
|
|
102
|
+
if (tool.type === 'custom') {
|
|
103
|
+
return cb(tool);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
export const unlayerToolsListCustomKeys = (design) => {
|
|
108
|
+
return Array.from(new Set(unlayerToolsListCustom(design).map(tool => tool.slug)));
|
|
109
|
+
};
|
|
110
|
+
export const unlayerToolsFind = (design, cb) => {
|
|
111
|
+
let out;
|
|
112
|
+
unlayerToolsIterate(design, tool => {
|
|
113
|
+
if (cb(tool)) {
|
|
114
|
+
out = tool;
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
return out;
|
|
119
|
+
};
|
|
120
|
+
export const unlayerToolsCustomStat = (design, tools, units) => {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
const counters = {};
|
|
123
|
+
const notSupported = new Set();
|
|
124
|
+
const unitIDs = new Set();
|
|
125
|
+
unlayerToolsIterateCustom(design, tool => {
|
|
126
|
+
if (!counters[tool.slug]) {
|
|
127
|
+
counters[tool.slug] = 0;
|
|
128
|
+
}
|
|
129
|
+
counters[tool.slug]++;
|
|
130
|
+
const isUnit = unlayerUnitsParseToolKey(tool.slug);
|
|
131
|
+
if (isUnit) {
|
|
132
|
+
unitIDs.add(isUnit.id);
|
|
133
|
+
}
|
|
134
|
+
if ((isUnit && !(units === null || units === void 0 ? void 0 : units.some(unit => unit.id === isUnit.id))) ||
|
|
135
|
+
(!isUnit && !(tools === null || tools === void 0 ? void 0 : tools.some(t => t.key === tool.slug)))) {
|
|
136
|
+
notSupported.add(tool.slug);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
return {
|
|
140
|
+
counters,
|
|
141
|
+
notSupported: Array.from(notSupported),
|
|
142
|
+
missing: [
|
|
143
|
+
...((_a = tools === null || tools === void 0 ? void 0 : tools.filter(tool => tool.isRequired && !counters[tool.key]).map(tool => tool.key)) !== null && _a !== void 0 ? _a : []),
|
|
144
|
+
...((_b = units === null || units === void 0 ? void 0 : units.filter(unit => unit.isRequired && !unitIDs.has(unit.id)).map(unit => unit.id)) !== null && _b !== void 0 ? _b : []),
|
|
145
|
+
],
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
export const unlayerToolsListCustom = (design) => {
|
|
149
|
+
const tools = [];
|
|
150
|
+
unlayerToolsIterateCustom(design, tool => {
|
|
151
|
+
tools.push(tool);
|
|
152
|
+
});
|
|
153
|
+
return tools;
|
|
154
|
+
};
|
|
155
|
+
export const unlayerToolsBuildDesign = (tools) => {
|
|
156
|
+
const design = unlayerGetDefaultDesign();
|
|
157
|
+
design.body.rows[0].columns[0].contents = tools;
|
|
158
|
+
return design;
|
|
159
|
+
};
|
|
160
|
+
export const unlayerUnitsGetIdFromValues = (values) => { var _a; return (_a = values === null || values === void 0 ? void 0 : values[constGenericsEditor.adminConfigProperty]) === null || _a === void 0 ? void 0 : _a.crossId; };
|
|
161
|
+
export const unlayerUnitsGetTitleFromValues = (values) => { var _a; return (_a = values === null || values === void 0 ? void 0 : values[constGenericsEditor.adminConfigProperty]) === null || _a === void 0 ? void 0 : _a.title; };
|
|
162
|
+
export const unlayerUnitsGetId = (tool) => unlayerUnitsGetIdFromValues(tool.values);
|
|
163
|
+
export const unlayerUnitsGetTitle = (tool) => unlayerUnitsGetTitleFromValues(tool.values);
|
|
164
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { UnlayerCoreApi } from './api-core';
|
|
2
|
+
import { SchemaObject } from './shared/schema';
|
|
3
|
+
export interface UnlayerDesignTool {
|
|
4
|
+
type: string;
|
|
5
|
+
slug: string;
|
|
6
|
+
values: any;
|
|
7
|
+
}
|
|
8
|
+
export interface UnlayerDesignFormat {
|
|
9
|
+
body: {
|
|
10
|
+
rows: {
|
|
11
|
+
cells: number[];
|
|
12
|
+
columns: {
|
|
13
|
+
contents: UnlayerDesignTool[];
|
|
14
|
+
values?: any;
|
|
15
|
+
}[];
|
|
16
|
+
values?: any;
|
|
17
|
+
}[];
|
|
18
|
+
values?: any;
|
|
19
|
+
};
|
|
20
|
+
counters: Record<string, number>;
|
|
21
|
+
schemaVersion: number;
|
|
22
|
+
}
|
|
23
|
+
export interface UnlayerExport {
|
|
24
|
+
html: string;
|
|
25
|
+
chunks: any;
|
|
26
|
+
design: UnlayerDesignFormat;
|
|
27
|
+
}
|
|
28
|
+
export interface UnlayerRef {
|
|
29
|
+
loadDesign(design: any): void;
|
|
30
|
+
saveDesign(cb: (design: any) => void): void;
|
|
31
|
+
exportHtml(cb: (data: UnlayerExport) => void): void;
|
|
32
|
+
}
|
|
33
|
+
export interface UnlayerEditorMergeTagInfo {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
propertyPath: string;
|
|
37
|
+
}
|
|
38
|
+
export interface UnlayerEditorUnit {
|
|
39
|
+
id: string;
|
|
40
|
+
generic: string;
|
|
41
|
+
title: string;
|
|
42
|
+
values: any;
|
|
43
|
+
}
|
|
44
|
+
export interface UnlayerEditorCustomTool {
|
|
45
|
+
key: string;
|
|
46
|
+
title: string;
|
|
47
|
+
path: string;
|
|
48
|
+
}
|
|
49
|
+
export interface CreateUnlayerEditorProps {
|
|
50
|
+
tools: UnlayerEditorCustomTool[];
|
|
51
|
+
dummyData?: any;
|
|
52
|
+
schema?: SchemaObject;
|
|
53
|
+
customCSS?: string | string[] | undefined;
|
|
54
|
+
customJS?: string | string[] | undefined;
|
|
55
|
+
mergeTags?: UnlayerEditorMergeTagInfo[] | undefined;
|
|
56
|
+
genericConfigMode?: boolean;
|
|
57
|
+
generics?: true | string[];
|
|
58
|
+
units?: UnlayerEditorUnit[];
|
|
59
|
+
noCoreTools?: boolean;
|
|
60
|
+
latest?: boolean;
|
|
61
|
+
blocks?: boolean;
|
|
62
|
+
coreApi: UnlayerCoreApi;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=unlayer-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlayer-interface.d.ts","sourceRoot":"","sources":["../src/unlayer-interface.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE;QACF,IAAI,EAAE;YACF,KAAK,EAAE,MAAM,EAAE,CAAC;YAChB,OAAO,EAAE;gBACL,QAAQ,EAAE,iBAAiB,EAAE,CAAC;gBAC9B,MAAM,CAAC,EAAE,GAAG,CAAC;aAChB,EAAE,CAAC;YACJ,MAAM,CAAC,EAAE,GAAG,CAAC;SAChB,EAAE,CAAC;QACJ,MAAM,CAAC,EAAE,GAAG,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,yBAAyB,EAAE,GAAG,SAAS,CAAC;IACpD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlayer-interface.js","sourceRoot":"","sources":["../src/unlayer-interface.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { CreateUnlayerEditorProps } from './unlayer-interface';
|
|
2
|
+
export interface UnlayerExport {
|
|
3
|
+
html: string;
|
|
4
|
+
chunks: any;
|
|
5
|
+
design: any;
|
|
6
|
+
}
|
|
7
|
+
export interface Unlayer {
|
|
8
|
+
addEventListener(event: string, cb: (arg: any) => void): void;
|
|
9
|
+
removeEventListener(event: string, cb: (arg: any) => void): void;
|
|
10
|
+
registerCallback(type: string, cb: (...args: any[]) => void): void;
|
|
11
|
+
unregisterCallback(type: string, cb: (...args: any[]) => void): void;
|
|
12
|
+
registerProvider(type: string, cb: (...args: any[]) => void): void;
|
|
13
|
+
unregisterProvider(type: string, cb: (...args: any[]) => void): void;
|
|
14
|
+
loadDesign(design: any): void;
|
|
15
|
+
saveDesign(callback: (design: any) => void): void;
|
|
16
|
+
exportHtml(callback: (data: UnlayerExport) => void): void;
|
|
17
|
+
setMergeTags(tags: any): void;
|
|
18
|
+
createViewer(opts: {
|
|
19
|
+
render: (values: any) => string;
|
|
20
|
+
}): any;
|
|
21
|
+
registerTool(tool: any): void;
|
|
22
|
+
setBodyValues(values: any): void;
|
|
23
|
+
}
|
|
24
|
+
export declare enum DesignUpdatedEventType {
|
|
25
|
+
ContentAdded = "content:added",
|
|
26
|
+
ContentMoved = "content:moved",
|
|
27
|
+
ContentRemoved = "content:removed",
|
|
28
|
+
ContentModified = "content:modified",
|
|
29
|
+
RowAdded = "row:added",
|
|
30
|
+
RowMoved = "row:moved",
|
|
31
|
+
RowRemoved = "row:removed",
|
|
32
|
+
RowModified = "row:modified",
|
|
33
|
+
ColumnAdded = "column:added",
|
|
34
|
+
ColumnRemoved = "column:removed",
|
|
35
|
+
ColumnModified = "column:modified",
|
|
36
|
+
BodyModified = "body:modified"
|
|
37
|
+
}
|
|
38
|
+
export interface EventDesignUpdated {
|
|
39
|
+
type: DesignUpdatedEventType;
|
|
40
|
+
item: {
|
|
41
|
+
type: string;
|
|
42
|
+
slug?: string;
|
|
43
|
+
values: any;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* !!! IMPORTANT !!!
|
|
48
|
+
* do not forget to update schema version when updating unlayer version
|
|
49
|
+
* it is important for templates export and should be in sync
|
|
50
|
+
* to know correct schema version, open unlayer editor and check output design ('schema' property)
|
|
51
|
+
*/
|
|
52
|
+
export declare const versions: {
|
|
53
|
+
unlayer: string;
|
|
54
|
+
schema: number;
|
|
55
|
+
};
|
|
56
|
+
export declare const createUnlayerEditor: (container: HTMLDivElement, { coreApi, customCSS, customJS, latest, mergeTags, noCoreTools, tools, units, }: CreateUnlayerEditorProps) => Unlayer;
|
|
57
|
+
//# sourceMappingURL=unlayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlayer.d.ts","sourceRoot":"","sources":["../src/unlayer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACpB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9D,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACrE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACrE,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAClD,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAA;KAAE,GAAG,GAAG,CAAC;IAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;CACpC;AAED,oBAAY,sBAAsB;IAC9B,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;IAC9B,cAAc,oBAAoB;IAClC,eAAe,qBAAqB;IACpC,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,UAAU,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAC5B,aAAa,mBAAmB;IAChC,cAAc,oBAAoB;IAClC,YAAY,kBAAkB;CACjC;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,IAAI,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,GAAG,CAAC;KACf,CAAC;CACL;AAED;;;;;GAKG;AACH,eAAO,MAAM,QAAQ;;;CAGpB,CAAC;AAEF,eAAO,MAAM,mBAAmB,cACjB,cAAc,mFAUtB,wBAAwB,KAC5B,OAsGF,CAAC"}
|
package/dist/unlayer.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { constGenericsEditor } from './shared/const';
|
|
2
|
+
import { unlayerSupportedFonts } from './shared/fonts';
|
|
3
|
+
export var DesignUpdatedEventType;
|
|
4
|
+
(function (DesignUpdatedEventType) {
|
|
5
|
+
DesignUpdatedEventType["ContentAdded"] = "content:added";
|
|
6
|
+
DesignUpdatedEventType["ContentMoved"] = "content:moved";
|
|
7
|
+
DesignUpdatedEventType["ContentRemoved"] = "content:removed";
|
|
8
|
+
DesignUpdatedEventType["ContentModified"] = "content:modified";
|
|
9
|
+
DesignUpdatedEventType["RowAdded"] = "row:added";
|
|
10
|
+
DesignUpdatedEventType["RowMoved"] = "row:moved";
|
|
11
|
+
DesignUpdatedEventType["RowRemoved"] = "row:removed";
|
|
12
|
+
DesignUpdatedEventType["RowModified"] = "row:modified";
|
|
13
|
+
DesignUpdatedEventType["ColumnAdded"] = "column:added";
|
|
14
|
+
DesignUpdatedEventType["ColumnRemoved"] = "column:removed";
|
|
15
|
+
DesignUpdatedEventType["ColumnModified"] = "column:modified";
|
|
16
|
+
DesignUpdatedEventType["BodyModified"] = "body:modified";
|
|
17
|
+
})(DesignUpdatedEventType || (DesignUpdatedEventType = {}));
|
|
18
|
+
/**
|
|
19
|
+
* !!! IMPORTANT !!!
|
|
20
|
+
* do not forget to update schema version when updating unlayer version
|
|
21
|
+
* it is important for templates export and should be in sync
|
|
22
|
+
* to know correct schema version, open unlayer editor and check output design ('schema' property)
|
|
23
|
+
*/
|
|
24
|
+
export const versions = {
|
|
25
|
+
unlayer: '1.2.9',
|
|
26
|
+
schema: 5,
|
|
27
|
+
};
|
|
28
|
+
export const createUnlayerEditor = (container, { coreApi, customCSS, customJS, latest, mergeTags, noCoreTools, tools, units, }) => {
|
|
29
|
+
const customScripts = [
|
|
30
|
+
...coreApi.pathsCore,
|
|
31
|
+
...coreApi.pathsCoreTools,
|
|
32
|
+
'window.dteStore.sendData("--core-loaded")',
|
|
33
|
+
...tools.map(tool => tool.path),
|
|
34
|
+
...(customJS ? (Array.isArray(customJS) ? customJS : [customJS]) : []),
|
|
35
|
+
'window.dteStore.sendData("--data-loaded")',
|
|
36
|
+
].filter(js => !!(js === null || js === void 0 ? void 0 : js.trim()));
|
|
37
|
+
const customStyles = [
|
|
38
|
+
coreApi.customCss,
|
|
39
|
+
...(customCSS ? (Array.isArray(customCSS) ? customCSS : [customCSS]) : []),
|
|
40
|
+
].filter(css => !!(css === null || css === void 0 ? void 0 : css.trim()));
|
|
41
|
+
console.log('###unlayer init', customScripts, customStyles);
|
|
42
|
+
/**
|
|
43
|
+
* Unlayer supports only passing id of container, but when we use shadowDOM (MFE),
|
|
44
|
+
* getElementById can't find element in it
|
|
45
|
+
* so making this dirty hack to let unlayer find container in DOM
|
|
46
|
+
*/
|
|
47
|
+
const id = container.id;
|
|
48
|
+
const currentFind = document.getElementById;
|
|
49
|
+
document.getElementById = function (elementId) {
|
|
50
|
+
if (id === elementId) {
|
|
51
|
+
return container;
|
|
52
|
+
}
|
|
53
|
+
return currentFind.call(document, id);
|
|
54
|
+
};
|
|
55
|
+
const acv = constGenericsEditor.adminConfigProperty;
|
|
56
|
+
const unitsConfig = (units !== null && units !== void 0 ? units : []).reduce((out, unit) => {
|
|
57
|
+
out[`custom#${unit.generic}:unit:${unit.id}`] = {
|
|
58
|
+
data: {
|
|
59
|
+
[acv]: unit.values[acv],
|
|
60
|
+
},
|
|
61
|
+
properties: {
|
|
62
|
+
[constGenericsEditor.userConfigProperty]: {
|
|
63
|
+
editor: {
|
|
64
|
+
data: { [acv]: unit.values[acv] },
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
[constGenericsEditor.infoDataProperty]: {
|
|
68
|
+
editor: {
|
|
69
|
+
data: { title: unit.title },
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
return out;
|
|
75
|
+
}, {});
|
|
76
|
+
const result = window.unlayer.createEditor({
|
|
77
|
+
displayMode: 'web',
|
|
78
|
+
devices: ['desktop'],
|
|
79
|
+
features: {
|
|
80
|
+
preview: false,
|
|
81
|
+
userUploads: false,
|
|
82
|
+
stockImages: false,
|
|
83
|
+
},
|
|
84
|
+
mergeTags: mergeTags === null || mergeTags === void 0 ? void 0 : mergeTags.reduce((out, tag) => {
|
|
85
|
+
out[tag.id] = { name: tag.name, value: tag.propertyPath };
|
|
86
|
+
return out;
|
|
87
|
+
}, {}),
|
|
88
|
+
projectId: 5713,
|
|
89
|
+
version: latest ? undefined : versions.unlayer,
|
|
90
|
+
tools: Object.assign(Object.assign({ button: { enabled: false }, html: { enabled: false }, menu: { enabled: false }, form: { enabled: false }, image: { enabled: false } }, (noCoreTools
|
|
91
|
+
? {
|
|
92
|
+
columns: { enabled: false },
|
|
93
|
+
text: { enabled: false },
|
|
94
|
+
heading: { enabled: false },
|
|
95
|
+
divider: { enabled: false },
|
|
96
|
+
}
|
|
97
|
+
: {})), unitsConfig),
|
|
98
|
+
editor: {
|
|
99
|
+
autoSelectOnDrop: true,
|
|
100
|
+
},
|
|
101
|
+
customJS: customScripts,
|
|
102
|
+
customCSS: customStyles,
|
|
103
|
+
id,
|
|
104
|
+
fonts: {
|
|
105
|
+
showDefaultFonts: false,
|
|
106
|
+
customFonts: unlayerSupportedFonts,
|
|
107
|
+
},
|
|
108
|
+
tabs: {
|
|
109
|
+
content: {},
|
|
110
|
+
body: {},
|
|
111
|
+
blocks: { enabled: false },
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
document.getElementById = currentFind;
|
|
115
|
+
return result;
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=unlayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlayer.js","sourceRoot":"","sources":["../src/unlayer.tsx"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@servicetitan/dte-unlayer",
|
|
3
|
+
"version": "0.0.1-test1",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"typings": "./dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"src"
|
|
10
|
+
],
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public",
|
|
13
|
+
"registry": "https://registry.npmjs.org"
|
|
14
|
+
},
|
|
15
|
+
"cli": {
|
|
16
|
+
"webpack": false
|
|
17
|
+
},
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import {
|
|
2
|
+
schemaFindNode,
|
|
3
|
+
schemaFindParentNode,
|
|
4
|
+
schemaBuildMap,
|
|
5
|
+
SchemaObject,
|
|
6
|
+
} from '../shared/schema';
|
|
7
|
+
|
|
8
|
+
const schemaSource = {
|
|
9
|
+
type: 'object',
|
|
10
|
+
title: '',
|
|
11
|
+
properties: {
|
|
12
|
+
Name: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
title: 'First Name',
|
|
15
|
+
},
|
|
16
|
+
LastName: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
title: 'Last Name',
|
|
19
|
+
},
|
|
20
|
+
Job: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
title: 'Job Info',
|
|
23
|
+
properties: {
|
|
24
|
+
Id: { type: 'string' },
|
|
25
|
+
Name: { type: 'string', options: { placeholder: 'Test job' } },
|
|
26
|
+
SubJob: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties: {
|
|
29
|
+
Id: { type: 'string' },
|
|
30
|
+
Name: { type: 'string', options: { placeholder: 'Sub job' } },
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
Xfactor: { type: 'string' },
|
|
34
|
+
Technicians: {
|
|
35
|
+
type: 'array',
|
|
36
|
+
items: {
|
|
37
|
+
type: 'object',
|
|
38
|
+
properties: {
|
|
39
|
+
ID: { type: 'string' },
|
|
40
|
+
Name: { type: 'string', options: { placeholder: 'John Doe' } },
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
IDList: {
|
|
47
|
+
type: 'array',
|
|
48
|
+
items: { type: 'string' },
|
|
49
|
+
},
|
|
50
|
+
IDList2: {
|
|
51
|
+
type: 'array',
|
|
52
|
+
items: { type: 'string', options: { placeholder: 'test' } },
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
const schema = schemaSource as SchemaObject;
|
|
57
|
+
|
|
58
|
+
describe('schemaFindNode', () => {
|
|
59
|
+
test('return undefined for unknown key', () => {
|
|
60
|
+
expect(schemaFindNode(schema, 'XXX')).toEqual(undefined);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test('return node for root key', () => {
|
|
64
|
+
expect(schemaFindNode(schema, 'Name')).toEqual(schemaSource.properties.Name);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
describe('schemaFindNode', () => {
|
|
69
|
+
test('return undefined for unknown key', () => {
|
|
70
|
+
expect(schemaFindParentNode(schema, 'XXX')).toEqual(undefined);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
test('return root schema for root key', () => {
|
|
74
|
+
expect(schemaFindParentNode(schema, 'Name')).toEqual(schema);
|
|
75
|
+
});
|
|
76
|
+
test('return parent', () => {
|
|
77
|
+
expect(schemaFindParentNode(schema, 'Job.SubJob.Id')).toEqual(
|
|
78
|
+
schemaSource.properties.Job.properties.SubJob
|
|
79
|
+
);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe('schemaBuildMap', () => {
|
|
84
|
+
test('properly creates dummy data', () => {
|
|
85
|
+
const { dummyData } = schemaBuildMap(schema);
|
|
86
|
+
expect(dummyData).toEqual({
|
|
87
|
+
IDList: [],
|
|
88
|
+
IDList2: ['test'],
|
|
89
|
+
Job: {
|
|
90
|
+
Name: 'Test job',
|
|
91
|
+
SubJob: { Name: 'Sub job' },
|
|
92
|
+
Technicians: [{ Name: 'John Doe' }],
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
package/src/api-core.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { loadScript } from './loadScript';
|
|
2
|
+
import { UnlayerStore } from './shared/tools';
|
|
3
|
+
import { UnlayerDesignTool } from './unlayer-interface';
|
|
4
|
+
|
|
5
|
+
const dummyStore: UnlayerStore = {
|
|
6
|
+
renderHtml() {
|
|
7
|
+
return '';
|
|
8
|
+
},
|
|
9
|
+
sendData() {},
|
|
10
|
+
getTool() {
|
|
11
|
+
return undefined;
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export class UnlayerCoreApi {
|
|
16
|
+
customCss = '';
|
|
17
|
+
private loaded = new Set<string>();
|
|
18
|
+
|
|
19
|
+
private core = ['core.bundle.js'];
|
|
20
|
+
private coreTools = ['tools.bundle.js'];
|
|
21
|
+
|
|
22
|
+
constructor(private baseUrl: string) {}
|
|
23
|
+
|
|
24
|
+
private get dteStore(): UnlayerStore {
|
|
25
|
+
return (window as any).dteStore ?? dummyStore;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
get pathsCore() {
|
|
29
|
+
return this.core.map(c => `${this.baseUrl}/${c}`);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get pathsCoreTools() {
|
|
33
|
+
return this.coreTools.map(c => `${this.baseUrl}/${c}`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async init() {
|
|
37
|
+
return Promise.all([
|
|
38
|
+
fetch(`${this.baseUrl}/custom.css`).then(response => response.text()),
|
|
39
|
+
]).then(([customCSS]) => {
|
|
40
|
+
this.customCss = customCSS;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
clean() {
|
|
45
|
+
this.customCss = '';
|
|
46
|
+
this.loaded = new Set();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async preloadCore() {
|
|
50
|
+
if (this.loaded.has('_core')) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.loaded.add('_core');
|
|
54
|
+
|
|
55
|
+
await Promise.all(this.core.map(c => loadScript(`${this.baseUrl}/${c}`)));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async preloadCoreTools() {
|
|
59
|
+
if (this.loaded.has('_coreTools')) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.loaded.add('_coreTools');
|
|
63
|
+
|
|
64
|
+
await Promise.all(this.coreTools.map(c => loadScript(`${this.baseUrl}/${c}`)));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getCustomToolModel(key: string): object {
|
|
68
|
+
const dteTool = this.dteStore.getTool(key);
|
|
69
|
+
|
|
70
|
+
if (!dteTool) {
|
|
71
|
+
return {};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
return dteTool.getModel() ?? {};
|
|
76
|
+
} catch {
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
getCustomToolDataSources(tool: UnlayerDesignTool): string[] {
|
|
82
|
+
const dteTool = this.dteStore.getTool(tool.slug);
|
|
83
|
+
|
|
84
|
+
if (!dteTool) {
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
try {
|
|
89
|
+
return dteTool.dataSources(tool.values) ?? [];
|
|
90
|
+
} catch {
|
|
91
|
+
return [];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|