@servicetitan/dte-unlayer 0.144.0 → 0.146.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/api-core.js +2 -2
- package/dist/api-core.js.map +1 -1
- package/dist/display-conditions/ConditionRow.js +25 -29
- package/dist/display-conditions/ConditionRow.js.map +1 -1
- package/dist/display-conditions/DisplayConditionModal.js +6 -6
- package/dist/display-conditions/DisplayConditionModal.js.map +1 -1
- package/dist/display-conditions/LookupValueControl.d.ts.map +1 -1
- package/dist/display-conditions/LookupValueControl.js +16 -1
- package/dist/display-conditions/LookupValueControl.js.map +1 -1
- package/dist/display-conditions/nunjucks.js +8 -8
- package/dist/display-conditions/nunjucks.js.map +1 -1
- package/dist/editor-core-source.d.ts +2 -2
- package/dist/editor-core-source.d.ts.map +1 -1
- package/dist/editor-core-source.js +2 -2
- package/dist/editor-core-source.js.map +1 -1
- package/dist/editor.js +1 -1
- package/dist/editor.js.map +1 -1
- package/dist/shared/forms.js.map +1 -1
- package/dist/shared/schema.js +1 -1
- package/dist/shared/schema.js.map +1 -1
- package/dist/shared/tools.js.map +1 -1
- package/dist/store.js +13 -15
- package/dist/store.js.map +1 -1
- package/dist/tools.js +6 -6
- package/dist/tools.js.map +1 -1
- package/dist/unlayer.js.map +1 -1
- package/package.json +2 -2
- package/src/display-conditions/LookupValueControl.tsx +15 -0
- package/src/editor-core-source.ts +2 -2
package/dist/editor.js
CHANGED
|
@@ -4,6 +4,7 @@ import { DisplayConditionModal } from './display-conditions/DisplayConditionModa
|
|
|
4
4
|
import { UnlayerStore } from './store';
|
|
5
5
|
export const useUnlayerRef = ()=>useRef(null);
|
|
6
6
|
export const UnlayerEditor = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
7
|
+
var _props_id;
|
|
7
8
|
const [isReady, setIsReady] = useState(false);
|
|
8
9
|
const containerRef = useRef(null);
|
|
9
10
|
const store = useMemo(()=>new UnlayerStore(props.opts), // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -100,7 +101,6 @@ export const UnlayerEditor = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
100
101
|
store
|
|
101
102
|
]);
|
|
102
103
|
const { minHeight = 800, style = {} } = props;
|
|
103
|
-
var _props_id;
|
|
104
104
|
return /*#__PURE__*/ _jsxs("div", {
|
|
105
105
|
style: {
|
|
106
106
|
minHeight,
|
package/dist/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/editor.tsx"],"sourcesContent":["import {\n CSSProperties,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { DisplayConditionModal } from './display-conditions/DisplayConditionModal';\nimport { UnlayerEditorTwin } from './shared/const';\nimport { UnlayerStore, UnlayerDesignChangeInfo } from './store';\nimport { UnlayerRef, CreateUnlayerEditorProps } from './unlayer-interface';\n\nexport interface UnlayerEditorProps {\n id?: string;\n design?: any;\n opts: CreateUnlayerEditorProps;\n minHeight?: number;\n style?: CSSProperties;\n\n onReady?(): void;\n\n onChange?(info: UnlayerDesignChangeInfo): void;\n\n onSnapshotSave?(tool: UnlayerEditorTwin): void;\n\n onImage?(file: File): Promise<{ url: string }>;\n\n onError?(title: string, description?: string): void;\n\n onMessage?(type: string, data: any): void;\n}\n\nexport const useUnlayerRef = () => useRef<UnlayerRef | null>(null);\n\nexport const UnlayerEditor = forwardRef<UnlayerRef, UnlayerEditorProps>((props, ref) => {\n const [isReady, setIsReady] = useState(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const store = useMemo(\n () => new UnlayerStore(props.opts),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n useEffect(() => {\n if (containerRef.current) {\n store\n .init(containerRef.current)\n .then(() => setIsReady(true))\n .catch(() => setIsReady(false));\n }\n\n return () => store.destroy();\n }, [store]);\n useImperativeHandle(ref, () => store.unlayerRef, [store]);\n\n useEffect(() => {\n if (isReady) {\n store.setDesign(props.design);\n }\n }, [isReady, props.design, store]);\n\n useEffect(() => {\n store.setOnChange(props.onChange);\n\n return () => store.setOnChange();\n }, [props.onChange, store]);\n\n useEffect(() => {\n store.setOnSnapshotSave(props.onSnapshotSave);\n\n return () => store.setOnSnapshotSave();\n }, [props.onSnapshotSave, store]);\n\n useEffect(() => {\n if (props.opts.newSnapshot) {\n store.addTwin(props.opts.newSnapshot);\n }\n }, [props.opts.newSnapshot, store]);\n\n useEffect(() => {\n store.setOnReady(props.onReady);\n\n return () => store.setOnReady();\n }, [props.onReady, store]);\n\n useEffect(() => {\n store.setOnImage(props.onImage);\n\n return () => store.setOnImage();\n }, [props.onImage, store]);\n\n useEffect(() => {\n store.setOnError(props.onError);\n\n return () => store.setOnError();\n }, [props.onError, store]);\n\n useEffect(() => {\n store.setOnMessage(props.onMessage);\n\n return () => store.setOnMessage();\n }, [props.onMessage, store]);\n\n useEffect(() => {\n store.setOnFormSelect(props.opts.onFormSelect);\n\n return () => store.setOnFormSelect();\n }, [props.opts.onFormSelect, store]);\n\n useEffect(() => {\n store.setOnCalcFieldOpen(props.opts.onCalcFieldOpen);\n\n return () => store.setOnCalcFieldOpen();\n }, [props.opts.onCalcFieldOpen, store]);\n\n useEffect(() => {\n store.setOnCalcFieldSelect(props.opts.onCalcFieldSelect);\n\n return () => store.setOnCalcFieldSelect();\n }, [props.opts.onCalcFieldSelect, store]);\n\n const { minHeight = 800, style = {} } = props;\n\n return (\n <div style={{ minHeight, display: 'flex' }}>\n {!isReady && <p className=\"c-red-500\">error loading editor</p>}\n <div id={props.id ?? 'editor'} style={style} ref={containerRef} />\n {props.opts.displayConditions && (\n <DisplayConditionModal\n portalContainer={props.opts.displayConditionModalPortalContainer}\n schema={props.opts.schema}\n onConditionalsOpen={props.opts.onConditionalsOpen}\n onConditionFormSelect={props.opts.onConditionFormSelect}\n />\n )}\n </div>\n );\n});\n"],"names":["forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","DisplayConditionModal","UnlayerStore","useUnlayerRef","UnlayerEditor","props","ref","isReady","setIsReady","containerRef","store","opts","current","init","then","catch","destroy","unlayerRef","setDesign","design","setOnChange","onChange","setOnSnapshotSave","onSnapshotSave","newSnapshot","addTwin","setOnReady","onReady","setOnImage","onImage","setOnError","onError","setOnMessage","onMessage","setOnFormSelect","onFormSelect","setOnCalcFieldOpen","onCalcFieldOpen","setOnCalcFieldSelect","onCalcFieldSelect","minHeight","style","div","display","p","className","id","displayConditions","portalContainer","displayConditionModalPortalContainer","schema","onConditionalsOpen","onConditionFormSelect"],"mappings":";AAAA,SAEIA,UAAU,EACVC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,QAAQ;AACf,SAASC,qBAAqB,QAAQ,6CAA6C;AAEnF,SAASC,YAAY,QAAiC,UAAU;AAuBhE,OAAO,MAAMC,gBAAgB,IAAMJ,OAA0B,MAAM;AAEnE,OAAO,MAAMK,8BAAgBT,WAA2C,CAACU,OAAOC;
|
|
1
|
+
{"version":3,"sources":["../src/editor.tsx"],"sourcesContent":["import {\n CSSProperties,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { DisplayConditionModal } from './display-conditions/DisplayConditionModal';\nimport { UnlayerEditorTwin } from './shared/const';\nimport { UnlayerStore, UnlayerDesignChangeInfo } from './store';\nimport { UnlayerRef, CreateUnlayerEditorProps } from './unlayer-interface';\n\nexport interface UnlayerEditorProps {\n id?: string;\n design?: any;\n opts: CreateUnlayerEditorProps;\n minHeight?: number;\n style?: CSSProperties;\n\n onReady?(): void;\n\n onChange?(info: UnlayerDesignChangeInfo): void;\n\n onSnapshotSave?(tool: UnlayerEditorTwin): void;\n\n onImage?(file: File): Promise<{ url: string }>;\n\n onError?(title: string, description?: string): void;\n\n onMessage?(type: string, data: any): void;\n}\n\nexport const useUnlayerRef = () => useRef<UnlayerRef | null>(null);\n\nexport const UnlayerEditor = forwardRef<UnlayerRef, UnlayerEditorProps>((props, ref) => {\n const [isReady, setIsReady] = useState(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const store = useMemo(\n () => new UnlayerStore(props.opts),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n useEffect(() => {\n if (containerRef.current) {\n store\n .init(containerRef.current)\n .then(() => setIsReady(true))\n .catch(() => setIsReady(false));\n }\n\n return () => store.destroy();\n }, [store]);\n useImperativeHandle(ref, () => store.unlayerRef, [store]);\n\n useEffect(() => {\n if (isReady) {\n store.setDesign(props.design);\n }\n }, [isReady, props.design, store]);\n\n useEffect(() => {\n store.setOnChange(props.onChange);\n\n return () => store.setOnChange();\n }, [props.onChange, store]);\n\n useEffect(() => {\n store.setOnSnapshotSave(props.onSnapshotSave);\n\n return () => store.setOnSnapshotSave();\n }, [props.onSnapshotSave, store]);\n\n useEffect(() => {\n if (props.opts.newSnapshot) {\n store.addTwin(props.opts.newSnapshot);\n }\n }, [props.opts.newSnapshot, store]);\n\n useEffect(() => {\n store.setOnReady(props.onReady);\n\n return () => store.setOnReady();\n }, [props.onReady, store]);\n\n useEffect(() => {\n store.setOnImage(props.onImage);\n\n return () => store.setOnImage();\n }, [props.onImage, store]);\n\n useEffect(() => {\n store.setOnError(props.onError);\n\n return () => store.setOnError();\n }, [props.onError, store]);\n\n useEffect(() => {\n store.setOnMessage(props.onMessage);\n\n return () => store.setOnMessage();\n }, [props.onMessage, store]);\n\n useEffect(() => {\n store.setOnFormSelect(props.opts.onFormSelect);\n\n return () => store.setOnFormSelect();\n }, [props.opts.onFormSelect, store]);\n\n useEffect(() => {\n store.setOnCalcFieldOpen(props.opts.onCalcFieldOpen);\n\n return () => store.setOnCalcFieldOpen();\n }, [props.opts.onCalcFieldOpen, store]);\n\n useEffect(() => {\n store.setOnCalcFieldSelect(props.opts.onCalcFieldSelect);\n\n return () => store.setOnCalcFieldSelect();\n }, [props.opts.onCalcFieldSelect, store]);\n\n const { minHeight = 800, style = {} } = props;\n\n return (\n <div style={{ minHeight, display: 'flex' }}>\n {!isReady && <p className=\"c-red-500\">error loading editor</p>}\n <div id={props.id ?? 'editor'} style={style} ref={containerRef} />\n {props.opts.displayConditions && (\n <DisplayConditionModal\n portalContainer={props.opts.displayConditionModalPortalContainer}\n schema={props.opts.schema}\n onConditionalsOpen={props.opts.onConditionalsOpen}\n onConditionFormSelect={props.opts.onConditionFormSelect}\n />\n )}\n </div>\n );\n});\n"],"names":["forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","DisplayConditionModal","UnlayerStore","useUnlayerRef","UnlayerEditor","props","ref","isReady","setIsReady","containerRef","store","opts","current","init","then","catch","destroy","unlayerRef","setDesign","design","setOnChange","onChange","setOnSnapshotSave","onSnapshotSave","newSnapshot","addTwin","setOnReady","onReady","setOnImage","onImage","setOnError","onError","setOnMessage","onMessage","setOnFormSelect","onFormSelect","setOnCalcFieldOpen","onCalcFieldOpen","setOnCalcFieldSelect","onCalcFieldSelect","minHeight","style","div","display","p","className","id","displayConditions","portalContainer","displayConditionModalPortalContainer","schema","onConditionalsOpen","onConditionFormSelect"],"mappings":"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"}
|
package/dist/shared/forms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/forms.ts"],"sourcesContent":["export interface FormInfo {\n id: number;\n name: string;\n}\n\nexport interface FormFieldInfo {\n id: string;\n header: string;\n itemType: string;\n sampleData?: unknown;\n}\n\nexport const enum FormItemType {\n Text = 'Text',\n Number = 'Number',\n Picture = 'Picture',\n Checkboxes = 'Checkboxes',\n RadioButtons = 'RadioButtons',\n Date = 'Date',\n Signature = 'Signature',\n Dropdown = 'Dropdown',\n Stoplight = 'Stoplight',\n SmartField = 'SmartField',\n}\n\nexport type FormCalculatedFieldType = 'number' | 'date';\nexport type FormConditionalFieldType = 'number' | 'string';\n\nconst FORM_FIELD_KEY_RE = /^__submission_fields\\.(\\d+)\\.([A-Za-z0-9]+)$/;\nconst FORM_FIELD_RUNTIME_PATH_RE = /^__submission_fields\\[\"(\\d+)\"\\]\\[\"([A-Za-z0-9]+)\"\\]$/;\nconst LEGACY_FORM_KEY_RE = /^form_(\\d+)_([A-Za-z0-9]+)$/;\nconst LEGACY_FORM_KEY_PREFIX_RE = /^__form_(\\d+)_([a-f0-9]+)$/;\n\nexport const buildFormFieldKey = (formId: number, fieldId: string): string =>\n `__submission_fields.${formId}.${fieldId.replaceAll('-', '')}`;\n\nexport const parseFormFieldKey = (key: string): { formId: number; fieldId: string } | null => {\n const match = FORM_FIELD_KEY_RE.exec(key) ?? FORM_FIELD_RUNTIME_PATH_RE.exec(key);\n if (match) {\n return { formId: Number(match[1]), fieldId: match[2] };\n }\n\n // Backward compatibility for already saved values.\n const oldMatch = LEGACY_FORM_KEY_RE.exec(key);\n if (oldMatch) {\n return { formId: Number(oldMatch[1]), fieldId: oldMatch[2] };\n }\n\n const legacyMatch = LEGACY_FORM_KEY_PREFIX_RE.exec(key);\n if (legacyMatch) {\n return { formId: Number(legacyMatch[1]), fieldId: legacyMatch[2] };\n }\n\n return null;\n};\n\nexport const isFormFieldKey = (key: string): boolean => parseFormFieldKey(key) !== null;\n\n/**\n * Submission keys may start with numeric properties, so dot notation is unsafe.\n */\nexport const toNunjucksFieldReference = (fieldKey: string): string => {\n const parsed = parseFormFieldKey(fieldKey);\n if (!parsed) {\n return fieldKey;\n }\n\n return `__submission_fields[\"${parsed.formId}\"][\"${parsed.fieldId}\"]`;\n};\n\nexport const getCalculatedFieldTypeFromFormItemType = (\n itemType: string,\n): FormCalculatedFieldType | null => {\n if (itemType === 'Number') {\n return 'number';\n }\n if (itemType === 'Date') {\n return 'date';\n }\n return null;\n};\n\nexport const getConditionalFieldTypeFromFormItemType = (\n itemType: string,\n): FormConditionalFieldType | null => {\n if (!itemType) {\n return null;\n }\n if (itemType === 'Number') {\n return 'number';\n }\n if (itemType === 'Picture' || itemType === 'Signature') {\n return null;\n }\n return 'string';\n};\n\nconst DEFAULT_FORM_NUMBER_SAMPLE = 44;\nconst DEFAULT_FORM_DATE_SAMPLE = '2026-01-15';\n\nexport const getFormFieldSampleValue = (\n field: Pick<FormFieldInfo, 'itemType' | 'sampleData'> & { header?: string },\n index = 0,\n): number | string => {\n if (typeof field.sampleData === 'number' || typeof field.sampleData === 'string') {\n return field.sampleData;\n }\n\n if (field.itemType === FormItemType.Number) {\n return DEFAULT_FORM_NUMBER_SAMPLE + index;\n }\n\n if (field.itemType === FormItemType.Date) {\n const [year, month, day] = DEFAULT_FORM_DATE_SAMPLE.split('-');\n const dayNumber = Number(day) + (index % 10);\n return `${year}-${month}-${String(dayNumber).padStart(2, '0')}`;\n }\n\n return field.header ? `${field.header} value` : 'sample';\n};\n"],"names":["FormItemType","FORM_FIELD_KEY_RE","FORM_FIELD_RUNTIME_PATH_RE","LEGACY_FORM_KEY_RE","LEGACY_FORM_KEY_PREFIX_RE","buildFormFieldKey","formId","fieldId","replaceAll","parseFormFieldKey","key","match","exec","Number","oldMatch","legacyMatch","isFormFieldKey","toNunjucksFieldReference","fieldKey","parsed","getCalculatedFieldTypeFromFormItemType","itemType","getConditionalFieldTypeFromFormItemType","DEFAULT_FORM_NUMBER_SAMPLE","DEFAULT_FORM_DATE_SAMPLE","getFormFieldSampleValue","field","index","sampleData","year","month","day","split","dayNumber","String","padStart","header"],"mappings":"AAYA,OAAO,IAAA,AAAWA,sCAAAA;;;;;;;;;;;WAAAA;MAWjB;AAKD,MAAMC,oBAAoB;AAC1B,MAAMC,6BAA6B;AACnC,MAAMC,qBAAqB;AAC3B,MAAMC,4BAA4B;AAElC,OAAO,MAAMC,oBAAoB,CAACC,QAAgBC,UAC9C,CAAC,oBAAoB,EAAED,OAAO,CAAC,EAAEC,QAAQC,UAAU,CAAC,KAAK,KAAK,CAAC;AAEnE,OAAO,MAAMC,oBAAoB,CAACC;QAChBT;IAAd,MAAMU,
|
|
1
|
+
{"version":3,"sources":["../../src/shared/forms.ts"],"sourcesContent":["export interface FormInfo {\n id: number;\n name: string;\n}\n\nexport interface FormFieldInfo {\n id: string;\n header: string;\n itemType: string;\n sampleData?: unknown;\n}\n\nexport const enum FormItemType {\n Text = 'Text',\n Number = 'Number',\n Picture = 'Picture',\n Checkboxes = 'Checkboxes',\n RadioButtons = 'RadioButtons',\n Date = 'Date',\n Signature = 'Signature',\n Dropdown = 'Dropdown',\n Stoplight = 'Stoplight',\n SmartField = 'SmartField',\n}\n\nexport type FormCalculatedFieldType = 'number' | 'date';\nexport type FormConditionalFieldType = 'number' | 'string';\n\nconst FORM_FIELD_KEY_RE = /^__submission_fields\\.(\\d+)\\.([A-Za-z0-9]+)$/;\nconst FORM_FIELD_RUNTIME_PATH_RE = /^__submission_fields\\[\"(\\d+)\"\\]\\[\"([A-Za-z0-9]+)\"\\]$/;\nconst LEGACY_FORM_KEY_RE = /^form_(\\d+)_([A-Za-z0-9]+)$/;\nconst LEGACY_FORM_KEY_PREFIX_RE = /^__form_(\\d+)_([a-f0-9]+)$/;\n\nexport const buildFormFieldKey = (formId: number, fieldId: string): string =>\n `__submission_fields.${formId}.${fieldId.replaceAll('-', '')}`;\n\nexport const parseFormFieldKey = (key: string): { formId: number; fieldId: string } | null => {\n const match = FORM_FIELD_KEY_RE.exec(key) ?? FORM_FIELD_RUNTIME_PATH_RE.exec(key);\n if (match) {\n return { formId: Number(match[1]), fieldId: match[2] };\n }\n\n // Backward compatibility for already saved values.\n const oldMatch = LEGACY_FORM_KEY_RE.exec(key);\n if (oldMatch) {\n return { formId: Number(oldMatch[1]), fieldId: oldMatch[2] };\n }\n\n const legacyMatch = LEGACY_FORM_KEY_PREFIX_RE.exec(key);\n if (legacyMatch) {\n return { formId: Number(legacyMatch[1]), fieldId: legacyMatch[2] };\n }\n\n return null;\n};\n\nexport const isFormFieldKey = (key: string): boolean => parseFormFieldKey(key) !== null;\n\n/**\n * Submission keys may start with numeric properties, so dot notation is unsafe.\n */\nexport const toNunjucksFieldReference = (fieldKey: string): string => {\n const parsed = parseFormFieldKey(fieldKey);\n if (!parsed) {\n return fieldKey;\n }\n\n return `__submission_fields[\"${parsed.formId}\"][\"${parsed.fieldId}\"]`;\n};\n\nexport const getCalculatedFieldTypeFromFormItemType = (\n itemType: string,\n): FormCalculatedFieldType | null => {\n if (itemType === 'Number') {\n return 'number';\n }\n if (itemType === 'Date') {\n return 'date';\n }\n return null;\n};\n\nexport const getConditionalFieldTypeFromFormItemType = (\n itemType: string,\n): FormConditionalFieldType | null => {\n if (!itemType) {\n return null;\n }\n if (itemType === 'Number') {\n return 'number';\n }\n if (itemType === 'Picture' || itemType === 'Signature') {\n return null;\n }\n return 'string';\n};\n\nconst DEFAULT_FORM_NUMBER_SAMPLE = 44;\nconst DEFAULT_FORM_DATE_SAMPLE = '2026-01-15';\n\nexport const getFormFieldSampleValue = (\n field: Pick<FormFieldInfo, 'itemType' | 'sampleData'> & { header?: string },\n index = 0,\n): number | string => {\n if (typeof field.sampleData === 'number' || typeof field.sampleData === 'string') {\n return field.sampleData;\n }\n\n if (field.itemType === FormItemType.Number) {\n return DEFAULT_FORM_NUMBER_SAMPLE + index;\n }\n\n if (field.itemType === FormItemType.Date) {\n const [year, month, day] = DEFAULT_FORM_DATE_SAMPLE.split('-');\n const dayNumber = Number(day) + (index % 10);\n return `${year}-${month}-${String(dayNumber).padStart(2, '0')}`;\n }\n\n return field.header ? `${field.header} value` : 'sample';\n};\n"],"names":["FormItemType","FORM_FIELD_KEY_RE","FORM_FIELD_RUNTIME_PATH_RE","LEGACY_FORM_KEY_RE","LEGACY_FORM_KEY_PREFIX_RE","buildFormFieldKey","formId","fieldId","replaceAll","parseFormFieldKey","key","match","exec","Number","oldMatch","legacyMatch","isFormFieldKey","toNunjucksFieldReference","fieldKey","parsed","getCalculatedFieldTypeFromFormItemType","itemType","getConditionalFieldTypeFromFormItemType","DEFAULT_FORM_NUMBER_SAMPLE","DEFAULT_FORM_DATE_SAMPLE","getFormFieldSampleValue","field","index","sampleData","year","month","day","split","dayNumber","String","padStart","header"],"mappings":"AAYA,OAAO,IAAA,AAAWA,sCAAAA;;;;;;;;;;;WAAAA;MAWjB;AAKD,MAAMC,oBAAoB;AAC1B,MAAMC,6BAA6B;AACnC,MAAMC,qBAAqB;AAC3B,MAAMC,4BAA4B;AAElC,OAAO,MAAMC,oBAAoB,CAACC,QAAgBC,UAC9C,CAAC,oBAAoB,EAAED,OAAO,CAAC,EAAEC,QAAQC,UAAU,CAAC,KAAK,KAAK,CAAC;AAEnE,OAAO,MAAMC,oBAAoB,CAACC;QAChBT;IAAd,MAAMU,SAAQV,0BAAAA,kBAAkBW,IAAI,CAACF,kBAAvBT,qCAAAA,0BAA+BC,2BAA2BU,IAAI,CAACF;IAC7E,IAAIC,OAAO;QACP,OAAO;YAAEL,QAAQO,OAAOF,KAAK,CAAC,EAAE;YAAGJ,SAASI,KAAK,CAAC,EAAE;QAAC;IACzD;IAEA,mDAAmD;IACnD,MAAMG,WAAWX,mBAAmBS,IAAI,CAACF;IACzC,IAAII,UAAU;QACV,OAAO;YAAER,QAAQO,OAAOC,QAAQ,CAAC,EAAE;YAAGP,SAASO,QAAQ,CAAC,EAAE;QAAC;IAC/D;IAEA,MAAMC,cAAcX,0BAA0BQ,IAAI,CAACF;IACnD,IAAIK,aAAa;QACb,OAAO;YAAET,QAAQO,OAAOE,WAAW,CAAC,EAAE;YAAGR,SAASQ,WAAW,CAAC,EAAE;QAAC;IACrE;IAEA,OAAO;AACX,EAAE;AAEF,OAAO,MAAMC,iBAAiB,CAACN,MAAyBD,kBAAkBC,SAAS,KAAK;AAExF;;CAEC,GACD,OAAO,MAAMO,2BAA2B,CAACC;IACrC,MAAMC,SAASV,kBAAkBS;IACjC,IAAI,CAACC,QAAQ;QACT,OAAOD;IACX;IAEA,OAAO,CAAC,qBAAqB,EAAEC,OAAOb,MAAM,CAAC,IAAI,EAAEa,OAAOZ,OAAO,CAAC,EAAE,CAAC;AACzE,EAAE;AAEF,OAAO,MAAMa,yCAAyC,CAClDC;IAEA,IAAIA,aAAa,UAAU;QACvB,OAAO;IACX;IACA,IAAIA,aAAa,QAAQ;QACrB,OAAO;IACX;IACA,OAAO;AACX,EAAE;AAEF,OAAO,MAAMC,0CAA0C,CACnDD;IAEA,IAAI,CAACA,UAAU;QACX,OAAO;IACX;IACA,IAAIA,aAAa,UAAU;QACvB,OAAO;IACX;IACA,IAAIA,aAAa,aAAaA,aAAa,aAAa;QACpD,OAAO;IACX;IACA,OAAO;AACX,EAAE;AAEF,MAAME,6BAA6B;AACnC,MAAMC,2BAA2B;AAEjC,OAAO,MAAMC,0BAA0B,CACnCC,OACAC,QAAQ,CAAC;IAET,IAAI,OAAOD,MAAME,UAAU,KAAK,YAAY,OAAOF,MAAME,UAAU,KAAK,UAAU;QAC9E,OAAOF,MAAME,UAAU;IAC3B;IAEA,IAAIF,MAAML,QAAQ,eAA0B;QACxC,OAAOE,6BAA6BI;IACxC;IAEA,IAAID,MAAML,QAAQ,aAAwB;QACtC,MAAM,CAACQ,MAAMC,OAAOC,IAAI,GAAGP,yBAAyBQ,KAAK,CAAC;QAC1D,MAAMC,YAAYpB,OAAOkB,OAAQJ,QAAQ;QACzC,OAAO,GAAGE,KAAK,CAAC,EAAEC,MAAM,CAAC,EAAEI,OAAOD,WAAWE,QAAQ,CAAC,GAAG,MAAM;IACnE;IAEA,OAAOT,MAAMU,MAAM,GAAG,GAAGV,MAAMU,MAAM,CAAC,MAAM,CAAC,GAAG;AACpD,EAAE"}
|
package/dist/shared/schema.js
CHANGED
|
@@ -83,6 +83,7 @@ export const schemaBuildMap = (schema)=>{
|
|
|
83
83
|
const nodeLabel = (_node_title = node.title) !== null && _node_title !== void 0 ? _node_title : nodeKey;
|
|
84
84
|
const isArrayRoot = nodeKey === schemaArrayRootKey;
|
|
85
85
|
if (nodeKey) {
|
|
86
|
+
var _node_title1;
|
|
86
87
|
const fullKey = [
|
|
87
88
|
...parentNodes.map((n)=>n.key),
|
|
88
89
|
nodeKey
|
|
@@ -91,7 +92,6 @@ export const schemaBuildMap = (schema)=>{
|
|
|
91
92
|
...parentNodes.map((n)=>n.title),
|
|
92
93
|
nodeLabel
|
|
93
94
|
].join(' - ');
|
|
94
|
-
var _node_title1;
|
|
95
95
|
fieldsMap[fullKey] = {
|
|
96
96
|
fieldKey: nodeKey,
|
|
97
97
|
fullKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/schema.ts"],"sourcesContent":["export type SchemaNodeAvailableTypes = 'object' | 'array' | 'string' | 'number' | 'date';\nexport const schemaNodeAvailableTypes = ['object', 'array', 'string', 'number', 'date'];\n\nexport type SchemaNodeStringSubTypes = 'string' | 'text' | 'html' | 'image';\nexport const schemaNodeStringSubTypes = ['string', 'text', 'html', 'image'];\n\nexport const schemaIsAvailableType = (type: string): type is SchemaNodeAvailableTypes =>\n schemaNodeAvailableTypes.includes(type);\n\nexport interface SchemaFieldBaseOptions {\n placeholder?: any;\n description?: any;\n sampleData?: any;\n showInEditor?: boolean;\n useInCalculatedFields?: boolean;\n useInConditionals?: boolean;\n isHighlighted?: boolean;\n fieldLookupSource?: string;\n}\n\ninterface SchemaNodeProps {\n title?: string;\n options?: SchemaFieldBaseOptions;\n}\n\nexport interface SchemaObject extends SchemaNodeProps {\n type: 'object';\n properties: Record<string, SchemaNode>;\n}\n\nexport interface SchemaArray extends SchemaNodeProps {\n type: 'array';\n items: SchemaNode;\n}\n\nexport interface SchemaSimpleString extends SchemaNodeProps {\n type: 'string';\n subType?: SchemaNodeStringSubTypes;\n}\n\nexport interface SchemaSimpleNumber extends SchemaNodeProps {\n type: 'number';\n}\n\nexport interface SchemaSimpleDate extends SchemaNodeProps {\n type: 'date';\n}\n\nexport type SchemaSimple = SchemaSimpleString | SchemaSimpleNumber | SchemaSimpleDate;\n\nexport const schemaArrayRootKey = '[]';\nexport type SchemaNode = SchemaObject | SchemaArray | SchemaSimple;\n\nexport const schemaIsObject = (node?: SchemaNode): node is SchemaObject => node?.type === 'object';\nexport const schemaIsArrayOfObjects = (node?: SchemaNode): node is SchemaArray =>\n node?.type === 'array' && node?.items.type === 'object';\nexport const schemaIsArray = (node?: SchemaNode): node is SchemaArray => node?.type === 'array';\nexport const schemaIsString = (node?: SchemaNode): node is SchemaSimpleString =>\n node?.type === 'string';\nexport const schemaIsNumber = (node?: SchemaNode): node is SchemaSimpleNumber =>\n node?.type === 'number';\nexport const schemaIsDate = (node?: SchemaNode): node is SchemaSimpleDate => node?.type === 'date';\nexport const schemaIsStringHtml = (node?: SchemaNode): node is SchemaSimpleString =>\n node?.type === 'string' && node?.subType === 'html';\n\nexport const schemaIsStringImage = (node?: SchemaNode): node is SchemaSimpleString =>\n node?.type === 'string' && node?.subType === 'image';\n\nexport const schemaFindNode = (schema: SchemaNode, key: string): SchemaNode | undefined => {\n const nodeFinder = (node: SchemaNode, keys: string[]): SchemaNode | undefined => {\n if (!node) {\n return undefined;\n }\n\n if (!keys.length) {\n return node;\n }\n\n const key = keys.shift();\n\n if (!key) {\n return undefined;\n }\n\n if (key === schemaArrayRootKey) {\n return schemaIsArray(node) ? nodeFinder(node.items, keys) : undefined;\n }\n\n if (schemaIsObject(node)) {\n return nodeFinder(node.properties[key], keys);\n }\n\n if (schemaIsArrayOfObjects(node)) {\n return nodeFinder(((node as SchemaArray)?.items as SchemaObject).properties[key], keys);\n }\n\n return undefined;\n };\n\n return nodeFinder(schema, key.split('.'));\n};\n\nexport const schemaFindParentNode = (schema: SchemaNode, key: string): SchemaNode | undefined => {\n const keys = key.split('.');\n\n keys.pop();\n\n return keys.length\n ? schemaFindNode(schema, keys.join('.'))\n : schemaIsObject(schema) && schema.properties[key]\n ? schema\n : undefined;\n};\n\nexport const schemaGetFieldKey = (fullKey: string): string => fullKey.split('.').pop() ?? '';\n\nexport const schemaBuildNode = (\n type: SchemaNodeAvailableTypes,\n arrayItemType?: SchemaNodeAvailableTypes,\n): SchemaNode => {\n if (type === 'object') {\n return { type: 'object', properties: {}, options: {} };\n }\n if (type === 'array') {\n return { type: 'array', items: schemaBuildNode(arrayItemType ?? 'object'), options: {} };\n }\n\n return { type, options: {} };\n};\n\nexport interface SchemaMetaField {\n fieldKey: string;\n fullKey: string;\n node: SchemaNode;\n title: string; // node.title or fullTitle\n fullTitle: string; // joined title of all parents and field\n isArrayed: boolean;\n isValue: boolean;\n}\n\nexport type SchemaMap = Record<string, SchemaMetaField>;\n\nexport const schemaBuildMap = (schema: SchemaObject): { map: SchemaMap; dummyData: any } => {\n const fieldsMap: Record<string, SchemaMetaField> = {};\n const dummyData: any = {};\n\n const processNode = (\n node: SchemaNode,\n nodeKey: string,\n parentNodes: { key: string; title: string }[],\n isArrayed: boolean,\n dummyDataNode: any,\n ) => {\n const nodeLabel = node.title ?? nodeKey;\n const isArrayRoot = nodeKey === schemaArrayRootKey;\n\n if (nodeKey) {\n const fullKey = [...parentNodes.map(n => n.key), nodeKey].join('.');\n const fullTitle = [...parentNodes.map(n => n.title), nodeLabel].join(' - ');\n\n fieldsMap[fullKey] = {\n fieldKey: nodeKey,\n fullKey,\n fullTitle,\n title: (node.title ?? isArrayed) ? nodeLabel : fullTitle,\n node,\n isArrayed,\n isValue: !schemaIsObject(node) && !schemaIsArray(node),\n };\n }\n\n if (schemaIsObject(node)) {\n const properties = node.properties ?? {};\n const keys = Object.keys(properties ?? {}).sort();\n let dummyDataObject = {};\n\n if (isArrayRoot) {\n dummyDataNode.push?.(dummyDataObject);\n } else if (nodeKey) {\n dummyDataNode[nodeKey] = dummyDataObject;\n } else {\n dummyDataObject = dummyDataNode;\n }\n\n for (const key of keys) {\n processNode(\n properties[key],\n key,\n nodeKey ? [...parentNodes, { key: nodeKey, title: nodeLabel }] : [],\n isArrayed,\n dummyDataObject,\n );\n }\n } else if (schemaIsArray(node)) {\n const items = node.items ?? {};\n\n dummyDataNode[nodeKey] = [];\n processNode(\n items,\n schemaArrayRootKey,\n nodeKey ? [...parentNodes, { key: nodeKey, title: nodeLabel }] : [],\n true,\n dummyDataNode[nodeKey],\n );\n } else if (nodeKey) {\n const sampleData = node?.options?.sampleData;\n const placeholder = node?.options?.placeholder;\n const value = sampleData !== undefined ? sampleData : placeholder;\n\n if (value !== undefined) {\n if (isArrayRoot) {\n dummyDataNode.push?.(value);\n } else {\n dummyDataNode[nodeKey] = value;\n }\n }\n }\n };\n\n processNode(schema, '', [], false, dummyData);\n\n return { map: fieldsMap, dummyData };\n};\n"],"names":["schemaNodeAvailableTypes","schemaNodeStringSubTypes","schemaIsAvailableType","type","includes","schemaArrayRootKey","schemaIsObject","node","schemaIsArrayOfObjects","items","schemaIsArray","schemaIsString","schemaIsNumber","schemaIsDate","schemaIsStringHtml","subType","schemaIsStringImage","schemaFindNode","schema","key","nodeFinder","keys","undefined","length","shift","properties","split","schemaFindParentNode","pop","join","schemaGetFieldKey","fullKey","schemaBuildNode","arrayItemType","options","schemaBuildMap","fieldsMap","dummyData","processNode","nodeKey","parentNodes","isArrayed","dummyDataNode","nodeLabel","title","isArrayRoot","map","n","fullTitle","fieldKey","isValue","Object","sort","dummyDataObject","push","sampleData","placeholder","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/shared/schema.ts"],"sourcesContent":["export type SchemaNodeAvailableTypes = 'object' | 'array' | 'string' | 'number' | 'date';\nexport const schemaNodeAvailableTypes = ['object', 'array', 'string', 'number', 'date'];\n\nexport type SchemaNodeStringSubTypes = 'string' | 'text' | 'html' | 'image';\nexport const schemaNodeStringSubTypes = ['string', 'text', 'html', 'image'];\n\nexport const schemaIsAvailableType = (type: string): type is SchemaNodeAvailableTypes =>\n schemaNodeAvailableTypes.includes(type);\n\nexport interface SchemaFieldBaseOptions {\n placeholder?: any;\n description?: any;\n sampleData?: any;\n showInEditor?: boolean;\n useInCalculatedFields?: boolean;\n useInConditionals?: boolean;\n isHighlighted?: boolean;\n fieldLookupSource?: string;\n}\n\ninterface SchemaNodeProps {\n title?: string;\n options?: SchemaFieldBaseOptions;\n}\n\nexport interface SchemaObject extends SchemaNodeProps {\n type: 'object';\n properties: Record<string, SchemaNode>;\n}\n\nexport interface SchemaArray extends SchemaNodeProps {\n type: 'array';\n items: SchemaNode;\n}\n\nexport interface SchemaSimpleString extends SchemaNodeProps {\n type: 'string';\n subType?: SchemaNodeStringSubTypes;\n}\n\nexport interface SchemaSimpleNumber extends SchemaNodeProps {\n type: 'number';\n}\n\nexport interface SchemaSimpleDate extends SchemaNodeProps {\n type: 'date';\n}\n\nexport type SchemaSimple = SchemaSimpleString | SchemaSimpleNumber | SchemaSimpleDate;\n\nexport const schemaArrayRootKey = '[]';\nexport type SchemaNode = SchemaObject | SchemaArray | SchemaSimple;\n\nexport const schemaIsObject = (node?: SchemaNode): node is SchemaObject => node?.type === 'object';\nexport const schemaIsArrayOfObjects = (node?: SchemaNode): node is SchemaArray =>\n node?.type === 'array' && node?.items.type === 'object';\nexport const schemaIsArray = (node?: SchemaNode): node is SchemaArray => node?.type === 'array';\nexport const schemaIsString = (node?: SchemaNode): node is SchemaSimpleString =>\n node?.type === 'string';\nexport const schemaIsNumber = (node?: SchemaNode): node is SchemaSimpleNumber =>\n node?.type === 'number';\nexport const schemaIsDate = (node?: SchemaNode): node is SchemaSimpleDate => node?.type === 'date';\nexport const schemaIsStringHtml = (node?: SchemaNode): node is SchemaSimpleString =>\n node?.type === 'string' && node?.subType === 'html';\n\nexport const schemaIsStringImage = (node?: SchemaNode): node is SchemaSimpleString =>\n node?.type === 'string' && node?.subType === 'image';\n\nexport const schemaFindNode = (schema: SchemaNode, key: string): SchemaNode | undefined => {\n const nodeFinder = (node: SchemaNode, keys: string[]): SchemaNode | undefined => {\n if (!node) {\n return undefined;\n }\n\n if (!keys.length) {\n return node;\n }\n\n const key = keys.shift();\n\n if (!key) {\n return undefined;\n }\n\n if (key === schemaArrayRootKey) {\n return schemaIsArray(node) ? nodeFinder(node.items, keys) : undefined;\n }\n\n if (schemaIsObject(node)) {\n return nodeFinder(node.properties[key], keys);\n }\n\n if (schemaIsArrayOfObjects(node)) {\n return nodeFinder(((node as SchemaArray)?.items as SchemaObject).properties[key], keys);\n }\n\n return undefined;\n };\n\n return nodeFinder(schema, key.split('.'));\n};\n\nexport const schemaFindParentNode = (schema: SchemaNode, key: string): SchemaNode | undefined => {\n const keys = key.split('.');\n\n keys.pop();\n\n return keys.length\n ? schemaFindNode(schema, keys.join('.'))\n : schemaIsObject(schema) && schema.properties[key]\n ? schema\n : undefined;\n};\n\nexport const schemaGetFieldKey = (fullKey: string): string => fullKey.split('.').pop() ?? '';\n\nexport const schemaBuildNode = (\n type: SchemaNodeAvailableTypes,\n arrayItemType?: SchemaNodeAvailableTypes,\n): SchemaNode => {\n if (type === 'object') {\n return { type: 'object', properties: {}, options: {} };\n }\n if (type === 'array') {\n return { type: 'array', items: schemaBuildNode(arrayItemType ?? 'object'), options: {} };\n }\n\n return { type, options: {} };\n};\n\nexport interface SchemaMetaField {\n fieldKey: string;\n fullKey: string;\n node: SchemaNode;\n title: string; // node.title or fullTitle\n fullTitle: string; // joined title of all parents and field\n isArrayed: boolean;\n isValue: boolean;\n}\n\nexport type SchemaMap = Record<string, SchemaMetaField>;\n\nexport const schemaBuildMap = (schema: SchemaObject): { map: SchemaMap; dummyData: any } => {\n const fieldsMap: Record<string, SchemaMetaField> = {};\n const dummyData: any = {};\n\n const processNode = (\n node: SchemaNode,\n nodeKey: string,\n parentNodes: { key: string; title: string }[],\n isArrayed: boolean,\n dummyDataNode: any,\n ) => {\n const nodeLabel = node.title ?? nodeKey;\n const isArrayRoot = nodeKey === schemaArrayRootKey;\n\n if (nodeKey) {\n const fullKey = [...parentNodes.map(n => n.key), nodeKey].join('.');\n const fullTitle = [...parentNodes.map(n => n.title), nodeLabel].join(' - ');\n\n fieldsMap[fullKey] = {\n fieldKey: nodeKey,\n fullKey,\n fullTitle,\n title: (node.title ?? isArrayed) ? nodeLabel : fullTitle,\n node,\n isArrayed,\n isValue: !schemaIsObject(node) && !schemaIsArray(node),\n };\n }\n\n if (schemaIsObject(node)) {\n const properties = node.properties ?? {};\n const keys = Object.keys(properties ?? {}).sort();\n let dummyDataObject = {};\n\n if (isArrayRoot) {\n dummyDataNode.push?.(dummyDataObject);\n } else if (nodeKey) {\n dummyDataNode[nodeKey] = dummyDataObject;\n } else {\n dummyDataObject = dummyDataNode;\n }\n\n for (const key of keys) {\n processNode(\n properties[key],\n key,\n nodeKey ? [...parentNodes, { key: nodeKey, title: nodeLabel }] : [],\n isArrayed,\n dummyDataObject,\n );\n }\n } else if (schemaIsArray(node)) {\n const items = node.items ?? {};\n\n dummyDataNode[nodeKey] = [];\n processNode(\n items,\n schemaArrayRootKey,\n nodeKey ? [...parentNodes, { key: nodeKey, title: nodeLabel }] : [],\n true,\n dummyDataNode[nodeKey],\n );\n } else if (nodeKey) {\n const sampleData = node?.options?.sampleData;\n const placeholder = node?.options?.placeholder;\n const value = sampleData !== undefined ? sampleData : placeholder;\n\n if (value !== undefined) {\n if (isArrayRoot) {\n dummyDataNode.push?.(value);\n } else {\n dummyDataNode[nodeKey] = value;\n }\n }\n }\n };\n\n processNode(schema, '', [], false, dummyData);\n\n return { map: fieldsMap, dummyData };\n};\n"],"names":["schemaNodeAvailableTypes","schemaNodeStringSubTypes","schemaIsAvailableType","type","includes","schemaArrayRootKey","schemaIsObject","node","schemaIsArrayOfObjects","items","schemaIsArray","schemaIsString","schemaIsNumber","schemaIsDate","schemaIsStringHtml","subType","schemaIsStringImage","schemaFindNode","schema","key","nodeFinder","keys","undefined","length","shift","properties","split","schemaFindParentNode","pop","join","schemaGetFieldKey","fullKey","schemaBuildNode","arrayItemType","options","schemaBuildMap","fieldsMap","dummyData","processNode","nodeKey","parentNodes","isArrayed","dummyDataNode","nodeLabel","title","isArrayRoot","map","n","fullTitle","fieldKey","isValue","Object","sort","dummyDataObject","push","sampleData","placeholder","value"],"mappings":"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"}
|
package/dist/shared/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/tools.ts"],"sourcesContent":["export const unlayerToolsGenerateUnitKey = (unitId: string, unitGeneric: string) =>\n `${unitGeneric}:unit:${unitId}`;\n\nexport const unlayerToolsParseUnitKey = (\n toolKey: string\n): { id: string; generic: string } | undefined => {\n const [generic, type, id] = (toolKey ?? '').split(':');\n\n if (type === 'unit' && generic && id) {\n return { id, generic };\n }\n};\n\nexport const unlayerToolsGenerateTwinKey = (toolType: string, toolSlug?: string) =>\n `|twin|${toolType}|${toolSlug ?? ''}|${Date.now()}${Math.round(Math.random() * 10000)}`;\n\nexport const unlayerToolsParseTwinKey = (\n toolKey: string\n): { type: string; slug?: string } | undefined => {\n const [, twin, type, slug] = (toolKey ?? '').split('|');\n\n if (twin === 'twin' && type) {\n return { type, slug: slug || undefined };\n }\n};\n\nexport interface UnlayerStore {\n renderHtml(html: string, data: any): string;\n sendData(type: string, data?: any): void;\n getTool(key: string): { getModel(): object; dataSources(values?: any): string[] } | undefined;\n}\n"],"names":["unlayerToolsGenerateUnitKey","unitId","unitGeneric","unlayerToolsParseUnitKey","toolKey","generic","type","id","split","unlayerToolsGenerateTwinKey","toolType","toolSlug","Date","now","Math","round","random","unlayerToolsParseTwinKey","twin","slug","undefined"],"mappings":"AAAA,OAAO,MAAMA,8BAA8B,CAACC,QAAgBC,cACxD,GAAGA,YAAY,MAAM,EAAED,QAAQ,CAAC;AAEpC,OAAO,MAAME,2BAA2B,CACpCC;IAEA,MAAM,CAACC,SAASC,MAAMC,GAAG,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../src/shared/tools.ts"],"sourcesContent":["export const unlayerToolsGenerateUnitKey = (unitId: string, unitGeneric: string) =>\n `${unitGeneric}:unit:${unitId}`;\n\nexport const unlayerToolsParseUnitKey = (\n toolKey: string\n): { id: string; generic: string } | undefined => {\n const [generic, type, id] = (toolKey ?? '').split(':');\n\n if (type === 'unit' && generic && id) {\n return { id, generic };\n }\n};\n\nexport const unlayerToolsGenerateTwinKey = (toolType: string, toolSlug?: string) =>\n `|twin|${toolType}|${toolSlug ?? ''}|${Date.now()}${Math.round(Math.random() * 10000)}`;\n\nexport const unlayerToolsParseTwinKey = (\n toolKey: string\n): { type: string; slug?: string } | undefined => {\n const [, twin, type, slug] = (toolKey ?? '').split('|');\n\n if (twin === 'twin' && type) {\n return { type, slug: slug || undefined };\n }\n};\n\nexport interface UnlayerStore {\n renderHtml(html: string, data: any): string;\n sendData(type: string, data?: any): void;\n getTool(key: string): { getModel(): object; dataSources(values?: any): string[] } | undefined;\n}\n"],"names":["unlayerToolsGenerateUnitKey","unitId","unitGeneric","unlayerToolsParseUnitKey","toolKey","generic","type","id","split","unlayerToolsGenerateTwinKey","toolType","toolSlug","Date","now","Math","round","random","unlayerToolsParseTwinKey","twin","slug","undefined"],"mappings":"AAAA,OAAO,MAAMA,8BAA8B,CAACC,QAAgBC,cACxD,GAAGA,YAAY,MAAM,EAAED,QAAQ,CAAC;AAEpC,OAAO,MAAME,2BAA2B,CACpCC;IAEA,MAAM,CAACC,SAASC,MAAMC,GAAG,GAAG,CAACH,oBAAAA,qBAAAA,UAAW,IAAII,KAAK,CAAC;IAElD,IAAIF,SAAS,UAAUD,WAAWE,IAAI;QAClC,OAAO;YAAEA;YAAIF;QAAQ;IACzB;AACJ,EAAE;AAEF,OAAO,MAAMI,8BAA8B,CAACC,UAAkBC,WAC1D,CAAC,MAAM,EAAED,SAAS,CAAC,EAAEC,qBAAAA,sBAAAA,WAAY,GAAG,CAAC,EAAEC,KAAKC,GAAG,KAAKC,KAAKC,KAAK,CAACD,KAAKE,MAAM,KAAK,QAAQ,CAAC;AAE5F,OAAO,MAAMC,2BAA2B,CACpCb;IAEA,MAAM,GAAGc,MAAMZ,MAAMa,KAAK,GAAG,CAACf,oBAAAA,qBAAAA,UAAW,IAAII,KAAK,CAAC;IAEnD,IAAIU,SAAS,UAAUZ,MAAM;QACzB,OAAO;YAAEA;YAAMa,MAAMA,QAAQC;QAAU;IAC3C;AACJ,EAAE"}
|
package/dist/store.js
CHANGED
|
@@ -51,11 +51,10 @@ const getDesignFontTokens = (value, out)=>{
|
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
53
|
const ensureChunksFonts = (data)=>{
|
|
54
|
-
var _data;
|
|
54
|
+
var _data, _chunks;
|
|
55
55
|
if (!data || typeof data !== 'object') {
|
|
56
56
|
return data;
|
|
57
57
|
}
|
|
58
|
-
var _chunks;
|
|
59
58
|
(_chunks = (_data = data).chunks) !== null && _chunks !== void 0 ? _chunks : _data.chunks = {};
|
|
60
59
|
const existingFonts = Array.isArray(data.chunks.fonts) ? data.chunks.fonts : [];
|
|
61
60
|
const existingLabels = new Set(existingFonts.map((f)=>f.label));
|
|
@@ -123,8 +122,8 @@ const setByPath = (target, path, value)=>{
|
|
|
123
122
|
node[parts[parts.length - 1]] = value;
|
|
124
123
|
};
|
|
125
124
|
const tokenizeFormulaFields = (expression)=>{
|
|
126
|
-
const regex = /[A-Za-z_][A-Za-z0-9_.]*/g;
|
|
127
125
|
var _expression_match;
|
|
126
|
+
const regex = /[A-Za-z_][A-Za-z0-9_.]*/g;
|
|
128
127
|
return (_expression_match = expression.match(regex)) !== null && _expression_match !== void 0 ? _expression_match : [];
|
|
129
128
|
};
|
|
130
129
|
// We are using exclusive lists here, because we can't be sure that we know all unlayer event types
|
|
@@ -144,6 +143,7 @@ const eventsNotAddingTools = [
|
|
|
144
143
|
];
|
|
145
144
|
export class UnlayerStore {
|
|
146
145
|
constructor(props){
|
|
146
|
+
var _ref, _ref1;
|
|
147
147
|
_define_property(this, "props", void 0);
|
|
148
148
|
_define_property(this, "unlayerRef", void 0);
|
|
149
149
|
_define_property(this, "schemaDummyData", void 0);
|
|
@@ -195,6 +195,7 @@ export class UnlayerStore {
|
|
|
195
195
|
this.formFieldsByFormId = {};
|
|
196
196
|
this.formFieldSamples = {};
|
|
197
197
|
this.init = async (container)=>{
|
|
198
|
+
var _container_querySelector;
|
|
198
199
|
if (this.isInit) {
|
|
199
200
|
return;
|
|
200
201
|
}
|
|
@@ -205,7 +206,6 @@ export class UnlayerStore {
|
|
|
205
206
|
this.editor.addEventListener('design:loaded', this.onDesignLoaded);
|
|
206
207
|
this.editor.addEventListener('design:updated', this.onDesignUpdated);
|
|
207
208
|
this.editor.registerCallback('image', this.uploadImage);
|
|
208
|
-
var _container_querySelector;
|
|
209
209
|
this.iframe = (_container_querySelector = container.querySelector(`iframe`)) !== null && _container_querySelector !== void 0 ? _container_querySelector : undefined;
|
|
210
210
|
};
|
|
211
211
|
this.destroy = ()=>{
|
|
@@ -348,13 +348,13 @@ export class UnlayerStore {
|
|
|
348
348
|
var _this_onFormSelectCB, _this2;
|
|
349
349
|
(_this_onFormSelectCB = (_this2 = this).onFormSelectCB) === null || _this_onFormSelectCB === void 0 ? void 0 : _this_onFormSelectCB.call(_this2, data === null || data === void 0 ? void 0 : data.formId);
|
|
350
350
|
} else if (type === '--calc-field-open') {
|
|
351
|
+
var _ref;
|
|
351
352
|
var _this_onCalcFieldOpenCB, _this3;
|
|
352
|
-
|
|
353
|
-
(_this_onCalcFieldOpenCB = (_this3 = this).onCalcFieldOpenCB) === null || _this_onCalcFieldOpenCB === void 0 ? void 0 : _this_onCalcFieldOpenCB.call(_this3, (_data_usedFormIds = data === null || data === void 0 ? void 0 : data.usedFormIds) !== null && _data_usedFormIds !== void 0 ? _data_usedFormIds : []);
|
|
353
|
+
(_this_onCalcFieldOpenCB = (_this3 = this).onCalcFieldOpenCB) === null || _this_onCalcFieldOpenCB === void 0 ? void 0 : _this_onCalcFieldOpenCB.call(_this3, (_ref = data === null || data === void 0 ? void 0 : data.usedFormIds) !== null && _ref !== void 0 ? _ref : []);
|
|
354
354
|
} else if (type === '--calc-field-select') {
|
|
355
355
|
if (this.onCalcFieldSelectCB) {
|
|
356
|
-
var
|
|
357
|
-
this.onCalcFieldSelectCB((
|
|
356
|
+
var _ref1;
|
|
357
|
+
this.onCalcFieldSelectCB((_ref1 = data === null || data === void 0 ? void 0 : data.fieldKeys) !== null && _ref1 !== void 0 ? _ref1 : []);
|
|
358
358
|
} else {
|
|
359
359
|
this.sendCalcFieldLabels({});
|
|
360
360
|
}
|
|
@@ -435,8 +435,8 @@ export class UnlayerStore {
|
|
|
435
435
|
this.resolveDemoValue = (key, fallbackIndex, sourceData)=>{
|
|
436
436
|
const parsedFormField = parseFormFieldKey(key);
|
|
437
437
|
if (parsedFormField) {
|
|
438
|
-
const normalizedFieldId = parsedFormField.fieldId;
|
|
439
438
|
var _this_formFieldsByFormId_parsedFormField_formId;
|
|
439
|
+
const normalizedFieldId = parsedFormField.fieldId;
|
|
440
440
|
const formFields = (_this_formFieldsByFormId_parsedFormField_formId = this.formFieldsByFormId[parsedFormField.formId]) !== null && _this_formFieldsByFormId_parsedFormField_formId !== void 0 ? _this_formFieldsByFormId_parsedFormField_formId : [];
|
|
441
441
|
const fieldIndex = formFields.findIndex((field)=>{
|
|
442
442
|
var _field_id;
|
|
@@ -478,6 +478,7 @@ export class UnlayerStore {
|
|
|
478
478
|
}, '*');
|
|
479
479
|
};
|
|
480
480
|
this.uploadImage = async (data, done)=>{
|
|
481
|
+
var _this_props_imageValidation;
|
|
481
482
|
var _data_attachments;
|
|
482
483
|
if (!this.onImageCB) {
|
|
483
484
|
done({
|
|
@@ -489,7 +490,6 @@ export class UnlayerStore {
|
|
|
489
490
|
return;
|
|
490
491
|
}
|
|
491
492
|
const file = data.attachments[0];
|
|
492
|
-
var _this_props_imageValidation;
|
|
493
493
|
const res = await this.validateImage(file, {
|
|
494
494
|
...defaultImageValidation,
|
|
495
495
|
...(_this_props_imageValidation = this.props.imageValidation) !== null && _this_props_imageValidation !== void 0 ? _this_props_imageValidation : {}
|
|
@@ -508,7 +508,7 @@ export class UnlayerStore {
|
|
|
508
508
|
progress: 100,
|
|
509
509
|
url
|
|
510
510
|
});
|
|
511
|
-
} catch (
|
|
511
|
+
} catch (unused) {
|
|
512
512
|
var _this_onErrorCB1, _this1;
|
|
513
513
|
(_this_onErrorCB1 = (_this1 = this).onErrorCB) === null || _this_onErrorCB1 === void 0 ? void 0 : _this_onErrorCB1.call(_this1, 'Image upload failed', 'Something went wrong while uploading the image. Please try again or select another image.');
|
|
514
514
|
done({
|
|
@@ -559,10 +559,8 @@ export class UnlayerStore {
|
|
|
559
559
|
});
|
|
560
560
|
};
|
|
561
561
|
const schemaData = this.props.schema ? schemaBuildMap(this.props.schema) : undefined;
|
|
562
|
-
|
|
563
|
-
this.
|
|
564
|
-
var _schemaData_map;
|
|
565
|
-
this.dateSchemaFieldKeys = new Set(Object.values((_schemaData_map = schemaData === null || schemaData === void 0 ? void 0 : schemaData.map) !== null && _schemaData_map !== void 0 ? _schemaData_map : {}).filter((field)=>field.isValue && schemaIsDate(field.node)).map((field)=>field.fullKey));
|
|
562
|
+
this.schemaDummyData = (_ref = schemaData === null || schemaData === void 0 ? void 0 : schemaData.dummyData) !== null && _ref !== void 0 ? _ref : {};
|
|
563
|
+
this.dateSchemaFieldKeys = new Set(Object.values((_ref1 = schemaData === null || schemaData === void 0 ? void 0 : schemaData.map) !== null && _ref1 !== void 0 ? _ref1 : {}).filter((field)=>field.isValue && schemaIsDate(field.node)).map((field)=>field.fullKey));
|
|
566
564
|
this.props.eSignFieldTypes = [
|
|
567
565
|
'Signature',
|
|
568
566
|
'Initials',
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/store.ts"],"sourcesContent":["import { loadScript } from './loadScript';\nimport { defaultImageValidation } from './shared/configs';\nimport { UnlayerEditorTwin, UnlayerEventConfig, UnlayerEventRegister } from './shared/const';\nimport { unlayerSupportedFonts } from './shared/fonts';\nimport {\n FormFieldInfo,\n FormInfo,\n getFormFieldSampleValue,\n parseFormFieldKey,\n} from './shared/forms';\nimport { schemaBuildMap, schemaIsDate } from './shared/schema';\nimport { unlayerToolsParseTwinKey } from './shared/tools';\nimport { unlayerToolsIterate } from './tools';\nimport {\n createUnlayerEditor,\n DesignUpdatedEventType,\n EventDesignUpdated,\n Unlayer,\n} from './unlayer';\nimport { CreateUnlayerEditorProps, UnlayerDesignFormat, UnlayerRef } from './unlayer-interface';\n\nconst defaultScriptUrl = 'https://editor.unlayer.com/embed.js?2';\n\nconst normalizeFontToken = (font: string) =>\n font.replace(/[\"']/g, '').split(',')[0].trim().toLowerCase();\n\nconst getDesignFontTokens = (value: any, out: Set<string>) => {\n if (!value || typeof value !== 'object') {\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n getDesignFontTokens(item, out);\n }\n\n return;\n }\n\n for (const [key, fieldValue] of Object.entries(value)) {\n if (key === 'fontFamily') {\n if (typeof fieldValue === 'string') {\n out.add(normalizeFontToken(fieldValue));\n } else if (fieldValue && typeof fieldValue === 'object') {\n const fontFamilyValue = fieldValue as { label?: string; value?: string };\n\n if (typeof fontFamilyValue.label === 'string') {\n out.add(normalizeFontToken(fontFamilyValue.label));\n }\n\n if (typeof fontFamilyValue.value === 'string') {\n out.add(normalizeFontToken(fontFamilyValue.value));\n }\n }\n }\n\n if (fieldValue && typeof fieldValue === 'object') {\n getDesignFontTokens(fieldValue, out);\n }\n }\n};\n\nconst ensureChunksFonts = (data: any) => {\n if (!data || typeof data !== 'object') {\n return data;\n }\n\n data.chunks ??= {};\n\n const existingFonts: any[] = Array.isArray(data.chunks.fonts) ? data.chunks.fonts : [];\n const existingLabels = new Set(existingFonts.map((f: any) => f.label));\n\n const usedFontTokens = new Set<string>();\n getDesignFontTokens(data.design, usedFontTokens);\n\n const html = typeof data.html === 'string' ? data.html.toLowerCase() : '';\n\n for (const font of unlayerSupportedFonts) {\n const labelToken = normalizeFontToken(font.label);\n const valueToken = normalizeFontToken(font.value);\n const isUsedInDesign = usedFontTokens.has(labelToken) || usedFontTokens.has(valueToken);\n const isUsedInHtml = [labelToken, valueToken].some(token => html.includes(token));\n\n if ((isUsedInDesign || isUsedInHtml) && !existingLabels.has(font.label)) {\n existingFonts.push(font);\n existingLabels.add(font.label);\n }\n }\n\n data.chunks.fonts = existingFonts;\n return data;\n};\n\nconst FORM_FIELD_DATA_POINT_PREFIX = 'FORM_FIELD_';\n\nconst getByPath = (data: unknown, path: string): unknown => {\n if (!data || typeof data !== 'object') {\n return undefined;\n }\n\n return path.split('.').reduce<unknown>((current, part) => {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n\n return (current as Record<string, unknown>)[part];\n }, data);\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n !!value && typeof value === 'object' && !Array.isArray(value);\n\nconst deepMerge = (...sources: unknown[]): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n\n for (const source of sources) {\n if (!isPlainObject(source)) {\n continue;\n }\n\n for (const [key, value] of Object.entries(source)) {\n if (isPlainObject(value) && isPlainObject(out[key])) {\n out[key] = deepMerge(out[key], value);\n } else {\n out[key] = value;\n }\n }\n }\n\n return out;\n};\n\nconst setByPath = (target: Record<string, unknown>, path: string, value: unknown) => {\n const parts = path.split('.');\n if (!parts.length) {\n return;\n }\n\n let node: Record<string, unknown> = target;\n\n for (let i = 0; i < parts.length - 1; i += 1) {\n const key = parts[i];\n if (!isPlainObject(node[key])) {\n node[key] = {};\n }\n node = node[key] as Record<string, unknown>;\n }\n\n node[parts[parts.length - 1]] = value;\n};\n\nconst tokenizeFormulaFields = (expression: string): string[] => {\n const regex = /[A-Za-z_][A-Za-z0-9_.]*/g;\n return expression.match(regex) ?? [];\n};\n\nexport interface UnlayerDesignChangeInfo {\n isToolsListChanged: boolean;\n}\n\n// We are using exclusive lists here, because we can't be sure that we know all unlayer event types\nconst eventsNotChangingToolsList: DesignUpdatedEventType[] = [\n DesignUpdatedEventType.ContentMoved,\n DesignUpdatedEventType.ContentModified,\n DesignUpdatedEventType.ColumnModified,\n DesignUpdatedEventType.RowMoved,\n DesignUpdatedEventType.RowModified,\n DesignUpdatedEventType.BodyModified,\n];\n\nconst eventsNotAddingTools: DesignUpdatedEventType[] = [\n ...eventsNotChangingToolsList,\n DesignUpdatedEventType.ContentRemoved,\n DesignUpdatedEventType.ColumnRemoved,\n DesignUpdatedEventType.RowRemoved,\n];\n\nexport class UnlayerStore {\n readonly unlayerRef: UnlayerRef;\n private readonly schemaDummyData: Record<string, unknown>;\n private readonly dateSchemaFieldKeys: Set<string>;\n\n private editor: Unlayer | undefined;\n private isInit = false;\n private iframe?: HTMLIFrameElement;\n private hasDesign = false;\n private formFieldsByFormId: Record<number, FormFieldInfo[]> = {};\n private formFieldSamples: Record<string, unknown> = {};\n\n private onMessageCB?: (type: string, data: any) => void;\n private onChangeCB?: (info: UnlayerDesignChangeInfo) => void;\n private onSnapshotSaveCB?: (snapshot: UnlayerEditorTwin) => void;\n private onReadyCB?: () => void;\n private onImageCB?: (file: File) => Promise<{ url: string }>;\n private onErrorCB?: (title: string, description?: string) => void;\n private onFormSelectCB?: (formId: number) => void;\n private onCalcFieldOpenCB?: (usedFormIds: number[]) => void;\n private onCalcFieldSelectCB?: (fieldKeys: string[]) => void;\n\n constructor(readonly props: CreateUnlayerEditorProps) {\n const schemaData = this.props.schema ? schemaBuildMap(this.props.schema) : undefined;\n this.schemaDummyData = (schemaData?.dummyData ?? {}) as Record<string, unknown>;\n this.dateSchemaFieldKeys = new Set(\n Object.values(schemaData?.map ?? {})\n .filter(field => field.isValue && schemaIsDate(field.node))\n .map(field => field.fullKey),\n );\n\n this.props.eSignFieldTypes = ['Signature', 'Initials', 'Date Signed', 'Full Name'];\n\n this.unlayerRef = {\n loadDesign: design => {\n this.editor?.loadDesign(design);\n },\n saveDesign: cb => {\n this.editor?.saveDesign(cb);\n },\n exportHtml: cb => {\n this.editor?.exportHtml(data => {\n const result = ensureChunksFonts(data);\n result.demoData = this.buildCalculatedFieldDemoData(result.design);\n cb(result);\n });\n },\n sendFormList: forms => {\n this.sendFormList(forms);\n },\n sendFormFields: (formId, fields) => {\n this.sendFormFields(formId, fields);\n },\n sendCalcFieldLabels: labels => {\n this.sendCalcFieldLabels(labels);\n },\n };\n }\n\n init = async (container: HTMLDivElement) => {\n if (this.isInit) {\n return;\n }\n\n this.isInit = true;\n\n setTimeout(() => window.addEventListener('message', this.onPostMessage));\n\n await loadScript(defaultScriptUrl);\n\n this.editor = createUnlayerEditor(container, this.props);\n this.editor.addEventListener('design:loaded', this.onDesignLoaded);\n this.editor.addEventListener('design:updated', this.onDesignUpdated);\n this.editor.registerCallback('image', this.uploadImage);\n\n this.iframe = container.querySelector(`iframe`) ?? undefined;\n };\n\n destroy = () => {\n window.removeEventListener('message', this.onPostMessage);\n\n if (this.editor) {\n this.editor.removeEventListener('design:loaded', this.onDesignLoaded);\n this.editor.removeEventListener('design:updated', this.onDesignUpdated);\n this.editor.unregisterCallback('image', this.uploadImage);\n\n this.editor = undefined;\n }\n };\n\n addTwin = (twin: UnlayerEditorTwin) => {\n this.props.toolTwins?.push(twin);\n this.sendMessage('--add-twin', JSON.parse(JSON.stringify(twin)));\n };\n\n setDesign = (design?: UnlayerDesignFormat) => {\n if (!this.editor) {\n return;\n }\n\n this.hasDesign = !!design;\n\n if (design) {\n this.editor.loadDesign(design);\n }\n };\n\n setOnChange = (onChange?: UnlayerStore['onChangeCB']) => {\n this.onChangeCB = onChange;\n };\n\n setOnSnapshotSave = (onSnapshotSave?: UnlayerStore['onSnapshotSaveCB']) => {\n this.onSnapshotSaveCB = onSnapshotSave;\n };\n\n setOnReady = (onReady?: UnlayerStore['onReadyCB']) => {\n this.onReadyCB = onReady;\n };\n\n setOnImage = (onImage?: UnlayerStore['onImageCB']) => {\n this.onImageCB = onImage;\n };\n\n setOnError = (onError?: UnlayerStore['onErrorCB']) => {\n this.onErrorCB = onError;\n };\n\n setOnMessage = (onMessage?: UnlayerStore['onMessageCB']) => {\n this.onMessageCB = onMessage;\n };\n\n setOnFormSelect = (onFormSelect?: UnlayerStore['onFormSelectCB']) => {\n this.onFormSelectCB = onFormSelect;\n };\n\n setOnCalcFieldOpen = (onCalcFieldOpen?: UnlayerStore['onCalcFieldOpenCB']) => {\n this.onCalcFieldOpenCB = onCalcFieldOpen;\n };\n\n setOnCalcFieldSelect = (onCalcFieldSelect?: UnlayerStore['onCalcFieldSelectCB']) => {\n this.onCalcFieldSelectCB = onCalcFieldSelect;\n };\n\n sendFormList = (forms: FormInfo[]) => {\n this.sendMessage('--form-list', { forms });\n };\n\n sendFormFields = (formId: number, fields: FormFieldInfo[]) => {\n this.formFieldsByFormId[formId] = fields;\n this.updateFormFieldSamples(formId, fields);\n this.sendMessage('--form-fields', { formId, fields });\n };\n\n sendCalcFieldLabels = (labels: Record<string, string>) => {\n this.sendMessage('--calc-field-labels', { labels });\n };\n\n private onDesignLoaded = () => {\n if (!this.hasDesign) {\n this.hasDesign = true;\n this.editor?.setBodyValues({\n backgroundColor: 'rgba(0,0,0,0)',\n contentWidth: '100%',\n });\n }\n };\n\n private onDesignUpdated = (event: EventDesignUpdated) => {\n const isToolAdded = !eventsNotAddingTools.includes(event.type);\n const isToolsListChanged = !eventsNotChangingToolsList.includes(event.type);\n\n if (isToolAdded) {\n this.editor?.exportHtml(data => {\n let hasChanges = false;\n\n unlayerToolsIterate(data.design, tool => {\n const realTool = tool.slug\n ? unlayerToolsParseTwinKey(tool.slug ?? '')\n : undefined;\n\n if (realTool) {\n hasChanges = true;\n\n if (tool.slug) {\n delete data.design.counters[`u_content_custom_${tool.slug}`];\n delete tool.values._meta.htmlID;\n }\n\n tool.type = realTool.type;\n tool.slug = realTool.slug;\n }\n });\n\n if (hasChanges) {\n this.setDesign(data.design);\n }\n\n this.onChangeCB?.({ isToolsListChanged });\n });\n } else {\n this.onChangeCB?.({ isToolsListChanged });\n }\n };\n\n private onPostMessage = (e: MessageEvent) => {\n if (!e.data?.['-dte-message-from']) {\n return;\n }\n\n const type = e.data?.['-dte-message-from']?.type;\n const data = e.data?.['-dte-message-from']?.data;\n\n if (!type) {\n return;\n }\n\n if (type === '--ready' || type === '--registered') {\n this.onReadyCB?.();\n } else if (type === '--core-loaded') {\n const configData: UnlayerEventConfig = {\n dummyData: this.props.dummyData,\n schema: this.props.schema,\n generics: this.props.generics,\n genericConfigMode: this.props.genericConfigMode,\n isSnapshotMode: this.props.isSnapshotMode,\n holidays: this.props.holidays,\n };\n\n this.sendMessage('--config', JSON.parse(JSON.stringify(configData)));\n } else if (type === '--form-select') {\n this.onFormSelectCB?.(data?.formId);\n } else if (type === '--calc-field-open') {\n this.onCalcFieldOpenCB?.(data?.usedFormIds ?? []);\n } else if (type === '--calc-field-select') {\n if (this.onCalcFieldSelectCB) {\n this.onCalcFieldSelectCB(data?.fieldKeys ?? []);\n } else {\n this.sendCalcFieldLabels({});\n }\n } else if (type === '--data-loaded') {\n const data: UnlayerEventRegister = {\n customTools: this.props.tools.map(tool => ({ key: tool.key })),\n toolTwins: this.props.toolTwins,\n eSignRecipients: this.props.eSignRecipients,\n eSignFieldTypes: this.props.eSignFieldTypes,\n units: this.props.units?.map(unit => ({\n ...unit,\n values: {\n ...unit.values,\n adminConfig: undefined,\n },\n })),\n };\n\n this.sendMessage('--register', JSON.parse(JSON.stringify(data)));\n } else if (type === '--save-snapshot') {\n this.editor?.exportHtml(template => {\n unlayerToolsIterate(template.design, tool => {\n if (tool.values?.twin?.id === data.id) {\n if (!tool.slug) {\n return;\n }\n\n this.onSnapshotSaveCB?.({\n title: '',\n tool: tool.slug,\n values: tool.values,\n });\n return false;\n }\n });\n });\n }\n\n this.onMessageCB?.(type, data);\n };\n\n private updateFormFieldSamples = (formId: number, fields: FormFieldInfo[]) => {\n fields.forEach((field, index) => {\n const normalizedFieldId = String(field.id ?? '').replaceAll('-', '');\n if (!normalizedFieldId) {\n return;\n }\n\n const sampleValue = getFormFieldSampleValue(field, index);\n setByPath(\n this.formFieldSamples,\n `__submission_fields.${formId}.${normalizedFieldId}`,\n sampleValue,\n );\n this.formFieldSamples[`${FORM_FIELD_DATA_POINT_PREFIX}${normalizedFieldId}`] =\n sampleValue;\n });\n };\n\n private collectCalculatedFieldKeys = (design?: UnlayerDesignFormat): Set<string> => {\n const keys = new Set<string>();\n\n if (!design) {\n return keys;\n }\n\n unlayerToolsIterate(design, tool => {\n const calc = tool.values?.calculation;\n if (!calc || typeof calc !== 'object') {\n return;\n }\n\n if (typeof calc.expression === 'string') {\n for (const key of tokenizeFormulaFields(calc.expression)) {\n keys.add(key);\n }\n }\n\n if (calc.fieldLabels && typeof calc.fieldLabels === 'object') {\n Object.keys(calc.fieldLabels).forEach(key => keys.add(key));\n }\n });\n\n return keys;\n };\n\n private resolveDemoValue = (\n key: string,\n fallbackIndex: number,\n sourceData: Record<string, unknown>,\n ): unknown => {\n const parsedFormField = parseFormFieldKey(key);\n if (parsedFormField) {\n const normalizedFieldId = parsedFormField.fieldId;\n const formFields = this.formFieldsByFormId[parsedFormField.formId] ?? [];\n const fieldIndex = formFields.findIndex(\n field => String(field.id ?? '').replaceAll('-', '') === normalizedFieldId,\n );\n const field = fieldIndex >= 0 ? formFields[fieldIndex] : undefined;\n const sample = field\n ? getFormFieldSampleValue(field, fieldIndex)\n : getByPath(\n this.formFieldSamples,\n `__submission_fields.${parsedFormField.formId}.${normalizedFieldId}`,\n );\n\n if (sample !== undefined) {\n return sample;\n }\n\n return this.dateSchemaFieldKeys.has(key) ? '2026-01-15' : 44 + fallbackIndex;\n }\n\n const existing = getByPath(sourceData, key);\n if (existing !== undefined) {\n return existing;\n }\n\n if (this.dateSchemaFieldKeys.has(key)) {\n return '2026-01-15';\n }\n\n return 44 + fallbackIndex;\n };\n\n private buildCalculatedFieldDemoData = (\n design?: UnlayerDesignFormat,\n ): Record<string, unknown> => {\n const demoData: Record<string, unknown> = {};\n const usedKeys = Array.from(this.collectCalculatedFieldKeys(design));\n const sourceData = deepMerge(\n this.schemaDummyData,\n this.props.dummyData,\n this.formFieldSamples,\n );\n\n usedKeys.forEach((key, index) => {\n const value = this.resolveDemoValue(key, index, sourceData);\n setByPath(demoData, key, value);\n });\n\n return demoData;\n };\n\n private sendMessage = (type: string, data?: any) => {\n this.iframe?.contentWindow?.postMessage(\n {\n '-dte-message-to': {\n type,\n data,\n },\n },\n '*',\n );\n };\n\n private uploadImage = async (\n data: { attachments: File[] },\n done: (result: { progress: number; url?: string }) => void,\n ) => {\n if (!this.onImageCB) {\n done({ progress: 100 });\n throw new Error('image upload is not implemented');\n }\n\n if (!data.attachments?.length) {\n return;\n }\n\n const file = data.attachments[0];\n\n const res = await this.validateImage(file, {\n ...defaultImageValidation,\n ...(this.props.imageValidation ?? {}),\n });\n\n if (!res.isValid) {\n this.onErrorCB?.(res.title, res.description);\n return;\n }\n\n done({ progress: 0 });\n\n try {\n const { url } = await this.onImageCB(file);\n done({ progress: 100, url });\n } catch {\n this.onErrorCB?.(\n 'Image upload failed',\n 'Something went wrong while uploading the image. Please try again or select another image.',\n );\n done({ progress: 100 });\n }\n };\n\n private validateImage = async (\n file: File,\n imageValidation: { maxFileSize: number; maxWidth: number; maxHeight: number },\n ): Promise<{ isValid: boolean; title: string; description: string }> => {\n const { maxFileSize, maxHeight, maxWidth } = imageValidation;\n\n if (file.size > maxFileSize) {\n const maxSizeMB = (maxFileSize / 1024 / 1024).toFixed(2);\n const fileSizeMB = (file.size / 1024 / 1024).toFixed(2);\n return {\n isValid: false,\n title: 'Image size limit reached',\n description: `This image is ${fileSizeMB}MB, which is above the ${maxSizeMB}MB limit. Please upload a smaller file to continue.`,\n };\n }\n\n return new Promise(resolve => {\n const img = new Image();\n const objectUrl = URL.createObjectURL(file);\n\n img.onload = () => {\n URL.revokeObjectURL(objectUrl);\n const { height, width } = img;\n\n if (width > maxWidth || height > maxHeight) {\n resolve({\n isValid: false,\n title: 'Dimension limit reached',\n description: `These image dimensions (${width}x${height}px) exceed the ${maxWidth}x${maxHeight}px limit. Please resize the image and try again.`,\n });\n } else {\n resolve({ isValid: true, title: '', description: '' });\n }\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(objectUrl);\n resolve({\n isValid: false,\n title: 'The image is broken',\n description:\n 'Looks like this image isn’t valid. Please choose another image and try again.',\n });\n };\n\n img.src = objectUrl;\n });\n };\n}\n"],"names":["loadScript","defaultImageValidation","unlayerSupportedFonts","getFormFieldSampleValue","parseFormFieldKey","schemaBuildMap","schemaIsDate","unlayerToolsParseTwinKey","unlayerToolsIterate","createUnlayerEditor","DesignUpdatedEventType","defaultScriptUrl","normalizeFontToken","font","replace","split","trim","toLowerCase","getDesignFontTokens","value","out","Array","isArray","item","key","fieldValue","Object","entries","add","fontFamilyValue","label","ensureChunksFonts","data","chunks","existingFonts","fonts","existingLabels","Set","map","f","usedFontTokens","design","html","labelToken","valueToken","isUsedInDesign","has","isUsedInHtml","some","token","includes","push","FORM_FIELD_DATA_POINT_PREFIX","getByPath","path","undefined","reduce","current","part","isPlainObject","deepMerge","sources","source","setByPath","target","parts","length","node","i","tokenizeFormulaFields","expression","regex","match","eventsNotChangingToolsList","ContentMoved","ContentModified","ColumnModified","RowMoved","RowModified","BodyModified","eventsNotAddingTools","ContentRemoved","ColumnRemoved","RowRemoved","UnlayerStore","props","unlayerRef","schemaDummyData","dateSchemaFieldKeys","editor","isInit","iframe","hasDesign","formFieldsByFormId","formFieldSamples","onMessageCB","onChangeCB","onSnapshotSaveCB","onReadyCB","onImageCB","onErrorCB","onFormSelectCB","onCalcFieldOpenCB","onCalcFieldSelectCB","init","destroy","addTwin","setDesign","setOnChange","setOnSnapshotSave","setOnReady","setOnImage","setOnError","setOnMessage","setOnFormSelect","setOnCalcFieldOpen","setOnCalcFieldSelect","sendFormList","sendFormFields","sendCalcFieldLabels","onDesignLoaded","onDesignUpdated","onPostMessage","updateFormFieldSamples","collectCalculatedFieldKeys","resolveDemoValue","buildCalculatedFieldDemoData","sendMessage","uploadImage","validateImage","container","setTimeout","window","addEventListener","registerCallback","querySelector","removeEventListener","unregisterCallback","twin","toolTwins","JSON","parse","stringify","loadDesign","onChange","onSnapshotSave","onReady","onImage","onError","onMessage","onFormSelect","onCalcFieldOpen","onCalcFieldSelect","forms","formId","fields","labels","setBodyValues","backgroundColor","contentWidth","event","isToolAdded","type","isToolsListChanged","exportHtml","hasChanges","tool","realTool","slug","counters","values","_meta","htmlID","e","configData","dummyData","schema","generics","genericConfigMode","isSnapshotMode","holidays","usedFormIds","fieldKeys","customTools","tools","eSignRecipients","eSignFieldTypes","units","unit","adminConfig","template","id","title","forEach","field","index","normalizedFieldId","String","replaceAll","sampleValue","keys","calc","calculation","fieldLabels","fallbackIndex","sourceData","parsedFormField","fieldId","formFields","fieldIndex","findIndex","sample","existing","demoData","usedKeys","from","contentWindow","postMessage","done","progress","Error","attachments","file","res","imageValidation","isValid","description","url","maxFileSize","maxHeight","maxWidth","size","maxSizeMB","toFixed","fileSizeMB","Promise","resolve","img","Image","objectUrl","URL","createObjectURL","onload","revokeObjectURL","height","width","onerror","src","schemaData","filter","isValue","fullKey","saveDesign","cb","result"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/store.ts"],"sourcesContent":["import { loadScript } from './loadScript';\nimport { defaultImageValidation } from './shared/configs';\nimport { UnlayerEditorTwin, UnlayerEventConfig, UnlayerEventRegister } from './shared/const';\nimport { unlayerSupportedFonts } from './shared/fonts';\nimport {\n FormFieldInfo,\n FormInfo,\n getFormFieldSampleValue,\n parseFormFieldKey,\n} from './shared/forms';\nimport { schemaBuildMap, schemaIsDate } from './shared/schema';\nimport { unlayerToolsParseTwinKey } from './shared/tools';\nimport { unlayerToolsIterate } from './tools';\nimport {\n createUnlayerEditor,\n DesignUpdatedEventType,\n EventDesignUpdated,\n Unlayer,\n} from './unlayer';\nimport { CreateUnlayerEditorProps, UnlayerDesignFormat, UnlayerRef } from './unlayer-interface';\n\nconst defaultScriptUrl = 'https://editor.unlayer.com/embed.js?2';\n\nconst normalizeFontToken = (font: string) =>\n font.replace(/[\"']/g, '').split(',')[0].trim().toLowerCase();\n\nconst getDesignFontTokens = (value: any, out: Set<string>) => {\n if (!value || typeof value !== 'object') {\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n getDesignFontTokens(item, out);\n }\n\n return;\n }\n\n for (const [key, fieldValue] of Object.entries(value)) {\n if (key === 'fontFamily') {\n if (typeof fieldValue === 'string') {\n out.add(normalizeFontToken(fieldValue));\n } else if (fieldValue && typeof fieldValue === 'object') {\n const fontFamilyValue = fieldValue as { label?: string; value?: string };\n\n if (typeof fontFamilyValue.label === 'string') {\n out.add(normalizeFontToken(fontFamilyValue.label));\n }\n\n if (typeof fontFamilyValue.value === 'string') {\n out.add(normalizeFontToken(fontFamilyValue.value));\n }\n }\n }\n\n if (fieldValue && typeof fieldValue === 'object') {\n getDesignFontTokens(fieldValue, out);\n }\n }\n};\n\nconst ensureChunksFonts = (data: any) => {\n if (!data || typeof data !== 'object') {\n return data;\n }\n\n data.chunks ??= {};\n\n const existingFonts: any[] = Array.isArray(data.chunks.fonts) ? data.chunks.fonts : [];\n const existingLabels = new Set(existingFonts.map((f: any) => f.label));\n\n const usedFontTokens = new Set<string>();\n getDesignFontTokens(data.design, usedFontTokens);\n\n const html = typeof data.html === 'string' ? data.html.toLowerCase() : '';\n\n for (const font of unlayerSupportedFonts) {\n const labelToken = normalizeFontToken(font.label);\n const valueToken = normalizeFontToken(font.value);\n const isUsedInDesign = usedFontTokens.has(labelToken) || usedFontTokens.has(valueToken);\n const isUsedInHtml = [labelToken, valueToken].some(token => html.includes(token));\n\n if ((isUsedInDesign || isUsedInHtml) && !existingLabels.has(font.label)) {\n existingFonts.push(font);\n existingLabels.add(font.label);\n }\n }\n\n data.chunks.fonts = existingFonts;\n return data;\n};\n\nconst FORM_FIELD_DATA_POINT_PREFIX = 'FORM_FIELD_';\n\nconst getByPath = (data: unknown, path: string): unknown => {\n if (!data || typeof data !== 'object') {\n return undefined;\n }\n\n return path.split('.').reduce<unknown>((current, part) => {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n\n return (current as Record<string, unknown>)[part];\n }, data);\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n !!value && typeof value === 'object' && !Array.isArray(value);\n\nconst deepMerge = (...sources: unknown[]): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n\n for (const source of sources) {\n if (!isPlainObject(source)) {\n continue;\n }\n\n for (const [key, value] of Object.entries(source)) {\n if (isPlainObject(value) && isPlainObject(out[key])) {\n out[key] = deepMerge(out[key], value);\n } else {\n out[key] = value;\n }\n }\n }\n\n return out;\n};\n\nconst setByPath = (target: Record<string, unknown>, path: string, value: unknown) => {\n const parts = path.split('.');\n if (!parts.length) {\n return;\n }\n\n let node: Record<string, unknown> = target;\n\n for (let i = 0; i < parts.length - 1; i += 1) {\n const key = parts[i];\n if (!isPlainObject(node[key])) {\n node[key] = {};\n }\n node = node[key] as Record<string, unknown>;\n }\n\n node[parts[parts.length - 1]] = value;\n};\n\nconst tokenizeFormulaFields = (expression: string): string[] => {\n const regex = /[A-Za-z_][A-Za-z0-9_.]*/g;\n return expression.match(regex) ?? [];\n};\n\nexport interface UnlayerDesignChangeInfo {\n isToolsListChanged: boolean;\n}\n\n// We are using exclusive lists here, because we can't be sure that we know all unlayer event types\nconst eventsNotChangingToolsList: DesignUpdatedEventType[] = [\n DesignUpdatedEventType.ContentMoved,\n DesignUpdatedEventType.ContentModified,\n DesignUpdatedEventType.ColumnModified,\n DesignUpdatedEventType.RowMoved,\n DesignUpdatedEventType.RowModified,\n DesignUpdatedEventType.BodyModified,\n];\n\nconst eventsNotAddingTools: DesignUpdatedEventType[] = [\n ...eventsNotChangingToolsList,\n DesignUpdatedEventType.ContentRemoved,\n DesignUpdatedEventType.ColumnRemoved,\n DesignUpdatedEventType.RowRemoved,\n];\n\nexport class UnlayerStore {\n readonly unlayerRef: UnlayerRef;\n private readonly schemaDummyData: Record<string, unknown>;\n private readonly dateSchemaFieldKeys: Set<string>;\n\n private editor: Unlayer | undefined;\n private isInit = false;\n private iframe?: HTMLIFrameElement;\n private hasDesign = false;\n private formFieldsByFormId: Record<number, FormFieldInfo[]> = {};\n private formFieldSamples: Record<string, unknown> = {};\n\n private onMessageCB?: (type: string, data: any) => void;\n private onChangeCB?: (info: UnlayerDesignChangeInfo) => void;\n private onSnapshotSaveCB?: (snapshot: UnlayerEditorTwin) => void;\n private onReadyCB?: () => void;\n private onImageCB?: (file: File) => Promise<{ url: string }>;\n private onErrorCB?: (title: string, description?: string) => void;\n private onFormSelectCB?: (formId: number) => void;\n private onCalcFieldOpenCB?: (usedFormIds: number[]) => void;\n private onCalcFieldSelectCB?: (fieldKeys: string[]) => void;\n\n constructor(readonly props: CreateUnlayerEditorProps) {\n const schemaData = this.props.schema ? schemaBuildMap(this.props.schema) : undefined;\n this.schemaDummyData = (schemaData?.dummyData ?? {}) as Record<string, unknown>;\n this.dateSchemaFieldKeys = new Set(\n Object.values(schemaData?.map ?? {})\n .filter(field => field.isValue && schemaIsDate(field.node))\n .map(field => field.fullKey),\n );\n\n this.props.eSignFieldTypes = ['Signature', 'Initials', 'Date Signed', 'Full Name'];\n\n this.unlayerRef = {\n loadDesign: design => {\n this.editor?.loadDesign(design);\n },\n saveDesign: cb => {\n this.editor?.saveDesign(cb);\n },\n exportHtml: cb => {\n this.editor?.exportHtml(data => {\n const result = ensureChunksFonts(data);\n result.demoData = this.buildCalculatedFieldDemoData(result.design);\n cb(result);\n });\n },\n sendFormList: forms => {\n this.sendFormList(forms);\n },\n sendFormFields: (formId, fields) => {\n this.sendFormFields(formId, fields);\n },\n sendCalcFieldLabels: labels => {\n this.sendCalcFieldLabels(labels);\n },\n };\n }\n\n init = async (container: HTMLDivElement) => {\n if (this.isInit) {\n return;\n }\n\n this.isInit = true;\n\n setTimeout(() => window.addEventListener('message', this.onPostMessage));\n\n await loadScript(defaultScriptUrl);\n\n this.editor = createUnlayerEditor(container, this.props);\n this.editor.addEventListener('design:loaded', this.onDesignLoaded);\n this.editor.addEventListener('design:updated', this.onDesignUpdated);\n this.editor.registerCallback('image', this.uploadImage);\n\n this.iframe = container.querySelector(`iframe`) ?? undefined;\n };\n\n destroy = () => {\n window.removeEventListener('message', this.onPostMessage);\n\n if (this.editor) {\n this.editor.removeEventListener('design:loaded', this.onDesignLoaded);\n this.editor.removeEventListener('design:updated', this.onDesignUpdated);\n this.editor.unregisterCallback('image', this.uploadImage);\n\n this.editor = undefined;\n }\n };\n\n addTwin = (twin: UnlayerEditorTwin) => {\n this.props.toolTwins?.push(twin);\n this.sendMessage('--add-twin', JSON.parse(JSON.stringify(twin)));\n };\n\n setDesign = (design?: UnlayerDesignFormat) => {\n if (!this.editor) {\n return;\n }\n\n this.hasDesign = !!design;\n\n if (design) {\n this.editor.loadDesign(design);\n }\n };\n\n setOnChange = (onChange?: UnlayerStore['onChangeCB']) => {\n this.onChangeCB = onChange;\n };\n\n setOnSnapshotSave = (onSnapshotSave?: UnlayerStore['onSnapshotSaveCB']) => {\n this.onSnapshotSaveCB = onSnapshotSave;\n };\n\n setOnReady = (onReady?: UnlayerStore['onReadyCB']) => {\n this.onReadyCB = onReady;\n };\n\n setOnImage = (onImage?: UnlayerStore['onImageCB']) => {\n this.onImageCB = onImage;\n };\n\n setOnError = (onError?: UnlayerStore['onErrorCB']) => {\n this.onErrorCB = onError;\n };\n\n setOnMessage = (onMessage?: UnlayerStore['onMessageCB']) => {\n this.onMessageCB = onMessage;\n };\n\n setOnFormSelect = (onFormSelect?: UnlayerStore['onFormSelectCB']) => {\n this.onFormSelectCB = onFormSelect;\n };\n\n setOnCalcFieldOpen = (onCalcFieldOpen?: UnlayerStore['onCalcFieldOpenCB']) => {\n this.onCalcFieldOpenCB = onCalcFieldOpen;\n };\n\n setOnCalcFieldSelect = (onCalcFieldSelect?: UnlayerStore['onCalcFieldSelectCB']) => {\n this.onCalcFieldSelectCB = onCalcFieldSelect;\n };\n\n sendFormList = (forms: FormInfo[]) => {\n this.sendMessage('--form-list', { forms });\n };\n\n sendFormFields = (formId: number, fields: FormFieldInfo[]) => {\n this.formFieldsByFormId[formId] = fields;\n this.updateFormFieldSamples(formId, fields);\n this.sendMessage('--form-fields', { formId, fields });\n };\n\n sendCalcFieldLabels = (labels: Record<string, string>) => {\n this.sendMessage('--calc-field-labels', { labels });\n };\n\n private onDesignLoaded = () => {\n if (!this.hasDesign) {\n this.hasDesign = true;\n this.editor?.setBodyValues({\n backgroundColor: 'rgba(0,0,0,0)',\n contentWidth: '100%',\n });\n }\n };\n\n private onDesignUpdated = (event: EventDesignUpdated) => {\n const isToolAdded = !eventsNotAddingTools.includes(event.type);\n const isToolsListChanged = !eventsNotChangingToolsList.includes(event.type);\n\n if (isToolAdded) {\n this.editor?.exportHtml(data => {\n let hasChanges = false;\n\n unlayerToolsIterate(data.design, tool => {\n const realTool = tool.slug\n ? unlayerToolsParseTwinKey(tool.slug ?? '')\n : undefined;\n\n if (realTool) {\n hasChanges = true;\n\n if (tool.slug) {\n delete data.design.counters[`u_content_custom_${tool.slug}`];\n delete tool.values._meta.htmlID;\n }\n\n tool.type = realTool.type;\n tool.slug = realTool.slug;\n }\n });\n\n if (hasChanges) {\n this.setDesign(data.design);\n }\n\n this.onChangeCB?.({ isToolsListChanged });\n });\n } else {\n this.onChangeCB?.({ isToolsListChanged });\n }\n };\n\n private onPostMessage = (e: MessageEvent) => {\n if (!e.data?.['-dte-message-from']) {\n return;\n }\n\n const type = e.data?.['-dte-message-from']?.type;\n const data = e.data?.['-dte-message-from']?.data;\n\n if (!type) {\n return;\n }\n\n if (type === '--ready' || type === '--registered') {\n this.onReadyCB?.();\n } else if (type === '--core-loaded') {\n const configData: UnlayerEventConfig = {\n dummyData: this.props.dummyData,\n schema: this.props.schema,\n generics: this.props.generics,\n genericConfigMode: this.props.genericConfigMode,\n isSnapshotMode: this.props.isSnapshotMode,\n holidays: this.props.holidays,\n };\n\n this.sendMessage('--config', JSON.parse(JSON.stringify(configData)));\n } else if (type === '--form-select') {\n this.onFormSelectCB?.(data?.formId);\n } else if (type === '--calc-field-open') {\n this.onCalcFieldOpenCB?.(data?.usedFormIds ?? []);\n } else if (type === '--calc-field-select') {\n if (this.onCalcFieldSelectCB) {\n this.onCalcFieldSelectCB(data?.fieldKeys ?? []);\n } else {\n this.sendCalcFieldLabels({});\n }\n } else if (type === '--data-loaded') {\n const data: UnlayerEventRegister = {\n customTools: this.props.tools.map(tool => ({ key: tool.key })),\n toolTwins: this.props.toolTwins,\n eSignRecipients: this.props.eSignRecipients,\n eSignFieldTypes: this.props.eSignFieldTypes,\n units: this.props.units?.map(unit => ({\n ...unit,\n values: {\n ...unit.values,\n adminConfig: undefined,\n },\n })),\n };\n\n this.sendMessage('--register', JSON.parse(JSON.stringify(data)));\n } else if (type === '--save-snapshot') {\n this.editor?.exportHtml(template => {\n unlayerToolsIterate(template.design, tool => {\n if (tool.values?.twin?.id === data.id) {\n if (!tool.slug) {\n return;\n }\n\n this.onSnapshotSaveCB?.({\n title: '',\n tool: tool.slug,\n values: tool.values,\n });\n return false;\n }\n });\n });\n }\n\n this.onMessageCB?.(type, data);\n };\n\n private updateFormFieldSamples = (formId: number, fields: FormFieldInfo[]) => {\n fields.forEach((field, index) => {\n const normalizedFieldId = String(field.id ?? '').replaceAll('-', '');\n if (!normalizedFieldId) {\n return;\n }\n\n const sampleValue = getFormFieldSampleValue(field, index);\n setByPath(\n this.formFieldSamples,\n `__submission_fields.${formId}.${normalizedFieldId}`,\n sampleValue,\n );\n this.formFieldSamples[`${FORM_FIELD_DATA_POINT_PREFIX}${normalizedFieldId}`] =\n sampleValue;\n });\n };\n\n private collectCalculatedFieldKeys = (design?: UnlayerDesignFormat): Set<string> => {\n const keys = new Set<string>();\n\n if (!design) {\n return keys;\n }\n\n unlayerToolsIterate(design, tool => {\n const calc = tool.values?.calculation;\n if (!calc || typeof calc !== 'object') {\n return;\n }\n\n if (typeof calc.expression === 'string') {\n for (const key of tokenizeFormulaFields(calc.expression)) {\n keys.add(key);\n }\n }\n\n if (calc.fieldLabels && typeof calc.fieldLabels === 'object') {\n Object.keys(calc.fieldLabels).forEach(key => keys.add(key));\n }\n });\n\n return keys;\n };\n\n private resolveDemoValue = (\n key: string,\n fallbackIndex: number,\n sourceData: Record<string, unknown>,\n ): unknown => {\n const parsedFormField = parseFormFieldKey(key);\n if (parsedFormField) {\n const normalizedFieldId = parsedFormField.fieldId;\n const formFields = this.formFieldsByFormId[parsedFormField.formId] ?? [];\n const fieldIndex = formFields.findIndex(\n field => String(field.id ?? '').replaceAll('-', '') === normalizedFieldId,\n );\n const field = fieldIndex >= 0 ? formFields[fieldIndex] : undefined;\n const sample = field\n ? getFormFieldSampleValue(field, fieldIndex)\n : getByPath(\n this.formFieldSamples,\n `__submission_fields.${parsedFormField.formId}.${normalizedFieldId}`,\n );\n\n if (sample !== undefined) {\n return sample;\n }\n\n return this.dateSchemaFieldKeys.has(key) ? '2026-01-15' : 44 + fallbackIndex;\n }\n\n const existing = getByPath(sourceData, key);\n if (existing !== undefined) {\n return existing;\n }\n\n if (this.dateSchemaFieldKeys.has(key)) {\n return '2026-01-15';\n }\n\n return 44 + fallbackIndex;\n };\n\n private buildCalculatedFieldDemoData = (\n design?: UnlayerDesignFormat,\n ): Record<string, unknown> => {\n const demoData: Record<string, unknown> = {};\n const usedKeys = Array.from(this.collectCalculatedFieldKeys(design));\n const sourceData = deepMerge(\n this.schemaDummyData,\n this.props.dummyData,\n this.formFieldSamples,\n );\n\n usedKeys.forEach((key, index) => {\n const value = this.resolveDemoValue(key, index, sourceData);\n setByPath(demoData, key, value);\n });\n\n return demoData;\n };\n\n private sendMessage = (type: string, data?: any) => {\n this.iframe?.contentWindow?.postMessage(\n {\n '-dte-message-to': {\n type,\n data,\n },\n },\n '*',\n );\n };\n\n private uploadImage = async (\n data: { attachments: File[] },\n done: (result: { progress: number; url?: string }) => void,\n ) => {\n if (!this.onImageCB) {\n done({ progress: 100 });\n throw new Error('image upload is not implemented');\n }\n\n if (!data.attachments?.length) {\n return;\n }\n\n const file = data.attachments[0];\n\n const res = await this.validateImage(file, {\n ...defaultImageValidation,\n ...(this.props.imageValidation ?? {}),\n });\n\n if (!res.isValid) {\n this.onErrorCB?.(res.title, res.description);\n return;\n }\n\n done({ progress: 0 });\n\n try {\n const { url } = await this.onImageCB(file);\n done({ progress: 100, url });\n } catch {\n this.onErrorCB?.(\n 'Image upload failed',\n 'Something went wrong while uploading the image. Please try again or select another image.',\n );\n done({ progress: 100 });\n }\n };\n\n private validateImage = async (\n file: File,\n imageValidation: { maxFileSize: number; maxWidth: number; maxHeight: number },\n ): Promise<{ isValid: boolean; title: string; description: string }> => {\n const { maxFileSize, maxHeight, maxWidth } = imageValidation;\n\n if (file.size > maxFileSize) {\n const maxSizeMB = (maxFileSize / 1024 / 1024).toFixed(2);\n const fileSizeMB = (file.size / 1024 / 1024).toFixed(2);\n return {\n isValid: false,\n title: 'Image size limit reached',\n description: `This image is ${fileSizeMB}MB, which is above the ${maxSizeMB}MB limit. Please upload a smaller file to continue.`,\n };\n }\n\n return new Promise(resolve => {\n const img = new Image();\n const objectUrl = URL.createObjectURL(file);\n\n img.onload = () => {\n URL.revokeObjectURL(objectUrl);\n const { height, width } = img;\n\n if (width > maxWidth || height > maxHeight) {\n resolve({\n isValid: false,\n title: 'Dimension limit reached',\n description: `These image dimensions (${width}x${height}px) exceed the ${maxWidth}x${maxHeight}px limit. Please resize the image and try again.`,\n });\n } else {\n resolve({ isValid: true, title: '', description: '' });\n }\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(objectUrl);\n resolve({\n isValid: false,\n title: 'The image is broken',\n description:\n 'Looks like this image isn’t valid. Please choose another image and try again.',\n });\n };\n\n img.src = objectUrl;\n });\n };\n}\n"],"names":["loadScript","defaultImageValidation","unlayerSupportedFonts","getFormFieldSampleValue","parseFormFieldKey","schemaBuildMap","schemaIsDate","unlayerToolsParseTwinKey","unlayerToolsIterate","createUnlayerEditor","DesignUpdatedEventType","defaultScriptUrl","normalizeFontToken","font","replace","split","trim","toLowerCase","getDesignFontTokens","value","out","Array","isArray","item","key","fieldValue","Object","entries","add","fontFamilyValue","label","ensureChunksFonts","data","chunks","existingFonts","fonts","existingLabels","Set","map","f","usedFontTokens","design","html","labelToken","valueToken","isUsedInDesign","has","isUsedInHtml","some","token","includes","push","FORM_FIELD_DATA_POINT_PREFIX","getByPath","path","undefined","reduce","current","part","isPlainObject","deepMerge","sources","source","setByPath","target","parts","length","node","i","tokenizeFormulaFields","expression","regex","match","eventsNotChangingToolsList","ContentMoved","ContentModified","ColumnModified","RowMoved","RowModified","BodyModified","eventsNotAddingTools","ContentRemoved","ColumnRemoved","RowRemoved","UnlayerStore","props","unlayerRef","schemaDummyData","dateSchemaFieldKeys","editor","isInit","iframe","hasDesign","formFieldsByFormId","formFieldSamples","onMessageCB","onChangeCB","onSnapshotSaveCB","onReadyCB","onImageCB","onErrorCB","onFormSelectCB","onCalcFieldOpenCB","onCalcFieldSelectCB","init","destroy","addTwin","setDesign","setOnChange","setOnSnapshotSave","setOnReady","setOnImage","setOnError","setOnMessage","setOnFormSelect","setOnCalcFieldOpen","setOnCalcFieldSelect","sendFormList","sendFormFields","sendCalcFieldLabels","onDesignLoaded","onDesignUpdated","onPostMessage","updateFormFieldSamples","collectCalculatedFieldKeys","resolveDemoValue","buildCalculatedFieldDemoData","sendMessage","uploadImage","validateImage","container","setTimeout","window","addEventListener","registerCallback","querySelector","removeEventListener","unregisterCallback","twin","toolTwins","JSON","parse","stringify","loadDesign","onChange","onSnapshotSave","onReady","onImage","onError","onMessage","onFormSelect","onCalcFieldOpen","onCalcFieldSelect","forms","formId","fields","labels","setBodyValues","backgroundColor","contentWidth","event","isToolAdded","type","isToolsListChanged","exportHtml","hasChanges","tool","realTool","slug","counters","values","_meta","htmlID","e","configData","dummyData","schema","generics","genericConfigMode","isSnapshotMode","holidays","usedFormIds","fieldKeys","customTools","tools","eSignRecipients","eSignFieldTypes","units","unit","adminConfig","template","id","title","forEach","field","index","normalizedFieldId","String","replaceAll","sampleValue","keys","calc","calculation","fieldLabels","fallbackIndex","sourceData","parsedFormField","fieldId","formFields","fieldIndex","findIndex","sample","existing","demoData","usedKeys","from","contentWindow","postMessage","done","progress","Error","attachments","file","res","imageValidation","isValid","description","url","maxFileSize","maxHeight","maxWidth","size","maxSizeMB","toFixed","fileSizeMB","Promise","resolve","img","Image","objectUrl","URL","createObjectURL","onload","revokeObjectURL","height","width","onerror","src","schemaData","filter","isValue","fullKey","saveDesign","cb","result"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,sBAAsB,QAAQ,mBAAmB;AAE1D,SAASC,qBAAqB,QAAQ,iBAAiB;AACvD,SAGIC,uBAAuB,EACvBC,iBAAiB,QACd,iBAAiB;AACxB,SAASC,cAAc,EAAEC,YAAY,QAAQ,kBAAkB;AAC/D,SAASC,wBAAwB,QAAQ,iBAAiB;AAC1D,SAASC,mBAAmB,QAAQ,UAAU;AAC9C,SACIC,mBAAmB,EACnBC,sBAAsB,QAGnB,YAAY;AAGnB,MAAMC,mBAAmB;AAEzB,MAAMC,qBAAqB,CAACC,OACxBA,KAAKC,OAAO,CAAC,SAAS,IAAIC,KAAK,CAAC,IAAI,CAAC,EAAE,CAACC,IAAI,GAAGC,WAAW;AAE9D,MAAMC,sBAAsB,CAACC,OAAYC;IACrC,IAAI,CAACD,SAAS,OAAOA,UAAU,UAAU;QACrC;IACJ;IAEA,IAAIE,MAAMC,OAAO,CAACH,QAAQ;QACtB,KAAK,MAAMI,QAAQJ,MAAO;YACtBD,oBAAoBK,MAAMH;QAC9B;QAEA;IACJ;IAEA,KAAK,MAAM,CAACI,KAAKC,WAAW,IAAIC,OAAOC,OAAO,CAACR,OAAQ;QACnD,IAAIK,QAAQ,cAAc;YACtB,IAAI,OAAOC,eAAe,UAAU;gBAChCL,IAAIQ,GAAG,CAAChB,mBAAmBa;YAC/B,OAAO,IAAIA,cAAc,OAAOA,eAAe,UAAU;gBACrD,MAAMI,kBAAkBJ;gBAExB,IAAI,OAAOI,gBAAgBC,KAAK,KAAK,UAAU;oBAC3CV,IAAIQ,GAAG,CAAChB,mBAAmBiB,gBAAgBC,KAAK;gBACpD;gBAEA,IAAI,OAAOD,gBAAgBV,KAAK,KAAK,UAAU;oBAC3CC,IAAIQ,GAAG,CAAChB,mBAAmBiB,gBAAgBV,KAAK;gBACpD;YACJ;QACJ;QAEA,IAAIM,cAAc,OAAOA,eAAe,UAAU;YAC9CP,oBAAoBO,YAAYL;QACpC;IACJ;AACJ;AAEA,MAAMW,oBAAoB,CAACC;QAKvBA,OAAAA;IAJA,IAAI,CAACA,QAAQ,OAAOA,SAAS,UAAU;QACnC,OAAOA;IACX;KAEAA,UAAAA,CAAAA,QAAAA,MAAKC,MAAM,cAAXD,qBAAAA,UAAAA,MAAKC,MAAM,GAAK,CAAC;IAEjB,MAAMC,gBAAuBb,MAAMC,OAAO,CAACU,KAAKC,MAAM,CAACE,KAAK,IAAIH,KAAKC,MAAM,CAACE,KAAK,GAAG,EAAE;IACtF,MAAMC,iBAAiB,IAAIC,IAAIH,cAAcI,GAAG,CAAC,CAACC,IAAWA,EAAET,KAAK;IAEpE,MAAMU,iBAAiB,IAAIH;IAC3BnB,oBAAoBc,KAAKS,MAAM,EAAED;IAEjC,MAAME,OAAO,OAAOV,KAAKU,IAAI,KAAK,WAAWV,KAAKU,IAAI,CAACzB,WAAW,KAAK;IAEvE,KAAK,MAAMJ,QAAQX,sBAAuB;QACtC,MAAMyC,aAAa/B,mBAAmBC,KAAKiB,KAAK;QAChD,MAAMc,aAAahC,mBAAmBC,KAAKM,KAAK;QAChD,MAAM0B,iBAAiBL,eAAeM,GAAG,CAACH,eAAeH,eAAeM,GAAG,CAACF;QAC5E,MAAMG,eAAe;YAACJ;YAAYC;SAAW,CAACI,IAAI,CAACC,CAAAA,QAASP,KAAKQ,QAAQ,CAACD;QAE1E,IAAI,AAACJ,CAAAA,kBAAkBE,YAAW,KAAM,CAACX,eAAeU,GAAG,CAACjC,KAAKiB,KAAK,GAAG;YACrEI,cAAciB,IAAI,CAACtC;YACnBuB,eAAeR,GAAG,CAACf,KAAKiB,KAAK;QACjC;IACJ;IAEAE,KAAKC,MAAM,CAACE,KAAK,GAAGD;IACpB,OAAOF;AACX;AAEA,MAAMoB,+BAA+B;AAErC,MAAMC,YAAY,CAACrB,MAAesB;IAC9B,IAAI,CAACtB,QAAQ,OAAOA,SAAS,UAAU;QACnC,OAAOuB;IACX;IAEA,OAAOD,KAAKvC,KAAK,CAAC,KAAKyC,MAAM,CAAU,CAACC,SAASC;QAC7C,IAAI,CAACD,WAAW,OAAOA,YAAY,UAAU;YACzC,OAAOF;QACX;QAEA,OAAO,AAACE,OAAmC,CAACC,KAAK;IACrD,GAAG1B;AACP;AAEA,MAAM2B,gBAAgB,CAACxC,QACnB,CAAC,CAACA,SAAS,OAAOA,UAAU,YAAY,CAACE,MAAMC,OAAO,CAACH;AAE3D,MAAMyC,YAAY,CAAC,GAAGC;IAClB,MAAMzC,MAA+B,CAAC;IAEtC,KAAK,MAAM0C,UAAUD,QAAS;QAC1B,IAAI,CAACF,cAAcG,SAAS;YACxB;QACJ;QAEA,KAAK,MAAM,CAACtC,KAAKL,MAAM,IAAIO,OAAOC,OAAO,CAACmC,QAAS;YAC/C,IAAIH,cAAcxC,UAAUwC,cAAcvC,GAAG,CAACI,IAAI,GAAG;gBACjDJ,GAAG,CAACI,IAAI,GAAGoC,UAAUxC,GAAG,CAACI,IAAI,EAAEL;YACnC,OAAO;gBACHC,GAAG,CAACI,IAAI,GAAGL;YACf;QACJ;IACJ;IAEA,OAAOC;AACX;AAEA,MAAM2C,YAAY,CAACC,QAAiCV,MAAcnC;IAC9D,MAAM8C,QAAQX,KAAKvC,KAAK,CAAC;IACzB,IAAI,CAACkD,MAAMC,MAAM,EAAE;QACf;IACJ;IAEA,IAAIC,OAAgCH;IAEpC,IAAK,IAAII,IAAI,GAAGA,IAAIH,MAAMC,MAAM,GAAG,GAAGE,KAAK,EAAG;QAC1C,MAAM5C,MAAMyC,KAAK,CAACG,EAAE;QACpB,IAAI,CAACT,cAAcQ,IAAI,CAAC3C,IAAI,GAAG;YAC3B2C,IAAI,CAAC3C,IAAI,GAAG,CAAC;QACjB;QACA2C,OAAOA,IAAI,CAAC3C,IAAI;IACpB;IAEA2C,IAAI,CAACF,KAAK,CAACA,MAAMC,MAAM,GAAG,EAAE,CAAC,GAAG/C;AACpC;AAEA,MAAMkD,wBAAwB,CAACC;QAEpBA;IADP,MAAMC,QAAQ;IACd,QAAOD,oBAAAA,WAAWE,KAAK,CAACD,oBAAjBD,+BAAAA,oBAA2B,EAAE;AACxC;AAMA,mGAAmG;AACnG,MAAMG,6BAAuD;IACzD/D,uBAAuBgE,YAAY;IACnChE,uBAAuBiE,eAAe;IACtCjE,uBAAuBkE,cAAc;IACrClE,uBAAuBmE,QAAQ;IAC/BnE,uBAAuBoE,WAAW;IAClCpE,uBAAuBqE,YAAY;CACtC;AAED,MAAMC,uBAAiD;OAChDP;IACH/D,uBAAuBuE,cAAc;IACrCvE,uBAAuBwE,aAAa;IACpCxE,uBAAuByE,UAAU;CACpC;AAED,OAAO,MAAMC;IAsBT,YAAY,AAASC,KAA+B,CAAE;;;QArBtD,uBAASC,cAAT,KAAA;QACA,uBAAiBC,mBAAjB,KAAA;QACA,uBAAiBC,uBAAjB,KAAA;QAEA,uBAAQC,UAAR,KAAA;QACA,uBAAQC,UAAR,KAAA;QACA,uBAAQC,UAAR,KAAA;QACA,uBAAQC,aAAR,KAAA;QACA,uBAAQC,sBAAR,KAAA;QACA,uBAAQC,oBAAR,KAAA;QAEA,uBAAQC,eAAR,KAAA;QACA,uBAAQC,cAAR,KAAA;QACA,uBAAQC,oBAAR,KAAA;QACA,uBAAQC,aAAR,KAAA;QACA,uBAAQC,aAAR,KAAA;QACA,uBAAQC,aAAR,KAAA;QACA,uBAAQC,kBAAR,KAAA;QACA,uBAAQC,qBAAR,KAAA;QACA,uBAAQC,uBAAR,KAAA;QAuCAC,uBAAAA,QAAAA,KAAAA;QAmBAC,uBAAAA,WAAAA,KAAAA;QAYAC,uBAAAA,WAAAA,KAAAA;QAKAC,uBAAAA,aAAAA,KAAAA;QAYAC,uBAAAA,eAAAA,KAAAA;QAIAC,uBAAAA,qBAAAA,KAAAA;QAIAC,uBAAAA,cAAAA,KAAAA;QAIAC,uBAAAA,cAAAA,KAAAA;QAIAC,uBAAAA,cAAAA,KAAAA;QAIAC,uBAAAA,gBAAAA,KAAAA;QAIAC,uBAAAA,mBAAAA,KAAAA;QAIAC,uBAAAA,sBAAAA,KAAAA;QAIAC,uBAAAA,wBAAAA,KAAAA;QAIAC,uBAAAA,gBAAAA,KAAAA;QAIAC,uBAAAA,kBAAAA,KAAAA;QAMAC,uBAAAA,uBAAAA,KAAAA;QAIA,uBAAQC,kBAAR,KAAA;QAUA,uBAAQC,mBAAR,KAAA;QAqCA,uBAAQC,iBAAR,KAAA;QAyEA,uBAAQC,0BAAR,KAAA;QAkBA,uBAAQC,8BAAR,KAAA;QA2BA,uBAAQC,oBAAR,KAAA;QAuCA,uBAAQC,gCAAR,KAAA;QAmBA,uBAAQC,eAAR,KAAA;QAYA,uBAAQC,eAAR,KAAA;QAuCA,uBAAQC,iBAAR,KAAA;aAzZqB5C,QAAAA;aAhBbK,SAAS;aAETE,YAAY;aACZC,qBAAsD,CAAC;aACvDC,mBAA4C,CAAC;aAiDrDU,OAAO,OAAO0B;gBAgBIA;YAfd,IAAI,IAAI,CAACxC,MAAM,EAAE;gBACb;YACJ;YAEA,IAAI,CAACA,MAAM,GAAG;YAEdyC,WAAW,IAAMC,OAAOC,gBAAgB,CAAC,WAAW,IAAI,CAACX,aAAa;YAEtE,MAAM1H,WAAWW;YAEjB,IAAI,CAAC8E,MAAM,GAAGhF,oBAAoByH,WAAW,IAAI,CAAC7C,KAAK;YACvD,IAAI,CAACI,MAAM,CAAC4C,gBAAgB,CAAC,iBAAiB,IAAI,CAACb,cAAc;YACjE,IAAI,CAAC/B,MAAM,CAAC4C,gBAAgB,CAAC,kBAAkB,IAAI,CAACZ,eAAe;YACnE,IAAI,CAAChC,MAAM,CAAC6C,gBAAgB,CAAC,SAAS,IAAI,CAACN,WAAW;YAEtD,IAAI,CAACrC,MAAM,IAAGuC,2BAAAA,UAAUK,aAAa,CAAC,CAAC,MAAM,CAAC,eAAhCL,sCAAAA,2BAAqC3E;QACvD;aAEAkD,UAAU;YACN2B,OAAOI,mBAAmB,CAAC,WAAW,IAAI,CAACd,aAAa;YAExD,IAAI,IAAI,CAACjC,MAAM,EAAE;gBACb,IAAI,CAACA,MAAM,CAAC+C,mBAAmB,CAAC,iBAAiB,IAAI,CAAChB,cAAc;gBACpE,IAAI,CAAC/B,MAAM,CAAC+C,mBAAmB,CAAC,kBAAkB,IAAI,CAACf,eAAe;gBACtE,IAAI,CAAChC,MAAM,CAACgD,kBAAkB,CAAC,SAAS,IAAI,CAACT,WAAW;gBAExD,IAAI,CAACvC,MAAM,GAAGlC;YAClB;QACJ;aAEAmD,UAAU,CAACgC;gBACP;aAAA,wBAAA,IAAI,CAACrD,KAAK,CAACsD,SAAS,cAApB,4CAAA,sBAAsBxF,IAAI,CAACuF;YAC3B,IAAI,CAACX,WAAW,CAAC,cAAca,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACJ;QAC7D;aAEA/B,YAAY,CAAClE;YACT,IAAI,CAAC,IAAI,CAACgD,MAAM,EAAE;gBACd;YACJ;YAEA,IAAI,CAACG,SAAS,GAAG,CAAC,CAACnD;YAEnB,IAAIA,QAAQ;gBACR,IAAI,CAACgD,MAAM,CAACsD,UAAU,CAACtG;YAC3B;QACJ;aAEAmE,cAAc,CAACoC;YACX,IAAI,CAAChD,UAAU,GAAGgD;QACtB;aAEAnC,oBAAoB,CAACoC;YACjB,IAAI,CAAChD,gBAAgB,GAAGgD;QAC5B;aAEAnC,aAAa,CAACoC;YACV,IAAI,CAAChD,SAAS,GAAGgD;QACrB;aAEAnC,aAAa,CAACoC;YACV,IAAI,CAAChD,SAAS,GAAGgD;QACrB;aAEAnC,aAAa,CAACoC;YACV,IAAI,CAAChD,SAAS,GAAGgD;QACrB;aAEAnC,eAAe,CAACoC;YACZ,IAAI,CAACtD,WAAW,GAAGsD;QACvB;aAEAnC,kBAAkB,CAACoC;YACf,IAAI,CAACjD,cAAc,GAAGiD;QAC1B;aAEAnC,qBAAqB,CAACoC;YAClB,IAAI,CAACjD,iBAAiB,GAAGiD;QAC7B;aAEAnC,uBAAuB,CAACoC;YACpB,IAAI,CAACjD,mBAAmB,GAAGiD;QAC/B;aAEAnC,eAAe,CAACoC;YACZ,IAAI,CAAC1B,WAAW,CAAC,eAAe;gBAAE0B;YAAM;QAC5C;aAEAnC,iBAAiB,CAACoC,QAAgBC;YAC9B,IAAI,CAAC9D,kBAAkB,CAAC6D,OAAO,GAAGC;YAClC,IAAI,CAAChC,sBAAsB,CAAC+B,QAAQC;YACpC,IAAI,CAAC5B,WAAW,CAAC,iBAAiB;gBAAE2B;gBAAQC;YAAO;QACvD;aAEApC,sBAAsB,CAACqC;YACnB,IAAI,CAAC7B,WAAW,CAAC,uBAAuB;gBAAE6B;YAAO;QACrD;aAEQpC,iBAAiB;YACrB,IAAI,CAAC,IAAI,CAAC5B,SAAS,EAAE;oBAEjB;gBADA,IAAI,CAACA,SAAS,GAAG;iBACjB,eAAA,IAAI,CAACH,MAAM,cAAX,mCAAA,aAAaoE,aAAa,CAAC;oBACvBC,iBAAiB;oBACjBC,cAAc;gBAClB;YACJ;QACJ;aAEQtC,kBAAkB,CAACuC;YACvB,MAAMC,cAAc,CAACjF,qBAAqB9B,QAAQ,CAAC8G,MAAME,IAAI;YAC7D,MAAMC,qBAAqB,CAAC1F,2BAA2BvB,QAAQ,CAAC8G,MAAME,IAAI;YAE1E,IAAID,aAAa;oBACb;iBAAA,eAAA,IAAI,CAACxE,MAAM,cAAX,mCAAA,aAAa2E,UAAU,CAACpI,CAAAA;wBAyBpB,kBAAA;oBAxBA,IAAIqI,aAAa;oBAEjB7J,oBAAoBwB,KAAKS,MAAM,EAAE6H,CAAAA;4BAEEA;wBAD/B,MAAMC,WAAWD,KAAKE,IAAI,GACpBjK,0BAAyB+J,aAAAA,KAAKE,IAAI,cAATF,wBAAAA,aAAa,MACtC/G;wBAEN,IAAIgH,UAAU;4BACVF,aAAa;4BAEb,IAAIC,KAAKE,IAAI,EAAE;gCACX,OAAOxI,KAAKS,MAAM,CAACgI,QAAQ,CAAC,CAAC,iBAAiB,EAAEH,KAAKE,IAAI,EAAE,CAAC;gCAC5D,OAAOF,KAAKI,MAAM,CAACC,KAAK,CAACC,MAAM;4BACnC;4BAEAN,KAAKJ,IAAI,GAAGK,SAASL,IAAI;4BACzBI,KAAKE,IAAI,GAAGD,SAASC,IAAI;wBAC7B;oBACJ;oBAEA,IAAIH,YAAY;wBACZ,IAAI,CAAC1D,SAAS,CAAC3E,KAAKS,MAAM;oBAC9B;qBAEA,mBAAA,CAAA,QAAA,IAAI,EAACuD,UAAU,cAAf,uCAAA,sBAAA,OAAkB;wBAAEmE;oBAAmB;gBAC3C;YACJ,OAAO;oBACH,kBAAA;iBAAA,mBAAA,CAAA,QAAA,IAAI,EAACnE,UAAU,cAAf,uCAAA,sBAAA,OAAkB;oBAAEmE;gBAAmB;YAC3C;QACJ;aAEQzC,gBAAgB,CAACmD;gBAChBA,SAIQA,wBAAAA,UACAA,yBAAAA,UAgEb,mBAAA;YArEA,IAAI,GAACA,UAAAA,EAAE7I,IAAI,cAAN6I,8BAAAA,OAAQ,CAAC,oBAAoB,GAAE;gBAChC;YACJ;YAEA,MAAMX,QAAOW,WAAAA,EAAE7I,IAAI,cAAN6I,gCAAAA,yBAAAA,QAAQ,CAAC,oBAAoB,cAA7BA,6CAAAA,uBAA+BX,IAAI;YAChD,MAAMlI,QAAO6I,WAAAA,EAAE7I,IAAI,cAAN6I,gCAAAA,0BAAAA,QAAQ,CAAC,oBAAoB,cAA7BA,8CAAAA,wBAA+B7I,IAAI;YAEhD,IAAI,CAACkI,MAAM;gBACP;YACJ;YAEA,IAAIA,SAAS,aAAaA,SAAS,gBAAgB;oBAC/C,iBAAA;iBAAA,kBAAA,CAAA,SAAA,IAAI,EAAChE,SAAS,cAAd,sCAAA,qBAAA;YACJ,OAAO,IAAIgE,SAAS,iBAAiB;gBACjC,MAAMY,aAAiC;oBACnCC,WAAW,IAAI,CAAC1F,KAAK,CAAC0F,SAAS;oBAC/BC,QAAQ,IAAI,CAAC3F,KAAK,CAAC2F,MAAM;oBACzBC,UAAU,IAAI,CAAC5F,KAAK,CAAC4F,QAAQ;oBAC7BC,mBAAmB,IAAI,CAAC7F,KAAK,CAAC6F,iBAAiB;oBAC/CC,gBAAgB,IAAI,CAAC9F,KAAK,CAAC8F,cAAc;oBACzCC,UAAU,IAAI,CAAC/F,KAAK,CAAC+F,QAAQ;gBACjC;gBAEA,IAAI,CAACrD,WAAW,CAAC,YAAYa,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACgC;YAC3D,OAAO,IAAIZ,SAAS,iBAAiB;oBACjC,sBAAA;iBAAA,uBAAA,CAAA,SAAA,IAAI,EAAC7D,cAAc,cAAnB,2CAAA,0BAAA,QAAsBrE,iBAAAA,2BAAAA,KAAM0H,MAAM;YACtC,OAAO,IAAIQ,SAAS,qBAAqB;;oBACrC,yBAAA;iBAAA,0BAAA,CAAA,SAAA,IAAI,EAAC5D,iBAAiB,cAAtB,8CAAA,6BAAA,gBAAyBtE,iBAAAA,2BAAAA,KAAMqJ,WAAW,uCAAI,EAAE;YACpD,OAAO,IAAInB,SAAS,uBAAuB;gBACvC,IAAI,IAAI,CAAC3D,mBAAmB,EAAE;;oBAC1B,IAAI,CAACA,mBAAmB,UAACvE,iBAAAA,2BAAAA,KAAMsJ,SAAS,yCAAI,EAAE;gBAClD,OAAO;oBACH,IAAI,CAAC/D,mBAAmB,CAAC,CAAC;gBAC9B;YACJ,OAAO,IAAI2C,SAAS,iBAAiB;oBAMtB;gBALX,MAAMlI,OAA6B;oBAC/BuJ,aAAa,IAAI,CAAClG,KAAK,CAACmG,KAAK,CAAClJ,GAAG,CAACgI,CAAAA,OAAS,CAAA;4BAAE9I,KAAK8I,KAAK9I,GAAG;wBAAC,CAAA;oBAC3DmH,WAAW,IAAI,CAACtD,KAAK,CAACsD,SAAS;oBAC/B8C,iBAAiB,IAAI,CAACpG,KAAK,CAACoG,eAAe;oBAC3CC,iBAAiB,IAAI,CAACrG,KAAK,CAACqG,eAAe;oBAC3CC,KAAK,GAAE,oBAAA,IAAI,CAACtG,KAAK,CAACsG,KAAK,cAAhB,wCAAA,kBAAkBrJ,GAAG,CAACsJ,CAAAA,OAAS,CAAA;4BAClC,GAAGA,IAAI;4BACPlB,QAAQ;gCACJ,GAAGkB,KAAKlB,MAAM;gCACdmB,aAAatI;4BACjB;wBACJ,CAAA;gBACJ;gBAEA,IAAI,CAACwE,WAAW,CAAC,cAAca,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAAC9G;YAC7D,OAAO,IAAIkI,SAAS,mBAAmB;oBACnC;iBAAA,eAAA,IAAI,CAACzE,MAAM,cAAX,mCAAA,aAAa2E,UAAU,CAAC0B,CAAAA;oBACpBtL,oBAAoBsL,SAASrJ,MAAM,EAAE6H,CAAAA;4BAC7BA,mBAAAA;wBAAJ,IAAIA,EAAAA,eAAAA,KAAKI,MAAM,cAAXJ,oCAAAA,oBAAAA,aAAa5B,IAAI,cAAjB4B,wCAAAA,kBAAmByB,EAAE,MAAK/J,KAAK+J,EAAE,EAAE;gCAKnC,wBAAA;4BAJA,IAAI,CAACzB,KAAKE,IAAI,EAAE;gCACZ;4BACJ;6BAEA,yBAAA,CAAA,QAAA,IAAI,EAACvE,gBAAgB,cAArB,6CAAA,4BAAA,OAAwB;gCACpB+F,OAAO;gCACP1B,MAAMA,KAAKE,IAAI;gCACfE,QAAQJ,KAAKI,MAAM;4BACvB;4BACA,OAAO;wBACX;oBACJ;gBACJ;YACJ;aAEA,oBAAA,CAAA,QAAA,IAAI,EAAC3E,WAAW,cAAhB,wCAAA,uBAAA,OAAmBmE,MAAMlI;QAC7B;aAEQ2F,yBAAyB,CAAC+B,QAAgBC;YAC9CA,OAAOsC,OAAO,CAAC,CAACC,OAAOC;oBACcD;gBAAjC,MAAME,oBAAoBC,QAAOH,YAAAA,MAAMH,EAAE,cAARG,uBAAAA,YAAY,IAAII,UAAU,CAAC,KAAK;gBACjE,IAAI,CAACF,mBAAmB;oBACpB;gBACJ;gBAEA,MAAMG,cAAcpM,wBAAwB+L,OAAOC;gBACnDpI,UACI,IAAI,CAAC+B,gBAAgB,EACrB,CAAC,oBAAoB,EAAE4D,OAAO,CAAC,EAAE0C,mBAAmB,EACpDG;gBAEJ,IAAI,CAACzG,gBAAgB,CAAC,GAAG1C,+BAA+BgJ,mBAAmB,CAAC,GACxEG;YACR;QACJ;aAEQ3E,6BAA6B,CAACnF;YAClC,MAAM+J,OAAO,IAAInK;YAEjB,IAAI,CAACI,QAAQ;gBACT,OAAO+J;YACX;YAEAhM,oBAAoBiC,QAAQ6H,CAAAA;oBACXA;gBAAb,MAAMmC,QAAOnC,eAAAA,KAAKI,MAAM,cAAXJ,mCAAAA,aAAaoC,WAAW;gBACrC,IAAI,CAACD,QAAQ,OAAOA,SAAS,UAAU;oBACnC;gBACJ;gBAEA,IAAI,OAAOA,KAAKnI,UAAU,KAAK,UAAU;oBACrC,KAAK,MAAM9C,OAAO6C,sBAAsBoI,KAAKnI,UAAU,EAAG;wBACtDkI,KAAK5K,GAAG,CAACJ;oBACb;gBACJ;gBAEA,IAAIiL,KAAKE,WAAW,IAAI,OAAOF,KAAKE,WAAW,KAAK,UAAU;oBAC1DjL,OAAO8K,IAAI,CAACC,KAAKE,WAAW,EAAEV,OAAO,CAACzK,CAAAA,MAAOgL,KAAK5K,GAAG,CAACJ;gBAC1D;YACJ;YAEA,OAAOgL;QACX;aAEQ3E,mBAAmB,CACvBrG,KACAoL,eACAC;YAEA,MAAMC,kBAAkB1M,kBAAkBoB;YAC1C,IAAIsL,iBAAiB;oBAEE;gBADnB,MAAMV,oBAAoBU,gBAAgBC,OAAO;gBACjD,MAAMC,cAAa,kDAAA,IAAI,CAACnH,kBAAkB,CAACiH,gBAAgBpD,MAAM,CAAC,cAA/C,6DAAA,kDAAmD,EAAE;gBACxE,MAAMuD,aAAaD,WAAWE,SAAS,CACnChB,CAAAA;wBAAgBA;2BAAPG,QAAOH,YAAAA,MAAMH,EAAE,cAARG,uBAAAA,YAAY,IAAII,UAAU,CAAC,KAAK,QAAQF;;gBAE5D,MAAMF,QAAQe,cAAc,IAAID,UAAU,CAACC,WAAW,GAAG1J;gBACzD,MAAM4J,SAASjB,QACT/L,wBAAwB+L,OAAOe,cAC/B5J,UACI,IAAI,CAACyC,gBAAgB,EACrB,CAAC,oBAAoB,EAAEgH,gBAAgBpD,MAAM,CAAC,CAAC,EAAE0C,mBAAmB;gBAG9E,IAAIe,WAAW5J,WAAW;oBACtB,OAAO4J;gBACX;gBAEA,OAAO,IAAI,CAAC3H,mBAAmB,CAAC1C,GAAG,CAACtB,OAAO,eAAe,KAAKoL;YACnE;YAEA,MAAMQ,WAAW/J,UAAUwJ,YAAYrL;YACvC,IAAI4L,aAAa7J,WAAW;gBACxB,OAAO6J;YACX;YAEA,IAAI,IAAI,CAAC5H,mBAAmB,CAAC1C,GAAG,CAACtB,MAAM;gBACnC,OAAO;YACX;YAEA,OAAO,KAAKoL;QAChB;aAEQ9E,+BAA+B,CACnCrF;YAEA,MAAM4K,WAAoC,CAAC;YAC3C,MAAMC,WAAWjM,MAAMkM,IAAI,CAAC,IAAI,CAAC3F,0BAA0B,CAACnF;YAC5D,MAAMoK,aAAajJ,UACf,IAAI,CAAC2B,eAAe,EACpB,IAAI,CAACF,KAAK,CAAC0F,SAAS,EACpB,IAAI,CAACjF,gBAAgB;YAGzBwH,SAASrB,OAAO,CAAC,CAACzK,KAAK2K;gBACnB,MAAMhL,QAAQ,IAAI,CAAC0G,gBAAgB,CAACrG,KAAK2K,OAAOU;gBAChD9I,UAAUsJ,UAAU7L,KAAKL;YAC7B;YAEA,OAAOkM;QACX;aAEQtF,cAAc,CAACmC,MAAclI;gBACjC,4BAAA;aAAA,eAAA,IAAI,CAAC2D,MAAM,cAAX,oCAAA,6BAAA,aAAa6H,aAAa,cAA1B,iDAAA,2BAA4BC,WAAW,CACnC;gBACI,mBAAmB;oBACfvD;oBACAlI;gBACJ;YACJ,GACA;QAER;aAEQgG,cAAc,OAClBhG,MACA0L;gBAeQ;gBARH1L;YALL,IAAI,CAAC,IAAI,CAACmE,SAAS,EAAE;gBACjBuH,KAAK;oBAAEC,UAAU;gBAAI;gBACrB,MAAM,IAAIC,MAAM;YACpB;YAEA,IAAI,GAAC5L,oBAAAA,KAAK6L,WAAW,cAAhB7L,wCAAAA,kBAAkBkC,MAAM,GAAE;gBAC3B;YACJ;YAEA,MAAM4J,OAAO9L,KAAK6L,WAAW,CAAC,EAAE;YAEhC,MAAME,MAAM,MAAM,IAAI,CAAC9F,aAAa,CAAC6F,MAAM;gBACvC,GAAG7N,sBAAsB;oBACrB,8BAAA,IAAI,CAACoF,KAAK,CAAC2I,eAAe,cAA1B,yCAAA,8BAA8B,CAAC,CAAnC;YACJ;YAEA,IAAI,CAACD,IAAIE,OAAO,EAAE;oBACd,iBAAA;iBAAA,kBAAA,CAAA,QAAA,IAAI,EAAC7H,SAAS,cAAd,sCAAA,qBAAA,OAAiB2H,IAAI/B,KAAK,EAAE+B,IAAIG,WAAW;gBAC3C;YACJ;YAEAR,KAAK;gBAAEC,UAAU;YAAE;YAEnB,IAAI;gBACA,MAAM,EAAEQ,GAAG,EAAE,GAAG,MAAM,IAAI,CAAChI,SAAS,CAAC2H;gBACrCJ,KAAK;oBAAEC,UAAU;oBAAKQ;gBAAI;YAC9B,EAAE,eAAM;oBACJ,kBAAA;iBAAA,mBAAA,CAAA,SAAA,IAAI,EAAC/H,SAAS,cAAd,uCAAA,sBAAA,QACI,uBACA;gBAEJsH,KAAK;oBAAEC,UAAU;gBAAI;YACzB;QACJ;aAEQ1F,gBAAgB,OACpB6F,MACAE;YAEA,MAAM,EAAEI,WAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGN;YAE7C,IAAIF,KAAKS,IAAI,GAAGH,aAAa;gBACzB,MAAMI,YAAY,AAACJ,CAAAA,cAAc,OAAO,IAAG,EAAGK,OAAO,CAAC;gBACtD,MAAMC,aAAa,AAACZ,CAAAA,KAAKS,IAAI,GAAG,OAAO,IAAG,EAAGE,OAAO,CAAC;gBACrD,OAAO;oBACHR,SAAS;oBACTjC,OAAO;oBACPkC,aAAa,CAAC,cAAc,EAAEQ,WAAW,uBAAuB,EAAEF,UAAU,mDAAmD,CAAC;gBACpI;YACJ;YAEA,OAAO,IAAIG,QAAQC,CAAAA;gBACf,MAAMC,MAAM,IAAIC;gBAChB,MAAMC,YAAYC,IAAIC,eAAe,CAACnB;gBAEtCe,IAAIK,MAAM,GAAG;oBACTF,IAAIG,eAAe,CAACJ;oBACpB,MAAM,EAAEK,MAAM,EAAEC,KAAK,EAAE,GAAGR;oBAE1B,IAAIQ,QAAQf,YAAYc,SAASf,WAAW;wBACxCO,QAAQ;4BACJX,SAAS;4BACTjC,OAAO;4BACPkC,aAAa,CAAC,wBAAwB,EAAEmB,MAAM,CAAC,EAAED,OAAO,eAAe,EAAEd,SAAS,CAAC,EAAED,UAAU,gDAAgD,CAAC;wBACpJ;oBACJ,OAAO;wBACHO,QAAQ;4BAAEX,SAAS;4BAAMjC,OAAO;4BAAIkC,aAAa;wBAAG;oBACxD;gBACJ;gBAEAW,IAAIS,OAAO,GAAG;oBACVN,IAAIG,eAAe,CAACJ;oBACpBH,QAAQ;wBACJX,SAAS;wBACTjC,OAAO;wBACPkC,aACI;oBACR;gBACJ;gBAEAW,IAAIU,GAAG,GAAGR;YACd;QACJ;QAvcI,MAAMS,aAAa,IAAI,CAACnK,KAAK,CAAC2F,MAAM,GAAG3K,eAAe,IAAI,CAACgF,KAAK,CAAC2F,MAAM,IAAIzH;QAC3E,IAAI,CAACgC,eAAe,WAAIiK,uBAAAA,iCAAAA,WAAYzE,SAAS,uCAAI,CAAC;QAClD,IAAI,CAACvF,mBAAmB,GAAG,IAAInD,IAC3BX,OAAOgJ,MAAM,UAAC8E,uBAAAA,iCAAAA,WAAYlN,GAAG,yCAAI,CAAC,GAC7BmN,MAAM,CAACvD,CAAAA,QAASA,MAAMwD,OAAO,IAAIpP,aAAa4L,MAAM/H,IAAI,GACxD7B,GAAG,CAAC4J,CAAAA,QAASA,MAAMyD,OAAO;QAGnC,IAAI,CAACtK,KAAK,CAACqG,eAAe,GAAG;YAAC;YAAa;YAAY;YAAe;SAAY;QAElF,IAAI,CAACpG,UAAU,GAAG;YACdyD,YAAYtG,CAAAA;oBACR;iBAAA,eAAA,IAAI,CAACgD,MAAM,cAAX,mCAAA,aAAasD,UAAU,CAACtG;YAC5B;YACAmN,YAAYC,CAAAA;oBACR;iBAAA,eAAA,IAAI,CAACpK,MAAM,cAAX,mCAAA,aAAamK,UAAU,CAACC;YAC5B;YACAzF,YAAYyF,CAAAA;oBACR;iBAAA,eAAA,IAAI,CAACpK,MAAM,cAAX,mCAAA,aAAa2E,UAAU,CAACpI,CAAAA;oBACpB,MAAM8N,SAAS/N,kBAAkBC;oBACjC8N,OAAOzC,QAAQ,GAAG,IAAI,CAACvF,4BAA4B,CAACgI,OAAOrN,MAAM;oBACjEoN,GAAGC;gBACP;YACJ;YACAzI,cAAcoC,CAAAA;gBACV,IAAI,CAACpC,YAAY,CAACoC;YACtB;YACAnC,gBAAgB,CAACoC,QAAQC;gBACrB,IAAI,CAACrC,cAAc,CAACoC,QAAQC;YAChC;YACApC,qBAAqBqC,CAAAA;gBACjB,IAAI,CAACrC,mBAAmB,CAACqC;YAC7B;QACJ;IACJ;AAsaJ"}
|
package/dist/tools.js
CHANGED
|
@@ -87,9 +87,9 @@ import { versions } from './unlayer';
|
|
|
87
87
|
schemaVersion: versions.schema
|
|
88
88
|
});
|
|
89
89
|
/* eslint-enable @typescript-eslint/naming-convention */ export const unlayerToolsIterate = (design, cb)=>{
|
|
90
|
+
var _ref;
|
|
90
91
|
var _design_body;
|
|
91
|
-
|
|
92
|
-
for (const row of (_design_body_rows = design === null || design === void 0 ? void 0 : (_design_body = design.body) === null || _design_body === void 0 ? void 0 : _design_body.rows) !== null && _design_body_rows !== void 0 ? _design_body_rows : []){
|
|
92
|
+
for (const row of (_ref = design === null || design === void 0 ? void 0 : (_design_body = design.body) === null || _design_body === void 0 ? void 0 : _design_body.rows) !== null && _ref !== void 0 ? _ref : []){
|
|
93
93
|
for (const column of row.columns){
|
|
94
94
|
for (const content of column.contents){
|
|
95
95
|
if (cb(content) === false) {
|
|
@@ -120,10 +120,12 @@ export const unlayerToolsFind = (design, cb)=>{
|
|
|
120
120
|
return out;
|
|
121
121
|
};
|
|
122
122
|
export const unlayerToolsCustomStat = (design, tools, units)=>{
|
|
123
|
+
var _ref, _ref1;
|
|
123
124
|
const counters = {};
|
|
124
125
|
const notSupported = new Set();
|
|
125
126
|
const unitIDs = new Set();
|
|
126
127
|
unlayerToolsIterateCustom(design, (tool)=>{
|
|
128
|
+
var _ref;
|
|
127
129
|
if (!counters[tool.slug]) {
|
|
128
130
|
counters[tool.slug] = 0;
|
|
129
131
|
}
|
|
@@ -132,18 +134,16 @@ export const unlayerToolsCustomStat = (design, tools, units)=>{
|
|
|
132
134
|
if (isUnit) {
|
|
133
135
|
unitIDs.add(isUnit.id);
|
|
134
136
|
}
|
|
135
|
-
var _ref;
|
|
136
137
|
if ((_ref = isUnit && !(units === null || units === void 0 ? void 0 : units.some((unit)=>unit.id === isUnit.id))) !== null && _ref !== void 0 ? _ref : !isUnit && !(tools === null || tools === void 0 ? void 0 : tools.some((t)=>t.key === tool.slug))) {
|
|
137
138
|
notSupported.add(tool.slug);
|
|
138
139
|
}
|
|
139
140
|
});
|
|
140
|
-
var _tools_filter_map, _units_filter_map;
|
|
141
141
|
return {
|
|
142
142
|
counters,
|
|
143
143
|
notSupported: Array.from(notSupported),
|
|
144
144
|
missing: [
|
|
145
|
-
...(
|
|
146
|
-
...(
|
|
145
|
+
...(_ref = tools === null || tools === void 0 ? void 0 : tools.filter((tool)=>tool.isRequired && !counters[tool.key]).map((tool)=>tool.key)) !== null && _ref !== void 0 ? _ref : [],
|
|
146
|
+
...(_ref1 = units === null || units === void 0 ? void 0 : units.filter((unit)=>unit.isRequired && !unitIDs.has(unit.id)).map((unit)=>unit.id)) !== null && _ref1 !== void 0 ? _ref1 : []
|
|
147
147
|
]
|
|
148
148
|
};
|
|
149
149
|
};
|