@servicetitan/dte-unlayer 0.150.0 → 0.152.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.
- package/dist/display-conditions/ConditionGroup.d.ts +1 -1
- package/dist/display-conditions/ConditionGroup.d.ts.map +1 -1
- package/dist/display-conditions/ConditionGroupsSection.d.ts +1 -1
- package/dist/display-conditions/ConditionGroupsSection.d.ts.map +1 -1
- package/dist/display-conditions/ConditionRow.d.ts +1 -1
- package/dist/display-conditions/ConditionRow.d.ts.map +1 -1
- package/dist/display-conditions/DisplayConditionModal.d.ts +4 -3
- package/dist/display-conditions/DisplayConditionModal.d.ts.map +1 -1
- package/dist/display-conditions/DisplayConditionModal.js +112 -137
- package/dist/display-conditions/DisplayConditionModal.js.map +1 -1
- package/dist/display-conditions/LookupValueControl.d.ts +1 -1
- package/dist/display-conditions/LookupValueControl.d.ts.map +1 -1
- package/dist/display-conditions/SeparatorWithChip.d.ts +1 -1
- package/dist/display-conditions/SeparatorWithChip.d.ts.map +1 -1
- package/dist/editor-core-source.d.ts +3 -3
- package/dist/editor-core-source.d.ts.map +1 -1
- package/dist/editor-core-source.js +3 -3
- package/dist/editor-core-source.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/merge-tags.d.ts +13 -0
- package/dist/merge-tags.d.ts.map +1 -0
- package/dist/merge-tags.js +39 -0
- package/dist/merge-tags.js.map +1 -0
- package/dist/unlayer-interface.d.ts +6 -1
- package/dist/unlayer-interface.d.ts.map +1 -1
- package/dist/unlayer-interface.js.map +1 -1
- package/dist/unlayer.d.ts.map +1 -1
- package/dist/unlayer.js +2 -7
- package/dist/unlayer.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/merge-tags.test.ts +143 -0
- package/src/display-conditions/DisplayConditionModal.tsx +110 -156
- package/src/editor-core-source.ts +3 -3
- package/src/index.ts +1 -0
- package/src/merge-tags.ts +65 -0
- package/src/unlayer-interface.tsx +6 -1
- package/src/unlayer.tsx +2 -8
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,cAAc,8CAA8C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,cAAc,8CAA8C,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './editor';\nexport * from './tools';\nexport * from './api-core';\nexport * from './api-custom-tools';\nexport * from './unlayer-interface';\nexport * from './loadScript';\nexport * from './shared/const';\nexport * from './shared/forms';\nexport * from './shared/schema';\nexport * from './shared/tools';\nexport type { UnlayerDesignChangeInfo } from './store';\nexport { versions } from './unlayer';\nexport * from './shared/date-calc';\nexport { emptyArrayIfNull } from './shared/nunjucks-helpers';\nexport * from './display-conditions/lookupOptionsController';\n"],"names":["versions","emptyArrayIfNull"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B,cAAc,qBAAqB;AACnC,cAAc,sBAAsB;AACpC,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B,cAAc,kBAAkB;AAChC,cAAc,iBAAiB;AAE/B,SAASA,QAAQ,QAAQ,YAAY;AACrC,cAAc,qBAAqB;AACnC,SAASC,gBAAgB,QAAQ,4BAA4B;AAC7D,cAAc,+CAA+C"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './editor';\nexport * from './tools';\nexport * from './api-core';\nexport * from './api-custom-tools';\nexport * from './unlayer-interface';\nexport * from './merge-tags';\nexport * from './loadScript';\nexport * from './shared/const';\nexport * from './shared/forms';\nexport * from './shared/schema';\nexport * from './shared/tools';\nexport type { UnlayerDesignChangeInfo } from './store';\nexport { versions } from './unlayer';\nexport * from './shared/date-calc';\nexport { emptyArrayIfNull } from './shared/nunjucks-helpers';\nexport * from './display-conditions/lookupOptionsController';\n"],"names":["versions","emptyArrayIfNull"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B,cAAc,qBAAqB;AACnC,cAAc,sBAAsB;AACpC,cAAc,eAAe;AAC7B,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B,cAAc,kBAAkB;AAChC,cAAc,iBAAiB;AAE/B,SAASA,QAAQ,QAAQ,YAAY;AACrC,cAAc,qBAAqB;AACnC,SAASC,gBAAgB,QAAQ,4BAA4B;AAC7D,cAAc,+CAA+C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { UnlayerEditorMergeTagInfo } from './unlayer-interface';
|
|
2
|
+
export interface UnlayerMergeTagLeaf {
|
|
3
|
+
name: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export interface UnlayerMergeTagGroup {
|
|
7
|
+
name: string;
|
|
8
|
+
mergeTags: Record<string, UnlayerMergeTagLeaf>;
|
|
9
|
+
}
|
|
10
|
+
export type UnlayerMergeTagsConfig = Record<string, UnlayerMergeTagLeaf | UnlayerMergeTagGroup>;
|
|
11
|
+
export declare function isUnlayerMergeTagGroup(entry: UnlayerMergeTagLeaf | UnlayerMergeTagGroup): entry is UnlayerMergeTagGroup;
|
|
12
|
+
export declare const toUnlayerMergeTags: (tags: UnlayerEditorMergeTagInfo[] | undefined) => UnlayerMergeTagsConfig | undefined;
|
|
13
|
+
//# sourceMappingURL=merge-tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-tags.d.ts","sourceRoot":"","sources":["../src/merge-tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;AAEhG,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,GAClD,KAAK,IAAI,oBAAoB,CAE/B;AAYD,eAAO,MAAM,kBAAkB,GAAI,MAAM,yBAAyB,EAAE,GAAG,SAAS,uCAkC/E,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function isUnlayerMergeTagGroup(entry) {
|
|
2
|
+
return 'mergeTags' in entry;
|
|
3
|
+
}
|
|
4
|
+
const toMergeTagGroupKey = (groupName)=>{
|
|
5
|
+
const key = groupName.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).join('_');
|
|
6
|
+
return key || groupName;
|
|
7
|
+
};
|
|
8
|
+
export const toUnlayerMergeTags = (tags)=>{
|
|
9
|
+
if (!(tags === null || tags === void 0 ? void 0 : tags.length)) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
return tags.reduce((out, tag)=>{
|
|
13
|
+
var _tag_group;
|
|
14
|
+
const mergeTag = {
|
|
15
|
+
name: tag.name,
|
|
16
|
+
value: tag.propertyPath
|
|
17
|
+
};
|
|
18
|
+
const groupName = (_tag_group = tag.group) === null || _tag_group === void 0 ? void 0 : _tag_group.trim();
|
|
19
|
+
if (!groupName) {
|
|
20
|
+
out[tag.id] = mergeTag;
|
|
21
|
+
return out;
|
|
22
|
+
}
|
|
23
|
+
const groupKey = toMergeTagGroupKey(groupName);
|
|
24
|
+
const existing = out[groupKey];
|
|
25
|
+
if (existing && isUnlayerMergeTagGroup(existing)) {
|
|
26
|
+
existing.mergeTags[tag.id] = mergeTag;
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
out[groupKey] = {
|
|
30
|
+
name: groupName,
|
|
31
|
+
mergeTags: {
|
|
32
|
+
[tag.id]: mergeTag
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return out;
|
|
36
|
+
}, {});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=merge-tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/merge-tags.ts"],"sourcesContent":["import { UnlayerEditorMergeTagInfo } from './unlayer-interface';\n\nexport interface UnlayerMergeTagLeaf {\n name: string;\n value: string;\n}\n\nexport interface UnlayerMergeTagGroup {\n name: string;\n mergeTags: Record<string, UnlayerMergeTagLeaf>;\n}\n\nexport type UnlayerMergeTagsConfig = Record<string, UnlayerMergeTagLeaf | UnlayerMergeTagGroup>;\n\nexport function isUnlayerMergeTagGroup(\n entry: UnlayerMergeTagLeaf | UnlayerMergeTagGroup,\n): entry is UnlayerMergeTagGroup {\n return 'mergeTags' in entry;\n}\n\nconst toMergeTagGroupKey = (groupName: string) => {\n const key = groupName\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter(Boolean)\n .join('_');\n\n return key || groupName;\n};\n\nexport const toUnlayerMergeTags = (tags: UnlayerEditorMergeTagInfo[] | undefined) => {\n if (!tags?.length) {\n return undefined;\n }\n\n return tags.reduce<UnlayerMergeTagsConfig>((out, tag) => {\n const mergeTag: UnlayerMergeTagLeaf = {\n name: tag.name,\n value: tag.propertyPath,\n };\n const groupName = tag.group?.trim();\n\n if (!groupName) {\n out[tag.id] = mergeTag;\n return out;\n }\n\n const groupKey = toMergeTagGroupKey(groupName);\n const existing = out[groupKey];\n\n if (existing && isUnlayerMergeTagGroup(existing)) {\n existing.mergeTags[tag.id] = mergeTag;\n return out;\n }\n\n out[groupKey] = {\n name: groupName,\n mergeTags: {\n [tag.id]: mergeTag,\n },\n };\n\n return out;\n }, {});\n};\n"],"names":["isUnlayerMergeTagGroup","entry","toMergeTagGroupKey","groupName","key","toLowerCase","split","filter","Boolean","join","toUnlayerMergeTags","tags","length","undefined","reduce","out","tag","mergeTag","name","value","propertyPath","group","trim","id","groupKey","existing","mergeTags"],"mappings":"AAcA,OAAO,SAASA,uBACZC,KAAiD;IAEjD,OAAO,eAAeA;AAC1B;AAEA,MAAMC,qBAAqB,CAACC;IACxB,MAAMC,MAAMD,UACPE,WAAW,GACXC,KAAK,CAAC,cACNC,MAAM,CAACC,SACPC,IAAI,CAAC;IAEV,OAAOL,OAAOD;AAClB;AAEA,OAAO,MAAMO,qBAAqB,CAACC;IAC/B,IAAI,EAACA,iBAAAA,2BAAAA,KAAMC,MAAM,GAAE;QACf,OAAOC;IACX;IAEA,OAAOF,KAAKG,MAAM,CAAyB,CAACC,KAAKC;YAK3BA;QAJlB,MAAMC,WAAgC;YAClCC,MAAMF,IAAIE,IAAI;YACdC,OAAOH,IAAII,YAAY;QAC3B;QACA,MAAMjB,aAAYa,aAAAA,IAAIK,KAAK,cAATL,iCAAAA,WAAWM,IAAI;QAEjC,IAAI,CAACnB,WAAW;YACZY,GAAG,CAACC,IAAIO,EAAE,CAAC,GAAGN;YACd,OAAOF;QACX;QAEA,MAAMS,WAAWtB,mBAAmBC;QACpC,MAAMsB,WAAWV,GAAG,CAACS,SAAS;QAE9B,IAAIC,YAAYzB,uBAAuByB,WAAW;YAC9CA,SAASC,SAAS,CAACV,IAAIO,EAAE,CAAC,GAAGN;YAC7B,OAAOF;QACX;QAEAA,GAAG,CAACS,SAAS,GAAG;YACZN,MAAMf;YACNuB,WAAW;gBACP,CAACV,IAAIO,EAAE,CAAC,EAAEN;YACd;QACJ;QAEA,OAAOF;IACX,GAAG,CAAC;AACR,EAAE"}
|
|
@@ -42,6 +42,7 @@ export interface UnlayerEditorMergeTagInfo {
|
|
|
42
42
|
id: string;
|
|
43
43
|
name: string;
|
|
44
44
|
propertyPath: string;
|
|
45
|
+
group?: string;
|
|
45
46
|
}
|
|
46
47
|
export interface UnlayerEditorCustomTool {
|
|
47
48
|
key: string;
|
|
@@ -72,7 +73,11 @@ export interface CreateUnlayerEditorProps {
|
|
|
72
73
|
hideContentControls?: boolean;
|
|
73
74
|
hideBodyMenuItem?: boolean;
|
|
74
75
|
displayConditions?: boolean;
|
|
75
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Optional portal target for the display-conditions dialog. Prefer unset so the dialog
|
|
78
|
+
* stays under the host `AnvilProvider` (`.anvil2` CSS scope). When set, content is wrapped
|
|
79
|
+
* in `ThemeProvider` so Anvil2 styles still apply after portaling.
|
|
80
|
+
*/
|
|
76
81
|
displayConditionModalPortalContainer?: Element | DocumentFragment | null;
|
|
77
82
|
enableHTMLEditing?: boolean;
|
|
78
83
|
enableHTMLEditingReadonly?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlayer-interface.d.ts","sourceRoot":"","sources":["../src/unlayer-interface.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,+BAA+B,EAC/B,iBAAiB,EACjB,iBAAiB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;CACf;AACD,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAC9D,IAAI,EAAE,MAAM,CAAC;CAChB;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;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;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;IACpD,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC9D,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"unlayer-interface.d.ts","sourceRoot":"","sources":["../src/unlayer-interface.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/unlayer-interface.tsx"],"sourcesContent":["import {\n UnlayerEditorESignRecipientInfo,\n UnlayerEditorTwin,\n UnlayerEditorUnit,\n} from './shared/const';\nimport { FormFieldInfo, FormInfo } from './shared/forms';\nimport { SchemaObject } from './shared/schema';\n\nexport interface UnlayerDesignTool {\n type: string;\n slug?: string;\n values: any;\n}\nexport interface UnlayerDesignCustomTool extends UnlayerDesignTool {\n slug: string;\n}\n\nexport interface UnlayerDesignFormat {\n body: {\n rows: {\n cells: number[];\n columns: {\n contents: UnlayerDesignTool[];\n values?: any;\n }[];\n values?: any;\n }[];\n values?: any;\n };\n counters: Record<string, number>;\n schemaVersion: number;\n}\n\nexport interface UnlayerExport {\n html: string;\n chunks: any;\n design: UnlayerDesignFormat;\n demoData?: Record<string, unknown>;\n}\n\nexport interface UnlayerRef {\n loadDesign(design: any): void;\n saveDesign(cb: (design: any) => void): void;\n exportHtml(cb: (data: UnlayerExport) => void): void;\n sendFormList(forms: FormInfo[]): void;\n sendFormFields(formId: number, fields: FormFieldInfo[]): void;\n sendCalcFieldLabels(labels: Record<string, string>): void;\n}\n\nexport interface UnlayerEditorMergeTagInfo {\n id: string;\n name: string;\n propertyPath: string;\n}\n\nexport interface UnlayerEditorCustomTool {\n key: string;\n title: string;\n description?: string;\n url: string;\n groupUrl?: string;\n}\n\nexport interface CreateUnlayerEditorProps {\n tools: UnlayerEditorCustomTool[];\n newSnapshot?: UnlayerEditorTwin;\n toolTwins?: UnlayerEditorTwin[];\n isSnapshotMode?: boolean;\n dummyData?: any;\n schema?: SchemaObject;\n customCSS?: string | string[] | undefined;\n customJS?: string | string[] | undefined;\n mergeTags?: UnlayerEditorMergeTagInfo[] | undefined;\n eSignRecipients?: UnlayerEditorESignRecipientInfo[] | undefined;\n eSignFieldTypes?: string[] | undefined;\n genericConfigMode?: boolean;\n generics?: true | string[];\n units?: UnlayerEditorUnit[];\n noCoreTools?: boolean;\n latest?: boolean;\n blocks?: boolean;\n hideAllTools?: boolean;\n hideContentControls?: boolean;\n hideBodyMenuItem?: boolean;\n displayConditions?: boolean;\n
|
|
1
|
+
{"version":3,"sources":["../src/unlayer-interface.tsx"],"sourcesContent":["import {\n UnlayerEditorESignRecipientInfo,\n UnlayerEditorTwin,\n UnlayerEditorUnit,\n} from './shared/const';\nimport { FormFieldInfo, FormInfo } from './shared/forms';\nimport { SchemaObject } from './shared/schema';\n\nexport interface UnlayerDesignTool {\n type: string;\n slug?: string;\n values: any;\n}\nexport interface UnlayerDesignCustomTool extends UnlayerDesignTool {\n slug: string;\n}\n\nexport interface UnlayerDesignFormat {\n body: {\n rows: {\n cells: number[];\n columns: {\n contents: UnlayerDesignTool[];\n values?: any;\n }[];\n values?: any;\n }[];\n values?: any;\n };\n counters: Record<string, number>;\n schemaVersion: number;\n}\n\nexport interface UnlayerExport {\n html: string;\n chunks: any;\n design: UnlayerDesignFormat;\n demoData?: Record<string, unknown>;\n}\n\nexport interface UnlayerRef {\n loadDesign(design: any): void;\n saveDesign(cb: (design: any) => void): void;\n exportHtml(cb: (data: UnlayerExport) => void): void;\n sendFormList(forms: FormInfo[]): void;\n sendFormFields(formId: number, fields: FormFieldInfo[]): void;\n sendCalcFieldLabels(labels: Record<string, string>): void;\n}\n\nexport interface UnlayerEditorMergeTagInfo {\n id: string;\n name: string;\n propertyPath: string;\n group?: string;\n}\n\nexport interface UnlayerEditorCustomTool {\n key: string;\n title: string;\n description?: string;\n url: string;\n groupUrl?: string;\n}\n\nexport interface CreateUnlayerEditorProps {\n tools: UnlayerEditorCustomTool[];\n newSnapshot?: UnlayerEditorTwin;\n toolTwins?: UnlayerEditorTwin[];\n isSnapshotMode?: boolean;\n dummyData?: any;\n schema?: SchemaObject;\n customCSS?: string | string[] | undefined;\n customJS?: string | string[] | undefined;\n mergeTags?: UnlayerEditorMergeTagInfo[] | undefined;\n eSignRecipients?: UnlayerEditorESignRecipientInfo[] | undefined;\n eSignFieldTypes?: string[] | undefined;\n genericConfigMode?: boolean;\n generics?: true | string[];\n units?: UnlayerEditorUnit[];\n noCoreTools?: boolean;\n latest?: boolean;\n blocks?: boolean;\n hideAllTools?: boolean;\n hideContentControls?: boolean;\n hideBodyMenuItem?: boolean;\n displayConditions?: boolean;\n /**\n * Optional portal target for the display-conditions dialog. Prefer unset so the dialog\n * stays under the host `AnvilProvider` (`.anvil2` CSS scope). When set, content is wrapped\n * in `ThemeProvider` so Anvil2 styles still apply after portaling.\n */\n displayConditionModalPortalContainer?: Element | DocumentFragment | null;\n enableHTMLEditing?: boolean;\n enableHTMLEditingReadonly?: boolean;\n imageValidation?: {\n maxWidth?: number;\n maxHeight?: number;\n maxFileSize?: number;\n };\n holidays?: string[];\n onFormSelect?: (formId: number) => void;\n onCalcFieldOpen?: (usedFormIds: number[]) => void;\n onCalcFieldSelect?: (fieldKeys: string[]) => void;\n onConditionalsOpen?: (\n usedFormIds: number[],\n sendFormList: (forms: FormInfo[]) => void,\n sendFormFields: (formId: number, fields: FormFieldInfo[]) => void,\n ) => void;\n onConditionFormSelect?: (\n formId: number,\n sendFormFields: (formId: number, fields: FormFieldInfo[]) => void,\n ) => void;\n}\n"],"names":[],"mappings":"AAgEA,WAgDC"}
|
package/dist/unlayer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlayer.d.ts","sourceRoot":"","sources":["../src/unlayer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unlayer.d.ts","sourceRoot":"","sources":["../src/unlayer.tsx"],"names":[],"mappings":"AAUA,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;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;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,GAAI,mBAAmB,MAAM,WAO5D,CAAC;AAEF,eAAO,MAAM,2BAA2B,cAUvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,cAMnC,CAAC;AAyBF,eAAO,MAAM,uBAAuB,cAQnC,CAAC;AACF,eAAO,MAAM,gBAAgB,cAiC5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC5B,WAAW,cAAc,EACzB,gOAgBG,wBAAwB,KAC5B,OA6KF,CAAC"}
|
package/dist/unlayer.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { emitDisplayCondition } from './display-conditions/displayConditionController';
|
|
2
2
|
import { editorCoreScript, editorCoreStyles, editorCoreTools } from './editor-core';
|
|
3
|
+
import { toUnlayerMergeTags } from './merge-tags';
|
|
3
4
|
import { constGenericsEditor } from './shared/const';
|
|
4
5
|
import { unlayerSupportedFonts } from './shared/fonts';
|
|
5
6
|
import { unlayerCustomEmptyToolState, unlayerCustomToolMetaData, unlayerCustomToolsGetRegisterUrls } from './tools';
|
|
@@ -218,13 +219,7 @@ export const createUnlayerEditor = (container, { customCSS, customJS, displayCon
|
|
|
218
219
|
tables: true
|
|
219
220
|
}
|
|
220
221
|
},
|
|
221
|
-
mergeTags: mergeTags
|
|
222
|
-
out[tag.id] = {
|
|
223
|
-
name: tag.name,
|
|
224
|
-
value: tag.propertyPath
|
|
225
|
-
};
|
|
226
|
-
return out;
|
|
227
|
-
}, {}),
|
|
222
|
+
mergeTags: toUnlayerMergeTags(mergeTags),
|
|
228
223
|
projectId: 5713,
|
|
229
224
|
version: latest ? undefined : versions.unlayer,
|
|
230
225
|
appearance: {
|
package/dist/unlayer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/unlayer.tsx"],"sourcesContent":["import { emitDisplayCondition } from './display-conditions/displayConditionController';\nimport { editorCoreScript, editorCoreStyles, editorCoreTools } from './editor-core';\nimport { constGenericsEditor } from './shared/const';\nimport { unlayerSupportedFonts } from './shared/fonts';\nimport {\n unlayerCustomEmptyToolState,\n unlayerCustomToolMetaData,\n unlayerCustomToolsGetRegisterUrls,\n} from './tools';\nimport { CreateUnlayerEditorProps } from './unlayer-interface';\n\nexport interface UnlayerExport {\n html: string;\n chunks: any;\n design: any;\n demoData?: Record<string, unknown>;\n}\n\nexport interface Unlayer {\n addEventListener(event: string, cb: (arg: any) => void): void;\n removeEventListener(event: string, cb: (arg: any) => void): void;\n registerCallback(type: string, cb: (...args: any[]) => void): void;\n unregisterCallback(type: string, cb: (...args: any[]) => void): void;\n registerProvider(type: string, cb: (...args: any[]) => void): void;\n unregisterProvider(type: string, cb: (...args: any[]) => void): void;\n loadDesign(design: any): void;\n saveDesign(callback: (design: any) => void): void;\n exportHtml(callback: (data: UnlayerExport) => void): void;\n setMergeTags(tags: any): void;\n createViewer(opts: { render: (values: any) => string }): any;\n registerTool(tool: any): void;\n setBodyValues(values: any): void;\n}\n\nexport enum DesignUpdatedEventType {\n ContentAdded = 'content:added',\n ContentMoved = 'content:moved',\n ContentRemoved = 'content:removed',\n ContentModified = 'content:modified',\n RowAdded = 'row:added',\n RowMoved = 'row:moved',\n RowRemoved = 'row:removed',\n RowModified = 'row:modified',\n ColumnAdded = 'column:added',\n ColumnRemoved = 'column:removed',\n ColumnModified = 'column:modified',\n BodyModified = 'body:modified',\n}\n\nexport interface EventDesignUpdated {\n type: DesignUpdatedEventType;\n item: {\n type: string;\n slug?: string;\n values: any;\n };\n}\n\n/**\n * !!! IMPORTANT !!!\n * do not forget to update schema version when updating unlayer version\n * it is important for templates export and should be in sync\n * to know correct schema version, open unlayer editor and check output design ('schema' property)\n */\nexport const versions = {\n unlayer: '1.421.0',\n schema: 24,\n};\n\nexport const handlePreselectTool = (preselectToolSlug: string) => {\n return `\n const element = document.querySelector('.u_content_custom_${preselectToolSlug}');\n if (element) {\n element.click();\n }\n `;\n};\n\nexport const hideUnlayerContentsControls = () => {\n return `\n .blockbuilder-layer-controls-contents, .blockbuilder-layer-controls-rows {\n display: none !important;\n }\n\n .blockbuilder-options-header .text-right .icon-delete, .blockbuilder-options-header .text-right .icon-duplicate {\n display: none !important;\n }\n `;\n};\n\nexport const hideUnlayerBodyMenuItem = () => {\n return `\n .nav-item.tab-body {\n display: none !important;\n }\n `;\n};\n\nconst injectEditorCoreStyles = () => {\n const cssText = editorCoreStyles?.trim();\n\n if (!cssText) {\n return '';\n }\n\n return `\n (function () {\n var css = ${JSON.stringify(cssText)};\n var id = 'dte-unlayer-core-styles';\n if (document.getElementById(id)) {\n return;\n }\n var style = document.createElement('style');\n style.id = id;\n style.type = 'text/css';\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n })();\n `;\n};\n\nexport const hideMobileTabletPreview = () => `\n [data-key=\"preview-tablet\"],\n [data-key=\"resolution\"],\n [data-key=\"dark-mode\"],\n [data-key=\"preview-desktop\"],\n [data-key=\"preview-mobile\"] {\n display: none !important;\n }\n`;\nexport const hideUnlayerTools = () => {\n return `\n .blockbuilder-content-tools {\n display: none !important;\n }\n \n .unlayer-custom-empty-tool-state {\n display: flex;\n margin-top: 150px;\n flex-direction: column;\n justify-content: center;\n }\n \n .unlayer-custom-empty-tool-state-icon {\n text-align: center;\n margin-bottom: 12px;\n }\n \n .unlayer-custom-empty-tool-state-icon svg{\n color: #606162;\n }\n \n .unlayer-custom-empty-tool-state-text {\n text-align: center;\n font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 500;\n line-height: normal;\n color: #606162;\n line-height: 13px;\n }\n `;\n};\n\nexport const createUnlayerEditor = (\n container: HTMLDivElement,\n {\n customCSS,\n customJS,\n displayConditions,\n eSignFieldTypes,\n eSignRecipients,\n enableHTMLEditing,\n enableHTMLEditingReadonly,\n hideAllTools,\n hideBodyMenuItem,\n hideContentControls,\n latest,\n mergeTags,\n noCoreTools,\n tools,\n units,\n }: CreateUnlayerEditorProps,\n): Unlayer => {\n const customScripts = [\n editorCoreScript,\n editorCoreTools,\n injectEditorCoreStyles(),\n 'window.dteStore.sendData(\"--core-loaded\")',\n ...unlayerCustomToolsGetRegisterUrls(tools),\n unlayerCustomToolMetaData(tools),\n ...(customJS ? (Array.isArray(customJS) ? customJS : [customJS]) : []),\n hideAllTools ? unlayerCustomEmptyToolState() : '',\n 'window.dteStore.sendData(\"--data-loaded\")',\n ].filter(js => !!js?.trim());\n const customStyles = [\n editorCoreStyles,\n ...(customCSS ? (Array.isArray(customCSS) ? customCSS : [customCSS]) : []),\n /*\n * @TODO this is workaround for hiding all tools from unlayer sidebar.\n * Will be better to use unlayer functionality for this but it is not implemented yet\n */\n hideMobileTabletPreview(),\n hideAllTools ? hideUnlayerTools() : '',\n hideContentControls ? hideUnlayerContentsControls() : '',\n hideBodyMenuItem ? hideUnlayerBodyMenuItem() : '',\n ].filter(css => !!css?.trim());\n\n /**\n * Unlayer supports only passing id of container, but when we use shadowDOM (MFE),\n * getElementById can't find element in it\n * so making this dirty hack to let unlayer find container in DOM\n */\n const id = container.id;\n const currentFind = document.getElementById;\n document.getElementById = function (elementId: string) {\n if (id === elementId) {\n return container;\n }\n\n return currentFind.call(document, id);\n };\n\n const acv = constGenericsEditor.adminConfigProperty;\n\n const eSignTypeMapping = (eSignFieldTypes ?? []).map(key => ({\n label: key,\n value: key.charAt(0).toLowerCase() + key.replace(/ /g, '').slice(1),\n }));\n\n const unitsConfig = (units ?? []).reduce(\n (out, unit) => {\n out[`custom#${unit.generic}:unit:${unit.id}`] = {\n data: {\n [acv]: unit.values[acv],\n },\n properties: {\n [constGenericsEditor.userConfigProperty]: {\n editor: {\n data: { [acv]: unit.values[acv] },\n },\n },\n [constGenericsEditor.infoDataProperty]: {\n editor: {\n data: { title: unit.title },\n },\n },\n },\n };\n return out;\n },\n {} as Record<string, any>,\n );\n\n const eSignComponentRecipients = {\n properties: {\n eSignRecipient: {\n editor: {\n data: {\n options: eSignRecipients?.map(item => ({\n label: item.displayName,\n value: item.name,\n })),\n },\n },\n },\n eSignFieldType: {\n editor: {\n data: {\n options: eSignTypeMapping,\n },\n },\n },\n },\n };\n\n const result = (window as any).unlayer.createEditor({\n displayMode: 'web',\n devices: ['desktop'],\n features: {\n preview: true,\n userUploads: false,\n stockImages: false,\n textEditor: {\n tables: true,\n },\n },\n mergeTags: mergeTags?.reduce(\n (out, tag) => {\n out[tag.id] = { name: tag.name, value: tag.propertyPath };\n\n return out;\n },\n {} as Record<string, { name: string; value: string }>,\n ),\n projectId: 5713,\n version: latest ? undefined : versions.unlayer,\n appearance: {\n theme: 'classic_light',\n },\n tools: {\n 'carousel': { enabled: false },\n 'button': { enabled: false },\n 'html': {\n enabled: enableHTMLEditing,\n properties: {\n html: {\n editor: {\n widgetParams: {\n codeMirrorOptions: {\n readOnly: enableHTMLEditingReadonly,\n },\n },\n },\n },\n },\n },\n 'table': {\n enabled: true,\n },\n 'menu': { enabled: false },\n 'form': { enabled: false },\n ...(noCoreTools\n ? {\n columns: { enabled: false },\n text: { enabled: false },\n heading: { enabled: false },\n divider: { enabled: false },\n image: { enabled: false },\n }\n : {}),\n ...unitsConfig,\n 'custom#e-sign': eSignComponentRecipients,\n },\n editor: {\n autoSelectOnDrop: true,\n },\n customJS: customScripts,\n customCSS: customStyles,\n id,\n fonts: {\n showDefaultFonts: false,\n customFonts: unlayerSupportedFonts,\n },\n tabs: {\n content: {},\n body: {},\n blocks: { enabled: false },\n },\n });\n\n document.getElementById = currentFind;\n\n if (displayConditions) {\n result.registerCallback(\n 'displayCondition',\n function (data: any, done: (condition: any) => void) {\n emitDisplayCondition({ data, done });\n },\n );\n }\n\n return result;\n};\n"],"names":["emitDisplayCondition","editorCoreScript","editorCoreStyles","editorCoreTools","constGenericsEditor","unlayerSupportedFonts","unlayerCustomEmptyToolState","unlayerCustomToolMetaData","unlayerCustomToolsGetRegisterUrls","DesignUpdatedEventType","versions","unlayer","schema","handlePreselectTool","preselectToolSlug","hideUnlayerContentsControls","hideUnlayerBodyMenuItem","injectEditorCoreStyles","cssText","trim","JSON","stringify","hideMobileTabletPreview","hideUnlayerTools","createUnlayerEditor","container","customCSS","customJS","displayConditions","eSignFieldTypes","eSignRecipients","enableHTMLEditing","enableHTMLEditingReadonly","hideAllTools","hideBodyMenuItem","hideContentControls","latest","mergeTags","noCoreTools","tools","units","customScripts","Array","isArray","filter","js","customStyles","css","id","currentFind","document","getElementById","elementId","call","acv","adminConfigProperty","eSignTypeMapping","map","key","label","value","charAt","toLowerCase","replace","slice","unitsConfig","reduce","out","unit","generic","data","values","properties","userConfigProperty","editor","infoDataProperty","title","eSignComponentRecipients","eSignRecipient","options","item","displayName","name","eSignFieldType","result","window","createEditor","displayMode","devices","features","preview","userUploads","stockImages","textEditor","tables","tag","propertyPath","projectId","version","undefined","appearance","theme","enabled","html","widgetParams","codeMirrorOptions","readOnly","columns","text","heading","divider","image","autoSelectOnDrop","fonts","showDefaultFonts","customFonts","tabs","content","body","blocks","registerCallback","done"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/unlayer.tsx"],"sourcesContent":["import { emitDisplayCondition } from './display-conditions/displayConditionController';\nimport { editorCoreScript, editorCoreStyles, editorCoreTools } from './editor-core';\nimport { toUnlayerMergeTags } from './merge-tags';\nimport { constGenericsEditor } from './shared/const';\nimport { unlayerSupportedFonts } from './shared/fonts';\nimport {\n unlayerCustomEmptyToolState,\n unlayerCustomToolMetaData,\n unlayerCustomToolsGetRegisterUrls,\n} from './tools';\nimport { CreateUnlayerEditorProps } from './unlayer-interface';\n\nexport interface UnlayerExport {\n html: string;\n chunks: any;\n design: any;\n demoData?: Record<string, unknown>;\n}\n\nexport interface Unlayer {\n addEventListener(event: string, cb: (arg: any) => void): void;\n removeEventListener(event: string, cb: (arg: any) => void): void;\n registerCallback(type: string, cb: (...args: any[]) => void): void;\n unregisterCallback(type: string, cb: (...args: any[]) => void): void;\n registerProvider(type: string, cb: (...args: any[]) => void): void;\n unregisterProvider(type: string, cb: (...args: any[]) => void): void;\n loadDesign(design: any): void;\n saveDesign(callback: (design: any) => void): void;\n exportHtml(callback: (data: UnlayerExport) => void): void;\n setMergeTags(tags: any): void;\n createViewer(opts: { render: (values: any) => string }): any;\n registerTool(tool: any): void;\n setBodyValues(values: any): void;\n}\n\nexport enum DesignUpdatedEventType {\n ContentAdded = 'content:added',\n ContentMoved = 'content:moved',\n ContentRemoved = 'content:removed',\n ContentModified = 'content:modified',\n RowAdded = 'row:added',\n RowMoved = 'row:moved',\n RowRemoved = 'row:removed',\n RowModified = 'row:modified',\n ColumnAdded = 'column:added',\n ColumnRemoved = 'column:removed',\n ColumnModified = 'column:modified',\n BodyModified = 'body:modified',\n}\n\nexport interface EventDesignUpdated {\n type: DesignUpdatedEventType;\n item: {\n type: string;\n slug?: string;\n values: any;\n };\n}\n\n/**\n * !!! IMPORTANT !!!\n * do not forget to update schema version when updating unlayer version\n * it is important for templates export and should be in sync\n * to know correct schema version, open unlayer editor and check output design ('schema' property)\n */\nexport const versions = {\n unlayer: '1.421.0',\n schema: 24,\n};\n\nexport const handlePreselectTool = (preselectToolSlug: string) => {\n return `\n const element = document.querySelector('.u_content_custom_${preselectToolSlug}');\n if (element) {\n element.click();\n }\n `;\n};\n\nexport const hideUnlayerContentsControls = () => {\n return `\n .blockbuilder-layer-controls-contents, .blockbuilder-layer-controls-rows {\n display: none !important;\n }\n\n .blockbuilder-options-header .text-right .icon-delete, .blockbuilder-options-header .text-right .icon-duplicate {\n display: none !important;\n }\n `;\n};\n\nexport const hideUnlayerBodyMenuItem = () => {\n return `\n .nav-item.tab-body {\n display: none !important;\n }\n `;\n};\n\nconst injectEditorCoreStyles = () => {\n const cssText = editorCoreStyles?.trim();\n\n if (!cssText) {\n return '';\n }\n\n return `\n (function () {\n var css = ${JSON.stringify(cssText)};\n var id = 'dte-unlayer-core-styles';\n if (document.getElementById(id)) {\n return;\n }\n var style = document.createElement('style');\n style.id = id;\n style.type = 'text/css';\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n })();\n `;\n};\n\nexport const hideMobileTabletPreview = () => `\n [data-key=\"preview-tablet\"],\n [data-key=\"resolution\"],\n [data-key=\"dark-mode\"],\n [data-key=\"preview-desktop\"],\n [data-key=\"preview-mobile\"] {\n display: none !important;\n }\n`;\nexport const hideUnlayerTools = () => {\n return `\n .blockbuilder-content-tools {\n display: none !important;\n }\n \n .unlayer-custom-empty-tool-state {\n display: flex;\n margin-top: 150px;\n flex-direction: column;\n justify-content: center;\n }\n \n .unlayer-custom-empty-tool-state-icon {\n text-align: center;\n margin-bottom: 12px;\n }\n \n .unlayer-custom-empty-tool-state-icon svg{\n color: #606162;\n }\n \n .unlayer-custom-empty-tool-state-text {\n text-align: center;\n font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 500;\n line-height: normal;\n color: #606162;\n line-height: 13px;\n }\n `;\n};\n\nexport const createUnlayerEditor = (\n container: HTMLDivElement,\n {\n customCSS,\n customJS,\n displayConditions,\n eSignFieldTypes,\n eSignRecipients,\n enableHTMLEditing,\n enableHTMLEditingReadonly,\n hideAllTools,\n hideBodyMenuItem,\n hideContentControls,\n latest,\n mergeTags,\n noCoreTools,\n tools,\n units,\n }: CreateUnlayerEditorProps,\n): Unlayer => {\n const customScripts = [\n editorCoreScript,\n editorCoreTools,\n injectEditorCoreStyles(),\n 'window.dteStore.sendData(\"--core-loaded\")',\n ...unlayerCustomToolsGetRegisterUrls(tools),\n unlayerCustomToolMetaData(tools),\n ...(customJS ? (Array.isArray(customJS) ? customJS : [customJS]) : []),\n hideAllTools ? unlayerCustomEmptyToolState() : '',\n 'window.dteStore.sendData(\"--data-loaded\")',\n ].filter(js => !!js?.trim());\n const customStyles = [\n editorCoreStyles,\n ...(customCSS ? (Array.isArray(customCSS) ? customCSS : [customCSS]) : []),\n /*\n * @TODO this is workaround for hiding all tools from unlayer sidebar.\n * Will be better to use unlayer functionality for this but it is not implemented yet\n */\n hideMobileTabletPreview(),\n hideAllTools ? hideUnlayerTools() : '',\n hideContentControls ? hideUnlayerContentsControls() : '',\n hideBodyMenuItem ? hideUnlayerBodyMenuItem() : '',\n ].filter(css => !!css?.trim());\n\n /**\n * Unlayer supports only passing id of container, but when we use shadowDOM (MFE),\n * getElementById can't find element in it\n * so making this dirty hack to let unlayer find container in DOM\n */\n const id = container.id;\n const currentFind = document.getElementById;\n document.getElementById = function (elementId: string) {\n if (id === elementId) {\n return container;\n }\n\n return currentFind.call(document, id);\n };\n\n const acv = constGenericsEditor.adminConfigProperty;\n\n const eSignTypeMapping = (eSignFieldTypes ?? []).map(key => ({\n label: key,\n value: key.charAt(0).toLowerCase() + key.replace(/ /g, '').slice(1),\n }));\n\n const unitsConfig = (units ?? []).reduce(\n (out, unit) => {\n out[`custom#${unit.generic}:unit:${unit.id}`] = {\n data: {\n [acv]: unit.values[acv],\n },\n properties: {\n [constGenericsEditor.userConfigProperty]: {\n editor: {\n data: { [acv]: unit.values[acv] },\n },\n },\n [constGenericsEditor.infoDataProperty]: {\n editor: {\n data: { title: unit.title },\n },\n },\n },\n };\n return out;\n },\n {} as Record<string, any>,\n );\n\n const eSignComponentRecipients = {\n properties: {\n eSignRecipient: {\n editor: {\n data: {\n options: eSignRecipients?.map(item => ({\n label: item.displayName,\n value: item.name,\n })),\n },\n },\n },\n eSignFieldType: {\n editor: {\n data: {\n options: eSignTypeMapping,\n },\n },\n },\n },\n };\n\n const result = (window as any).unlayer.createEditor({\n displayMode: 'web',\n devices: ['desktop'],\n features: {\n preview: true,\n userUploads: false,\n stockImages: false,\n textEditor: {\n tables: true,\n },\n },\n mergeTags: toUnlayerMergeTags(mergeTags),\n projectId: 5713,\n version: latest ? undefined : versions.unlayer,\n appearance: {\n theme: 'classic_light',\n },\n tools: {\n 'carousel': { enabled: false },\n 'button': { enabled: false },\n 'html': {\n enabled: enableHTMLEditing,\n properties: {\n html: {\n editor: {\n widgetParams: {\n codeMirrorOptions: {\n readOnly: enableHTMLEditingReadonly,\n },\n },\n },\n },\n },\n },\n 'table': {\n enabled: true,\n },\n 'menu': { enabled: false },\n 'form': { enabled: false },\n ...(noCoreTools\n ? {\n columns: { enabled: false },\n text: { enabled: false },\n heading: { enabled: false },\n divider: { enabled: false },\n image: { enabled: false },\n }\n : {}),\n ...unitsConfig,\n 'custom#e-sign': eSignComponentRecipients,\n },\n editor: {\n autoSelectOnDrop: true,\n },\n customJS: customScripts,\n customCSS: customStyles,\n id,\n fonts: {\n showDefaultFonts: false,\n customFonts: unlayerSupportedFonts,\n },\n tabs: {\n content: {},\n body: {},\n blocks: { enabled: false },\n },\n });\n\n document.getElementById = currentFind;\n\n if (displayConditions) {\n result.registerCallback(\n 'displayCondition',\n function (data: any, done: (condition: any) => void) {\n emitDisplayCondition({ data, done });\n },\n );\n }\n\n return result;\n};\n"],"names":["emitDisplayCondition","editorCoreScript","editorCoreStyles","editorCoreTools","toUnlayerMergeTags","constGenericsEditor","unlayerSupportedFonts","unlayerCustomEmptyToolState","unlayerCustomToolMetaData","unlayerCustomToolsGetRegisterUrls","DesignUpdatedEventType","versions","unlayer","schema","handlePreselectTool","preselectToolSlug","hideUnlayerContentsControls","hideUnlayerBodyMenuItem","injectEditorCoreStyles","cssText","trim","JSON","stringify","hideMobileTabletPreview","hideUnlayerTools","createUnlayerEditor","container","customCSS","customJS","displayConditions","eSignFieldTypes","eSignRecipients","enableHTMLEditing","enableHTMLEditingReadonly","hideAllTools","hideBodyMenuItem","hideContentControls","latest","mergeTags","noCoreTools","tools","units","customScripts","Array","isArray","filter","js","customStyles","css","id","currentFind","document","getElementById","elementId","call","acv","adminConfigProperty","eSignTypeMapping","map","key","label","value","charAt","toLowerCase","replace","slice","unitsConfig","reduce","out","unit","generic","data","values","properties","userConfigProperty","editor","infoDataProperty","title","eSignComponentRecipients","eSignRecipient","options","item","displayName","name","eSignFieldType","result","window","createEditor","displayMode","devices","features","preview","userUploads","stockImages","textEditor","tables","projectId","version","undefined","appearance","theme","enabled","html","widgetParams","codeMirrorOptions","readOnly","columns","text","heading","divider","image","autoSelectOnDrop","fonts","showDefaultFonts","customFonts","tabs","content","body","blocks","registerCallback","done"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { toUnlayerMergeTags } from '../merge-tags';
|
|
2
|
+
|
|
3
|
+
const customerNameTag = {
|
|
4
|
+
id: '10',
|
|
5
|
+
name: 'Customer Name',
|
|
6
|
+
propertyPath: '{{Customer.Name | safe | nl2br }}',
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const contractTermTag = {
|
|
10
|
+
id: 'custom-field-12345',
|
|
11
|
+
name: 'Contract Term',
|
|
12
|
+
propertyPath: '{{ __custom_fields["Contract Term"] | safe | nl2br }}',
|
|
13
|
+
group: 'Custom Fields',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const renewalDateTag = {
|
|
17
|
+
id: 'custom-field-12346',
|
|
18
|
+
name: 'Renewal Date',
|
|
19
|
+
propertyPath: '{{ __custom_fields["Renewal Date"] | safe | nl2br }}',
|
|
20
|
+
group: 'Custom Fields',
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
describe('toUnlayerMergeTags', () => {
|
|
24
|
+
describe('when tags are missing', () => {
|
|
25
|
+
test.each([undefined, []])('returns undefined for %p', tags => {
|
|
26
|
+
const subject = () => toUnlayerMergeTags(tags);
|
|
27
|
+
|
|
28
|
+
expect(subject()).toBeUndefined();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('when tags have no group', () => {
|
|
33
|
+
const subject = () => toUnlayerMergeTags([customerNameTag]);
|
|
34
|
+
|
|
35
|
+
test('returns flat merge tags', () => {
|
|
36
|
+
expect(subject()).toEqual({
|
|
37
|
+
'10': {
|
|
38
|
+
name: 'Customer Name',
|
|
39
|
+
value: '{{Customer.Name | safe | nl2br }}',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
describe('when tags have a group', () => {
|
|
46
|
+
const subject = () => toUnlayerMergeTags([contractTermTag, renewalDateTag]);
|
|
47
|
+
|
|
48
|
+
test('nests tags under a submenu named by the host group', () => {
|
|
49
|
+
expect(subject()).toEqual({
|
|
50
|
+
custom_fields: {
|
|
51
|
+
name: 'Custom Fields',
|
|
52
|
+
mergeTags: {
|
|
53
|
+
'custom-field-12345': {
|
|
54
|
+
name: 'Contract Term',
|
|
55
|
+
value: '{{ __custom_fields["Contract Term"] | safe | nl2br }}',
|
|
56
|
+
},
|
|
57
|
+
'custom-field-12346': {
|
|
58
|
+
name: 'Renewal Date',
|
|
59
|
+
value: '{{ __custom_fields["Renewal Date"] | safe | nl2br }}',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
describe('when tags mix grouped and ungrouped', () => {
|
|
68
|
+
const subject = () => toUnlayerMergeTags([customerNameTag, contractTermTag]);
|
|
69
|
+
|
|
70
|
+
test('keeps ungrouped tags flat and grouped tags nested', () => {
|
|
71
|
+
expect(subject()).toEqual({
|
|
72
|
+
'10': {
|
|
73
|
+
name: 'Customer Name',
|
|
74
|
+
value: '{{Customer.Name | safe | nl2br }}',
|
|
75
|
+
},
|
|
76
|
+
custom_fields: {
|
|
77
|
+
name: 'Custom Fields',
|
|
78
|
+
mergeTags: {
|
|
79
|
+
'custom-field-12345': {
|
|
80
|
+
name: 'Contract Term',
|
|
81
|
+
value: '{{ __custom_fields["Contract Term"] | safe | nl2br }}',
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
describe('when tags use more than one group', () => {
|
|
90
|
+
const subject = () =>
|
|
91
|
+
toUnlayerMergeTags([
|
|
92
|
+
contractTermTag,
|
|
93
|
+
{
|
|
94
|
+
id: 'street',
|
|
95
|
+
name: 'Street 1',
|
|
96
|
+
propertyPath: '{{shipping_address.address_1}}',
|
|
97
|
+
group: 'Shipping Address',
|
|
98
|
+
},
|
|
99
|
+
]);
|
|
100
|
+
|
|
101
|
+
test('creates a submenu per host group label', () => {
|
|
102
|
+
expect(subject()).toEqual({
|
|
103
|
+
custom_fields: {
|
|
104
|
+
name: 'Custom Fields',
|
|
105
|
+
mergeTags: {
|
|
106
|
+
'custom-field-12345': {
|
|
107
|
+
name: 'Contract Term',
|
|
108
|
+
value: '{{ __custom_fields["Contract Term"] | safe | nl2br }}',
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
shipping_address: {
|
|
113
|
+
name: 'Shipping Address',
|
|
114
|
+
mergeTags: {
|
|
115
|
+
street: {
|
|
116
|
+
name: 'Street 1',
|
|
117
|
+
value: '{{shipping_address.address_1}}',
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
describe('when group is blank', () => {
|
|
126
|
+
const subject = () =>
|
|
127
|
+
toUnlayerMergeTags([
|
|
128
|
+
{
|
|
129
|
+
...customerNameTag,
|
|
130
|
+
group: ' ',
|
|
131
|
+
},
|
|
132
|
+
]);
|
|
133
|
+
|
|
134
|
+
test('treats the tag as ungrouped', () => {
|
|
135
|
+
expect(subject()).toEqual({
|
|
136
|
+
'10': {
|
|
137
|
+
name: 'Customer Name',
|
|
138
|
+
value: '{{Customer.Name | safe | nl2br }}',
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
});
|