@servicetitan/dte-unlayer 0.157.0 → 0.159.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.
Files changed (166) hide show
  1. package/dist/api-core.js +22 -29
  2. package/dist/api-core.js.map +1 -1
  3. package/dist/api-custom-tools.js +23 -29
  4. package/dist/api-custom-tools.js.map +1 -1
  5. package/dist/business-calendar/BusinessCalendarDrawer.d.ts +19 -0
  6. package/dist/business-calendar/BusinessCalendarDrawer.d.ts.map +1 -0
  7. package/dist/business-calendar/BusinessCalendarDrawer.js +41 -0
  8. package/dist/business-calendar/BusinessCalendarDrawer.js.map +1 -0
  9. package/dist/business-calendar/business-calendar-requests.d.ts +25 -0
  10. package/dist/business-calendar/business-calendar-requests.d.ts.map +1 -0
  11. package/dist/business-calendar/business-calendar-requests.js +46 -0
  12. package/dist/business-calendar/business-calendar-requests.js.map +1 -0
  13. package/dist/business-calendar/business-calendar-state.d.ts +22 -0
  14. package/dist/business-calendar/business-calendar-state.d.ts.map +1 -0
  15. package/dist/business-calendar/business-calendar-state.js +74 -0
  16. package/dist/business-calendar/business-calendar-state.js.map +1 -0
  17. package/dist/business-calendar/useBusinessCalendarRequests.d.ts +15 -0
  18. package/dist/business-calendar/useBusinessCalendarRequests.d.ts.map +1 -0
  19. package/dist/business-calendar/useBusinessCalendarRequests.js +30 -0
  20. package/dist/business-calendar/useBusinessCalendarRequests.js.map +1 -0
  21. package/dist/display-conditions/ConditionGroup.js +15 -89
  22. package/dist/display-conditions/ConditionGroup.js.map +1 -1
  23. package/dist/display-conditions/ConditionGroupsSection.js +2 -70
  24. package/dist/display-conditions/ConditionGroupsSection.js.map +1 -1
  25. package/dist/display-conditions/ConditionRow.d.ts.map +1 -1
  26. package/dist/display-conditions/ConditionRow.js +71 -296
  27. package/dist/display-conditions/ConditionRow.js.map +1 -1
  28. package/dist/display-conditions/DisplayConditionModal.js +40 -190
  29. package/dist/display-conditions/DisplayConditionModal.js.map +1 -1
  30. package/dist/display-conditions/LookupValueControl.d.ts.map +1 -1
  31. package/dist/display-conditions/LookupValueControl.js +42 -109
  32. package/dist/display-conditions/LookupValueControl.js.map +1 -1
  33. package/dist/display-conditions/SeparatorWithChip.js +1 -10
  34. package/dist/display-conditions/SeparatorWithChip.js.map +1 -1
  35. package/dist/display-conditions/constants.js +15 -20
  36. package/dist/display-conditions/constants.js.map +1 -1
  37. package/dist/display-conditions/displayConditionController.js +5 -8
  38. package/dist/display-conditions/displayConditionController.js.map +1 -1
  39. package/dist/display-conditions/lookupOptionsController.js +16 -16
  40. package/dist/display-conditions/lookupOptionsController.js.map +1 -1
  41. package/dist/display-conditions/nunjucks.js +98 -116
  42. package/dist/display-conditions/nunjucks.js.map +1 -1
  43. package/dist/display-conditions/schemaDataPoints.js +13 -11
  44. package/dist/display-conditions/schemaDataPoints.js.map +1 -1
  45. package/dist/display-conditions/types.js +23 -67
  46. package/dist/display-conditions/types.js.map +1 -1
  47. package/dist/display-conditions/useConditionForms.js +38 -56
  48. package/dist/display-conditions/useConditionForms.js.map +1 -1
  49. package/dist/display-conditions/useLookupOptions.js +24 -44
  50. package/dist/display-conditions/useLookupOptions.js.map +1 -1
  51. package/dist/e-sign-offset/ESignDateSignedOffsetModal.d.ts.map +1 -1
  52. package/dist/e-sign-offset/ESignDateSignedOffsetModal.js +48 -156
  53. package/dist/e-sign-offset/ESignDateSignedOffsetModal.js.map +1 -1
  54. package/dist/e-sign-offset/ESignOffsetRuleRow.d.ts +3 -1
  55. package/dist/e-sign-offset/ESignOffsetRuleRow.d.ts.map +1 -1
  56. package/dist/e-sign-offset/ESignOffsetRuleRow.js +12 -71
  57. package/dist/e-sign-offset/ESignOffsetRuleRow.js.map +1 -1
  58. package/dist/e-sign-offset/eSignOffsetController.js +5 -8
  59. package/dist/e-sign-offset/eSignOffsetController.js.map +1 -1
  60. package/dist/editor-core-source.d.ts +2 -2
  61. package/dist/editor-core-source.d.ts.map +1 -1
  62. package/dist/editor-core-source.js +3 -3
  63. package/dist/editor-core-source.js.map +1 -1
  64. package/dist/editor-core.js +2 -2
  65. package/dist/editor-core.js.map +1 -1
  66. package/dist/editor.d.ts.map +1 -1
  67. package/dist/editor.js +56 -118
  68. package/dist/editor.js.map +1 -1
  69. package/dist/image-upload-error.js +3 -3
  70. package/dist/image-upload-error.js.map +1 -1
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +0 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/loadScript.js +7 -8
  76. package/dist/loadScript.js.map +1 -1
  77. package/dist/log.js +2 -3
  78. package/dist/log.js.map +1 -1
  79. package/dist/merge-tags.js +18 -17
  80. package/dist/merge-tags.js.map +1 -1
  81. package/dist/shared/configs.js +1 -2
  82. package/dist/shared/configs.js.map +1 -1
  83. package/dist/shared/const.d.ts +72 -0
  84. package/dist/shared/const.d.ts.map +1 -1
  85. package/dist/shared/const.js +13 -4
  86. package/dist/shared/const.js.map +1 -1
  87. package/dist/shared/date-calc.d.ts +32 -13
  88. package/dist/shared/date-calc.d.ts.map +1 -1
  89. package/dist/shared/date-calc.js +130 -76
  90. package/dist/shared/date-calc.js.map +1 -1
  91. package/dist/shared/e-sign-offset.js +46 -63
  92. package/dist/shared/e-sign-offset.js.map +1 -1
  93. package/dist/shared/edit-icon.js +0 -1
  94. package/dist/shared/edit-icon.js.map +1 -1
  95. package/dist/shared/fonts.js +16 -17
  96. package/dist/shared/fonts.js.map +1 -1
  97. package/dist/shared/forms.js +16 -38
  98. package/dist/shared/forms.js.map +1 -1
  99. package/dist/shared/instance-id.d.ts +3 -0
  100. package/dist/shared/instance-id.d.ts.map +1 -1
  101. package/dist/shared/instance-id.js +10 -7
  102. package/dist/shared/instance-id.js.map +1 -1
  103. package/dist/shared/nunjucks-helpers.js +2 -5
  104. package/dist/shared/nunjucks-helpers.js.map +1 -1
  105. package/dist/shared/schema.js +52 -96
  106. package/dist/shared/schema.js.map +1 -1
  107. package/dist/shared/tools.js +6 -13
  108. package/dist/shared/tools.js.map +1 -1
  109. package/dist/store.d.ts +15 -1
  110. package/dist/store.d.ts.map +1 -1
  111. package/dist/store.js +851 -547
  112. package/dist/store.js.map +1 -1
  113. package/dist/tools.js +133 -143
  114. package/dist/tools.js.map +1 -1
  115. package/dist/unlayer-interface.d.ts +25 -1
  116. package/dist/unlayer-interface.d.ts.map +1 -1
  117. package/dist/unlayer-interface.js +1 -2
  118. package/dist/unlayer-interface.js.map +1 -1
  119. package/dist/unlayer.js +86 -113
  120. package/dist/unlayer.js.map +1 -1
  121. package/dist/vendor/dte-shared/business-calendar-validation.utils.d.ts +25 -0
  122. package/dist/vendor/dte-shared/business-calendar-validation.utils.js +80 -0
  123. package/dist/vendor/dte-shared/components/business-calendar-section.d.ts +15 -0
  124. package/dist/vendor/dte-shared/components/business-calendar-section.js +14 -0
  125. package/dist/vendor/dte-shared/components/schedule-drawer.d.ts +18 -0
  126. package/dist/vendor/dte-shared/components/schedule-drawer.js +119 -0
  127. package/dist/vendor/dte-shared/components/schedule-picker.d.ts +8 -0
  128. package/dist/vendor/dte-shared/components/schedule-picker.js +88 -0
  129. package/dist/vendor/dte-shared/constants.d.ts +31 -0
  130. package/dist/vendor/dte-shared/constants.js +34 -0
  131. package/dist/vendor/dte-shared/field-schedule-editor-context.d.ts +31 -0
  132. package/dist/vendor/dte-shared/field-schedule-editor-context.js +110 -0
  133. package/dist/vendor/dte-shared/index.d.ts +8 -0
  134. package/dist/vendor/dte-shared/index.js +7 -0
  135. package/dist/vendor/dte-shared/schedule-bindings.utils.d.ts +22 -0
  136. package/dist/vendor/dte-shared/schedule-bindings.utils.js +31 -0
  137. package/dist/vendor/dte-shared/styles/schedule.css +19 -0
  138. package/dist/vendor/dte-shared/types.d.ts +129 -0
  139. package/dist/vendor/dte-shared/types.js +1 -0
  140. package/package.json +7 -1
  141. package/src/__tests__/business-calendar-drawer.test.tsx +183 -0
  142. package/src/__tests__/business-calendar-requests.test.ts +166 -0
  143. package/src/__tests__/business-calendar-state.test.tsx +142 -0
  144. package/src/__tests__/condition-row.test.tsx +131 -0
  145. package/src/__tests__/date-calc.test.ts +145 -0
  146. package/src/__tests__/e-sign-offset-modal.test.tsx +124 -0
  147. package/src/__tests__/instance-id.test.ts +49 -0
  148. package/src/__tests__/store.business-calendar.test.ts +185 -0
  149. package/src/__tests__/unlayer.e-sign-types.test.ts +30 -0
  150. package/src/business-calendar/BusinessCalendarDrawer.tsx +76 -0
  151. package/src/business-calendar/business-calendar-requests.ts +80 -0
  152. package/src/business-calendar/business-calendar-state.ts +113 -0
  153. package/src/business-calendar/useBusinessCalendarRequests.ts +49 -0
  154. package/src/display-conditions/ConditionRow.tsx +102 -175
  155. package/src/display-conditions/LookupValueControl.tsx +1 -12
  156. package/src/e-sign-offset/ESignDateSignedOffsetModal.tsx +20 -12
  157. package/src/e-sign-offset/ESignOffsetRuleRow.tsx +7 -2
  158. package/src/editor-core-source.ts +2 -2
  159. package/src/editor.tsx +15 -0
  160. package/src/index.ts +10 -0
  161. package/src/shared/const.ts +61 -0
  162. package/src/shared/date-calc.ts +155 -78
  163. package/src/shared/instance-id.ts +6 -1
  164. package/src/store.ts +68 -5
  165. package/src/unlayer-interface.tsx +25 -1
  166. package/src/unlayer.tsx +5 -5
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tools.ts"],"sourcesContent":["import {\n constGenericsEditor,\n E_SIGN_DATE_SIGNED_OFFSET_TYPE,\n E_SIGN_DATE_SIGNED_OFFSET_VALUES_KEY,\n E_SIGN_TOOL_SLUG,\n UnlayerToolMetaData,\n} from './shared/const';\nimport { isESignOffsetSettings, normalizeESignOffsetSettings } from './shared/e-sign-offset';\nimport { editIconSvg } from './shared/edit-icon';\nimport { generateInstanceId, INSTANCE_ID_TOOL_SLUGS } from './shared/instance-id';\nimport { unlayerToolsParseUnitKey } from './shared/tools';\nimport { versions } from './unlayer';\n\nimport type {\n UnlayerDesignCustomTool,\n UnlayerDesignFormat,\n UnlayerDesignTool,\n UnlayerEditorCustomTool,\n} from './unlayer-interface';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport const unlayerGetDefaultDesign = (): UnlayerDesignFormat => ({\n counters: {\n u_column: 1,\n u_row: 1,\n u_content_custom_generic_list_of_fields: 1,\n },\n body: {\n rows: [\n {\n cells: [1],\n columns: [\n {\n contents: [],\n values: {\n backgroundColor: '',\n padding: '0px',\n border: {},\n _meta: {\n htmlID: 'u_column_1',\n htmlClassNames: 'u_column',\n },\n },\n },\n ],\n values: {\n displayCondition: null,\n columns: false,\n backgroundColor: '',\n columnsBackgroundColor: '',\n backgroundImage: {\n url: '',\n fullWidth: true,\n repeat: false,\n center: true,\n cover: false,\n },\n padding: '0px',\n hideDesktop: false,\n hideMobile: false,\n noStackMobile: false,\n _meta: {\n htmlID: 'u_row_1',\n htmlClassNames: 'u_row',\n },\n selectable: true,\n draggable: true,\n duplicatable: true,\n deletable: true,\n },\n },\n ],\n values: {\n backgroundColor: 'rgba(0,0,0,0)',\n backgroundImage: {\n url: '',\n fullWidth: true,\n repeat: false,\n center: true,\n cover: false,\n },\n contentWidth: '100%',\n contentAlign: 'center',\n fontFamily: {\n label: 'Liberation Sans',\n value: 'arial,helvetica,sans-serif',\n },\n preheaderText: '',\n linkStyle: {\n body: true,\n linkColor: '#0000ee',\n linkHoverColor: '#0000ee',\n linkUnderline: true,\n linkHoverUnderline: true,\n },\n _meta: {\n htmlID: 'u_body',\n htmlClassNames: 'u_body',\n },\n },\n },\n schemaVersion: versions.schema,\n});\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const unlayerToolsIterate = (\n design: UnlayerDesignFormat,\n cb: (tool: UnlayerDesignTool) => boolean | undefined | void\n) => {\n for (const row of design?.body?.rows ?? []) {\n for (const column of row.columns) {\n for (const content of column.contents) {\n if (cb(content) === false) {\n return;\n }\n }\n }\n }\n};\n\nexport const unlayerToolsIterateCustom = (\n design: UnlayerDesignFormat,\n cb: (tool: UnlayerDesignCustomTool) => boolean | undefined | void\n) => {\n unlayerToolsIterate(design, tool => {\n if (tool.type === 'custom' && tool.slug) {\n return cb(tool as any);\n }\n });\n};\n\nexport const unlayerToolsListCustomKeys = (design: UnlayerDesignFormat): string[] => {\n return Array.from(new Set(unlayerToolsListCustom(design).map(tool => tool.slug)));\n};\n\nexport const unlayerToolsFind = (\n design: UnlayerDesignFormat,\n cb: (tool: UnlayerDesignTool) => boolean | void\n): UnlayerDesignTool | undefined => {\n let out: UnlayerDesignTool | undefined;\n\n unlayerToolsIterate(design, tool => {\n if (cb(tool)) {\n out = tool;\n return false;\n }\n });\n\n return out;\n};\n\nexport interface UnlayerCustomToolsStat {\n counters: Record<string, number>;\n missing: string[];\n notSupported: string[];\n}\n\nexport const unlayerToolsCustomStat = (\n design: UnlayerDesignFormat,\n tools?: { key: string; isRequired?: boolean }[],\n units?: { id: string; generic: string; isRequired?: boolean }[]\n): UnlayerCustomToolsStat => {\n const counters: Record<string, number> = {};\n const notSupported = new Set<string>();\n const unitIDs = new Set<string>();\n\n unlayerToolsIterateCustom(design, tool => {\n if (!counters[tool.slug]) {\n counters[tool.slug] = 0;\n }\n\n counters[tool.slug]++;\n\n const isUnit = unlayerToolsParseUnitKey(tool.slug);\n\n if (isUnit) {\n unitIDs.add(isUnit.id);\n }\n\n if (\n (isUnit && !units?.some(unit => unit.id === isUnit.id)) ??\n (!isUnit && !tools?.some(t => t.key === tool.slug))\n ) {\n notSupported.add(tool.slug);\n }\n });\n\n return {\n counters,\n notSupported: Array.from(notSupported),\n\n missing: [\n ...(tools\n ?.filter(tool => tool.isRequired && !counters[tool.key])\n .map(tool => tool.key) ?? []),\n ...(units\n ?.filter(unit => unit.isRequired && !unitIDs.has(unit.id))\n .map(unit => unit.id) ?? []),\n ],\n };\n};\n\nexport const unlayerToolsListCustom = (design: UnlayerDesignFormat): UnlayerDesignCustomTool[] => {\n const tools: UnlayerDesignCustomTool[] = [];\n\n unlayerToolsIterateCustom(design, tool => {\n tools.push(tool);\n });\n\n return tools;\n};\n\n/**\n * Makes `values.id` unique across all instance-id tools (see `INSTANCE_ID_TOOL_SLUGS`)\n * in the design. Duplicating content/rows in Unlayer copies the values verbatim, so\n * every copy ends up with the original's GUID; this gives each copy a fresh one.\n *\n * Of the contents sharing an id, the one that keeps it is the first in document\n * order that is not the just-added content (`addedHtmlID`), so the original always\n * wins over its duplicate regardless of where the copy was inserted.\n *\n * @returns `true` when at least one id was regenerated.\n */\nexport const unlayerToolsDedupeInstanceIds = (\n design: UnlayerDesignFormat,\n addedHtmlID?: string\n): boolean => {\n const byId = new Map<string, UnlayerDesignCustomTool[]>();\n\n unlayerToolsIterateCustom(design, tool => {\n const id = tool.values?.id;\n\n if (INSTANCE_ID_TOOL_SLUGS.includes(tool.slug) && typeof id === 'string' && id) {\n const key = `${tool.slug}|${id}`;\n byId.set(key, [...(byId.get(key) ?? []), tool]);\n }\n });\n\n let hasChanges = false;\n\n byId.forEach(tools => {\n if (tools.length < 2) {\n return;\n }\n\n const keeper = tools.find(tool => tool.values?._meta?.htmlID !== addedHtmlID) ?? tools[0];\n\n for (const tool of tools) {\n if (tool !== keeper) {\n /*\n * If no id can be generated the copy is left without one, which is still\n * better than two instances bound to the same image.\n */\n tool.values.id = generateInstanceId();\n hasChanges = true;\n }\n }\n });\n\n return hasChanges;\n};\n\n/**\n * Gives every \"Date Signed Offset\" e-sign placement valid settings. Unlayer never applies an\n * option's default to placements saved before the option existed, and the backend rejects a\n * design whose dateSignedOffset recipient has no settings.\n */\nexport const unlayerToolsNormalizeESignOffsets = (design: UnlayerDesignFormat): boolean => {\n let hasChanges = false;\n\n unlayerToolsIterateCustom(design, tool => {\n if (\n tool.slug !== E_SIGN_TOOL_SLUG ||\n tool.values?.eSignFieldType !== E_SIGN_DATE_SIGNED_OFFSET_TYPE\n ) {\n return;\n }\n\n const settings = tool.values[E_SIGN_DATE_SIGNED_OFFSET_VALUES_KEY];\n\n if (!isESignOffsetSettings(settings)) {\n tool.values[E_SIGN_DATE_SIGNED_OFFSET_VALUES_KEY] =\n normalizeESignOffsetSettings(settings);\n hasChanges = true;\n }\n });\n\n return hasChanges;\n};\n\nexport const unlayerToolsBuildDesign = (tools: UnlayerDesignTool[]): UnlayerDesignFormat => {\n const design = unlayerGetDefaultDesign();\n\n design.body.rows[0].columns[0].contents = tools;\n return design;\n};\n\nexport const unlayerUnitsGetIdFromValues = (values?: any): string | undefined =>\n values?.[constGenericsEditor.adminConfigProperty]?.crossId;\nexport const unlayerUnitsGetTitleFromValues = (values?: any): string | undefined =>\n values?.[constGenericsEditor.adminConfigProperty]?.title;\n\nexport const unlayerUnitsGetId = (tool: UnlayerDesignTool): string | undefined =>\n unlayerUnitsGetIdFromValues(tool.values);\nexport const unlayerUnitsGetTitle = (tool: UnlayerDesignTool): string | undefined =>\n unlayerUnitsGetTitleFromValues(tool.values);\n\nexport const unlayerCustomToolsGetRegisterUrls = (tools: UnlayerEditorCustomTool[]): string[] =>\n Array.from(\n new Set(tools.map(tool => (tool.groupUrl ? `${tool.groupUrl}/index.js` : tool.url)))\n );\n\nexport const unlayerCustomToolMetaData = (tools: UnlayerEditorCustomTool[]): string => {\n const toolMetaData = tools.reduce((acc: Record<string, UnlayerToolMetaData>, tool) => {\n acc[tool.title] = {\n key: tool.key,\n description: tool.description,\n };\n return acc;\n }, {});\n\n return `\n window.dteStore.setToolMetaData(${JSON.stringify(toolMetaData)});\n `;\n};\n\nexport const unlayerCustomEmptyToolState = (): string => {\n const divElement = document.createElement('div');\n const editIconContainer = document.createElement('div');\n const textContainer = document.createElement('div');\n\n divElement.classList.add('unlayer-custom-empty-tool-state');\n editIconContainer.classList.add('unlayer-custom-empty-tool-state-icon');\n textContainer.classList.add('unlayer-custom-empty-tool-state-text');\n\n editIconContainer.innerHTML = editIconSvg;\n textContainer.innerText = 'Please choose \\n\\r your component';\n divElement.appendChild(editIconContainer);\n divElement.appendChild(textContainer);\n return `\n document.querySelector('.tab-content .tab-pane').innerHTML = \\`${divElement.outerHTML}\\`;\n `;\n};\n"],"names":["constGenericsEditor","E_SIGN_DATE_SIGNED_OFFSET_TYPE","E_SIGN_DATE_SIGNED_OFFSET_VALUES_KEY","E_SIGN_TOOL_SLUG","isESignOffsetSettings","normalizeESignOffsetSettings","editIconSvg","generateInstanceId","INSTANCE_ID_TOOL_SLUGS","unlayerToolsParseUnitKey","versions","unlayerGetDefaultDesign","counters","u_column","u_row","u_content_custom_generic_list_of_fields","body","rows","cells","columns","contents","values","backgroundColor","padding","border","_meta","htmlID","htmlClassNames","displayCondition","columnsBackgroundColor","backgroundImage","url","fullWidth","repeat","center","cover","hideDesktop","hideMobile","noStackMobile","selectable","draggable","duplicatable","deletable","contentWidth","contentAlign","fontFamily","label","value","preheaderText","linkStyle","linkColor","linkHoverColor","linkUnderline","linkHoverUnderline","schemaVersion","schema","unlayerToolsIterate","design","cb","row","column","content","unlayerToolsIterateCustom","tool","type","slug","unlayerToolsListCustomKeys","Array","from","Set","unlayerToolsListCustom","map","unlayerToolsFind","out","unlayerToolsCustomStat","tools","units","notSupported","unitIDs","isUnit","add","id","some","unit","t","key","missing","filter","isRequired","has","push","unlayerToolsDedupeInstanceIds","addedHtmlID","byId","Map","includes","set","get","hasChanges","forEach","length","keeper","find","unlayerToolsNormalizeESignOffsets","eSignFieldType","settings","unlayerToolsBuildDesign","unlayerUnitsGetIdFromValues","adminConfigProperty","crossId","unlayerUnitsGetTitleFromValues","title","unlayerUnitsGetId","unlayerUnitsGetTitle","unlayerCustomToolsGetRegisterUrls","groupUrl","unlayerCustomToolMetaData","toolMetaData","reduce","acc","description","JSON","stringify","unlayerCustomEmptyToolState","divElement","document","createElement","editIconContainer","textContainer","classList","innerHTML","innerText","appendChild","outerHTML"],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,8BAA8B,EAC9B,oCAAoC,EACpC,gBAAgB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AASrC,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAwB,EAAE,CAAC,CAAC;IAC/D,QAAQ,EAAE;QACN,QAAQ,EAAE,CAAC;QACX,KAAK,EAAE,CAAC;QACR,uCAAuC,EAAE,CAAC;KAC7C;IACD,IAAI,EAAE;QACF,IAAI,EAAE;YACF;gBACI,KAAK,EAAE,CAAC,CAAC,CAAC;gBACV,OAAO,EAAE;oBACL;wBACI,QAAQ,EAAE,EAAE;wBACZ,MAAM,EAAE;4BACJ,eAAe,EAAE,EAAE;4BACnB,OAAO,EAAE,KAAK;4BACd,MAAM,EAAE,EAAE;4BACV,KAAK,EAAE;gCACH,MAAM,EAAE,YAAY;gCACpB,cAAc,EAAE,UAAU;6BAC7B;yBACJ;qBACJ;iBACJ;gBACD,MAAM,EAAE;oBACJ,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE,KAAK;oBACd,eAAe,EAAE,EAAE;oBACnB,sBAAsB,EAAE,EAAE;oBAC1B,eAAe,EAAE;wBACb,GAAG,EAAE,EAAE;wBACP,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,KAAK;qBACf;oBACD,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,KAAK;oBAClB,UAAU,EAAE,KAAK;oBACjB,aAAa,EAAE,KAAK;oBACpB,KAAK,EAAE;wBACH,MAAM,EAAE,SAAS;wBACjB,cAAc,EAAE,OAAO;qBAC1B;oBACD,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,IAAI;oBACf,YAAY,EAAE,IAAI;oBAClB,SAAS,EAAE,IAAI;iBAClB;aACJ;SACJ;QACD,MAAM,EAAE;YACJ,eAAe,EAAE,eAAe;YAChC,eAAe,EAAE;gBACb,GAAG,EAAE,EAAE;gBACP,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,KAAK;aACf;YACD,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,QAAQ;YACtB,UAAU,EAAE;gBACR,KAAK,EAAE,iBAAiB;gBACxB,KAAK,EAAE,4BAA4B;aACtC;YACD,aAAa,EAAE,EAAE;YACjB,SAAS,EAAE;gBACP,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,SAAS;gBACpB,cAAc,EAAE,SAAS;gBACzB,aAAa,EAAE,IAAI;gBACnB,kBAAkB,EAAE,IAAI;aAC3B;YACD,KAAK,EAAE;gBACH,MAAM,EAAE,QAAQ;gBAChB,cAAc,EAAE,QAAQ;aAC3B;SACJ;KACJ;IACD,aAAa,EAAE,QAAQ,CAAC,MAAM;CACjC,CAAC,CAAC;AACH,wDAAwD;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAC/B,MAA2B,EAC3B,EAA2D,EAC7D,EAAE;;IACA,KAAK,MAAM,GAAG,IAAI,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,IAAI,mCAAI,EAAE,EAAE,CAAC;QACzC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;oBACxB,OAAO;gBACX,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EAC3B,EAAiE,EACnE,EAAE;IACA,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC,IAAW,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAA2B,EAAY,EAAE;IAChF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,MAA2B,EAC3B,EAA+C,EAClB,EAAE;IAC/B,IAAI,GAAkC,CAAC;IAEvC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;QAC/B,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACX,GAAG,GAAG,IAAI,CAAC;YACX,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,MAA2B,EAC3B,KAA+C,EAC/C,KAA+D,EACzC,EAAE;;IACxB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAEtB,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QAED,IACI,MAAA,CAAC,MAAM,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,mCACvD,CAAC,CAAC,MAAM,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,EACrD,CAAC;YACC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,QAAQ;QACR,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;QAEtC,OAAO,EAAE;YACL,GAAG,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CACH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EACtD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;YACjC,GAAG,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CACH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EACxD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,mCAAI,EAAE,CAAC;SACnC;KACJ,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAA2B,EAA6B,EAAE;IAC7F,MAAM,KAAK,GAA8B,EAAE,CAAC;IAE5C,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,MAA2B,EAC3B,WAAoB,EACb,EAAE;IACT,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqC,CAAC;IAE1D,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;;QACrC,MAAM,EAAE,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,EAAE,CAAC;QAE3B,IAAI,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC7E,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;QACjB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,eAAC,OAAA,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,0CAAE,MAAM,MAAK,WAAW,CAAA,EAAA,CAAC,mCAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClB;;;mBAGG;gBACH,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAC;gBACtC,UAAU,GAAG,IAAI,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,MAA2B,EAAW,EAAE;IACtF,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;;QACrC,IACI,IAAI,CAAC,IAAI,KAAK,gBAAgB;YAC9B,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,MAAK,8BAA8B,EAChE,CAAC;YACC,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAEnE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,oCAAoC,CAAC;gBAC7C,4BAA4B,CAAC,QAAQ,CAAC,CAAC;YAC3C,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAA0B,EAAuB,EAAE;IACvF,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;IAEzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;IAChD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAY,EAAsB,EAAE,WAC5E,OAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,mBAAmB,CAAC,mBAAmB,CAAC,0CAAE,OAAO,CAAA,EAAA,CAAC;AAC/D,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,MAAY,EAAsB,EAAE,WAC/E,OAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,mBAAmB,CAAC,mBAAmB,CAAC,0CAAE,KAAK,CAAA,EAAA,CAAC;AAE7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAuB,EAAsB,EAAE,CAC7E,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAuB,EAAsB,EAAE,CAChF,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,KAAgC,EAAY,EAAE,CAC5F,KAAK,CAAC,IAAI,CACN,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CACvF,CAAC;AAEN,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAgC,EAAU,EAAE;IAClF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAwC,EAAE,IAAI,EAAE,EAAE;QACjF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;YACd,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC;QACF,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;0CAC+B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;KACjE,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAW,EAAE;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC5D,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACxE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAEpE,iBAAiB,CAAC,SAAS,GAAG,WAAW,CAAC;IAC1C,aAAa,CAAC,SAAS,GAAG,mCAAmC,CAAC;IAC9D,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC1C,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACtC,OAAO;yEAC8D,UAAU,CAAC,SAAS;KACxF,CAAC;AACN,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
+ import type { BusinessCalendarHostProps } from './vendor/dte-shared/index';
1
2
  import { UnlayerEditorESignRecipientInfo, UnlayerEditorTwin, UnlayerEditorUnit } from './shared/const';
3
+ import type { BusinessCalendar } from './shared/date-calc';
2
4
  import { FormFieldInfo, FormInfo } from './shared/forms';
3
5
  import { SchemaObject } from './shared/schema';
4
6
  export interface UnlayerDesignTool {
@@ -61,7 +63,16 @@ export interface UnlayerEditorCustomTool {
61
63
  url: string;
62
64
  groupUrl?: string;
63
65
  }
64
- export interface CreateUnlayerEditorProps {
66
+ /**
67
+ * Editor options. The business-day schedule props (`BusinessCalendarHostProps`: `scheduleBindings`,
68
+ * `schedules`, `holidayCatalog`, `onScheduleBindingsChange`, ...) mean the same as `PdfEditor`'s;
69
+ * the field key of a binding is the tool's `values.id` (calculated field or e-sign "Date Signed
70
+ * Offset" field). The schedule UI shows only when `onScheduleBindingsChange` is passed. Changes
71
+ * to them (and to `holidays` / `fieldCalendars`) reach the editor when the host re-renders
72
+ * `UnlayerEditor` with new values: new arrays and objects, as for `PdfEditor`, since one changed
73
+ * in place isn't noticed.
74
+ */
75
+ export interface CreateUnlayerEditorProps extends BusinessCalendarHostProps {
65
76
  tools: UnlayerEditorCustomTool[];
66
77
  newSnapshot?: UnlayerEditorTwin;
67
78
  toolTwins?: UnlayerEditorTwin[];
@@ -96,7 +107,20 @@ export interface CreateUnlayerEditorProps {
96
107
  maxHeight?: number;
97
108
  maxFileSize?: number;
98
109
  };
110
+ /**
111
+ * Holidays of the default business-day calendar (`YYYY-MM-DD`, observed days), skipped with
112
+ * Saturday and Sunday by date calculated fields whose toggle is off. Without it the previews
113
+ * skip weekends only. Sent to the editor again whenever it changes.
114
+ */
99
115
  holidays?: string[];
116
+ /**
117
+ * Calendars of the date calculated fields bound to a schedule, by field key (the tool's
118
+ * `values.id`), as `POST api/holidays/calendar` resolves them. Fields not listed use the
119
+ * default calendar (`holidays`); while `onScheduleBindingsChange` is passed, so does a field
120
+ * without a binding in `scheduleBindings`. Only the editor previews read it: rendered
121
+ * documents get their calendars from DTE. Sent to the editor again whenever it changes.
122
+ */
123
+ fieldCalendars?: Record<string, BusinessCalendar>;
100
124
  onFormSelect?: (formId: number) => void;
101
125
  onCalcFieldOpen?: (usedFormIds: number[]) => void;
102
126
  onCalcFieldSelect?: (fieldKeys: string[]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"unlayer-interface.d.ts","sourceRoot":"","sources":["../src/unlayer-interface.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unlayer-interface.d.ts","sourceRoot":"","sources":["../src/unlayer-interface.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- export { };
2
-
1
+ export {};
3
2
  //# sourceMappingURL=unlayer-interface.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/unlayer-interface.tsx"],"sourcesContent":["import {\n UnlayerEditorESignRecipientInfo,\n UnlayerEditorTwin,\n UnlayerEditorUnit,\n} from './shared/const';\nimport { FormFieldInfo, FormInfo } from './shared/forms';\nimport { SchemaObject } from './shared/schema';\n\nexport interface UnlayerDesignTool {\n type: string;\n slug?: string;\n values: any;\n}\nexport interface UnlayerDesignCustomTool extends UnlayerDesignTool {\n slug: string;\n}\n\nexport interface UnlayerDesignFormat {\n body: {\n rows: {\n cells: number[];\n columns: {\n contents: UnlayerDesignTool[];\n values?: any;\n }[];\n values?: any;\n }[];\n values?: any;\n };\n counters: Record<string, number>;\n schemaVersion: number;\n}\n\nexport interface UnlayerExport {\n html: string;\n chunks: any;\n design: UnlayerDesignFormat;\n demoData?: Record<string, unknown>;\n}\n\nexport interface UnlayerRef {\n loadDesign(design: any): void;\n saveDesign(cb: (design: any) => void): void;\n exportHtml(cb: (data: UnlayerExport) => void): void;\n sendFormList(forms: FormInfo[]): void;\n sendFormFields(formId: number, fields: FormFieldInfo[]): void;\n sendCalcFieldLabels(labels: Record<string, string>): void;\n /**\n * Replaces the editor's merge tag menu with `tags` (grouped). Safe to call before the editor is\n * ready — the tags are applied once it is. Lets hosts add tags that finish loading after init\n * (e.g. form fields) without remounting the editor.\n */\n setMergeTags(tags: UnlayerEditorMergeTagInfo[] | undefined): void;\n}\n\nexport interface UnlayerEditorMergeTagInfo {\n id: string;\n name: string;\n propertyPath: string;\n /**\n * Submenu the tag is listed under. A string is a single submenu (`'Custom Fields'`);\n * an array nests submenus in order (`['Forms', 'Customer Intake']` → Forms ▸ Customer Intake ▸ tag).\n */\n group?: string | string[];\n}\n\nexport interface UnlayerEditorCustomTool {\n key: string;\n title: string;\n description?: string;\n url: string;\n groupUrl?: string;\n}\n\nexport interface CreateUnlayerEditorProps {\n tools: UnlayerEditorCustomTool[];\n newSnapshot?: UnlayerEditorTwin;\n toolTwins?: UnlayerEditorTwin[];\n isSnapshotMode?: boolean;\n dummyData?: any;\n schema?: SchemaObject;\n customCSS?: string | string[] | undefined;\n customJS?: string | string[] | undefined;\n mergeTags?: UnlayerEditorMergeTagInfo[] | undefined;\n eSignRecipients?: UnlayerEditorESignRecipientInfo[] | undefined;\n eSignFieldTypes?: string[] | undefined;\n genericConfigMode?: boolean;\n generics?: true | string[];\n units?: UnlayerEditorUnit[];\n noCoreTools?: boolean;\n latest?: boolean;\n blocks?: boolean;\n hideAllTools?: boolean;\n hideContentControls?: boolean;\n hideBodyMenuItem?: boolean;\n displayConditions?: boolean;\n /**\n * Optional portal target for the display-conditions dialog. Prefer unset so the dialog\n * stays under the host `AnvilProvider` (`.anvil2` CSS scope). When set, content is wrapped\n * in `ThemeProvider` so Anvil2 styles still apply after portaling.\n */\n displayConditionModalPortalContainer?: Element | DocumentFragment | null;\n enableHTMLEditing?: boolean;\n enableHTMLEditingReadonly?: boolean;\n imageValidation?: {\n maxWidth?: number;\n maxHeight?: number;\n maxFileSize?: number;\n };\n holidays?: string[];\n onFormSelect?: (formId: number) => void;\n onCalcFieldOpen?: (usedFormIds: number[]) => void;\n onCalcFieldSelect?: (fieldKeys: string[]) => void;\n onConditionalsOpen?: (\n usedFormIds: number[],\n sendFormList: (forms: FormInfo[]) => void,\n sendFormFields: (formId: number, fields: FormFieldInfo[]) => void,\n ) => void;\n onConditionFormSelect?: (\n formId: number,\n sendFormFields: (formId: number, fields: FormFieldInfo[]) => void,\n ) => void;\n}\n"],"names":[],"mappings":"AA0EA,WAgDC"}
1
+ {"version":3,"file":"unlayer-interface.js","sourceRoot":"","sources":["../src/unlayer-interface.tsx"],"names":[],"mappings":""}
package/dist/unlayer.js CHANGED
@@ -2,10 +2,11 @@ import { emitDisplayCondition } from './display-conditions/displayConditionContr
2
2
  import { editorCoreScript, editorCoreStyles, editorCoreTools } from './editor-core';
3
3
  import { logUnlayerError } from './log';
4
4
  import { toUnlayerMergeTags } from './merge-tags';
5
- import { constGenericsEditor } from './shared/const';
5
+ import { constGenericsEditor, E_SIGN_FIELD_TYPE_LABELS } from './shared/const';
6
6
  import { unlayerSupportedFonts } from './shared/fonts';
7
- import { unlayerCustomEmptyToolState, unlayerCustomToolMetaData, unlayerCustomToolsGetRegisterUrls } from './tools';
8
- export var DesignUpdatedEventType = /*#__PURE__*/ function(DesignUpdatedEventType) {
7
+ import { unlayerCustomEmptyToolState, unlayerCustomToolMetaData, unlayerCustomToolsGetRegisterUrls, } from './tools';
8
+ export var DesignUpdatedEventType;
9
+ (function (DesignUpdatedEventType) {
9
10
  DesignUpdatedEventType["ContentAdded"] = "content:added";
10
11
  DesignUpdatedEventType["ContentMoved"] = "content:moved";
11
12
  DesignUpdatedEventType["ContentRemoved"] = "content:removed";
@@ -18,18 +19,18 @@ export var DesignUpdatedEventType = /*#__PURE__*/ function(DesignUpdatedEventTyp
18
19
  DesignUpdatedEventType["ColumnRemoved"] = "column:removed";
19
20
  DesignUpdatedEventType["ColumnModified"] = "column:modified";
20
21
  DesignUpdatedEventType["BodyModified"] = "body:modified";
21
- return DesignUpdatedEventType;
22
- }({});
22
+ })(DesignUpdatedEventType || (DesignUpdatedEventType = {}));
23
23
  /**
24
24
  * !!! IMPORTANT !!!
25
25
  * do not forget to update schema version when updating unlayer version
26
26
  * it is important for templates export and should be in sync
27
27
  * to know correct schema version, open unlayer editor and check output design ('schema' property)
28
- */ export const versions = {
28
+ */
29
+ export const versions = {
29
30
  unlayer: '1.421.0',
30
- schema: 24
31
+ schema: 24,
31
32
  };
32
- export const handlePreselectTool = (preselectToolSlug)=>{
33
+ export const handlePreselectTool = (preselectToolSlug) => {
33
34
  return `
34
35
  const element = document.querySelector('.u_content_custom_${preselectToolSlug}');
35
36
  if (element) {
@@ -37,7 +38,7 @@ export const handlePreselectTool = (preselectToolSlug)=>{
37
38
  }
38
39
  `;
39
40
  };
40
- export const hideUnlayerContentsControls = ()=>{
41
+ export const hideUnlayerContentsControls = () => {
41
42
  return `
42
43
  .blockbuilder-layer-controls-contents, .blockbuilder-layer-controls-rows {
43
44
  display: none !important;
@@ -48,14 +49,14 @@ export const hideUnlayerContentsControls = ()=>{
48
49
  }
49
50
  `;
50
51
  };
51
- export const hideUnlayerBodyMenuItem = ()=>{
52
+ export const hideUnlayerBodyMenuItem = () => {
52
53
  return `
53
54
  .nav-item.tab-body {
54
55
  display: none !important;
55
56
  }
56
57
  `;
57
58
  };
58
- const injectEditorCoreStyles = ()=>{
59
+ const injectEditorCoreStyles = () => {
59
60
  const cssText = editorCoreStyles === null || editorCoreStyles === void 0 ? void 0 : editorCoreStyles.trim();
60
61
  if (!cssText) {
61
62
  return '';
@@ -75,7 +76,7 @@ const injectEditorCoreStyles = ()=>{
75
76
  })();
76
77
  `;
77
78
  };
78
- export const hideMobileTabletPreview = ()=>`
79
+ export const hideMobileTabletPreview = () => `
79
80
  [data-key="preview-tablet"],
80
81
  [data-key="resolution"],
81
82
  [data-key="dark-mode"],
@@ -84,7 +85,7 @@ export const hideMobileTabletPreview = ()=>`
84
85
  display: none !important;
85
86
  }
86
87
  `;
87
- export const hideUnlayerTools = ()=>{
88
+ export const hideUnlayerTools = () => {
88
89
  return `
89
90
  .blockbuilder-content-tools {
90
91
  display: none !important;
@@ -118,7 +119,7 @@ export const hideUnlayerTools = ()=>{
118
119
  }
119
120
  `;
120
121
  };
121
- export const createUnlayerEditor = (container, { customCSS, customJS, displayConditions, eSignFieldTypes, eSignRecipients, enableHTMLEditing, enableHTMLEditingReadonly, hideAllTools, hideBodyMenuItem, hideContentControls, latest, mergeTags, noCoreTools, tools, units })=>{
122
+ export const createUnlayerEditor = (container, { customCSS, customJS, displayConditions, eSignFieldTypes, eSignRecipients, enableHTMLEditing, enableHTMLEditingReadonly, hideAllTools, hideBodyMenuItem, hideContentControls, latest, mergeTags, noCoreTools, tools, units, }) => {
122
123
  const customScripts = [
123
124
  editorCoreScript,
124
125
  editorCoreTools,
@@ -126,63 +127,58 @@ export const createUnlayerEditor = (container, { customCSS, customJS, displayCon
126
127
  'window.dteStore.sendData("--core-loaded")',
127
128
  ...unlayerCustomToolsGetRegisterUrls(tools),
128
129
  unlayerCustomToolMetaData(tools),
129
- ...customJS ? Array.isArray(customJS) ? customJS : [
130
- customJS
131
- ] : [],
130
+ ...(customJS ? (Array.isArray(customJS) ? customJS : [customJS]) : []),
132
131
  hideAllTools ? unlayerCustomEmptyToolState() : '',
133
- 'window.dteStore.sendData("--data-loaded")'
134
- ].filter((js)=>!!(js === null || js === void 0 ? void 0 : js.trim()));
132
+ 'window.dteStore.sendData("--data-loaded")',
133
+ ].filter(js => !!(js === null || js === void 0 ? void 0 : js.trim()));
135
134
  const customStyles = [
136
135
  editorCoreStyles,
137
- ...customCSS ? Array.isArray(customCSS) ? customCSS : [
138
- customCSS
139
- ] : [],
136
+ ...(customCSS ? (Array.isArray(customCSS) ? customCSS : [customCSS]) : []),
140
137
  /*
141
138
  * @TODO this is workaround for hiding all tools from unlayer sidebar.
142
139
  * Will be better to use unlayer functionality for this but it is not implemented yet
143
- */ hideMobileTabletPreview(),
140
+ */
141
+ hideMobileTabletPreview(),
144
142
  hideAllTools ? hideUnlayerTools() : '',
145
143
  hideContentControls ? hideUnlayerContentsControls() : '',
146
- hideBodyMenuItem ? hideUnlayerBodyMenuItem() : ''
147
- ].filter((css)=>!!(css === null || css === void 0 ? void 0 : css.trim()));
144
+ hideBodyMenuItem ? hideUnlayerBodyMenuItem() : '',
145
+ ].filter(css => !!(css === null || css === void 0 ? void 0 : css.trim()));
148
146
  /**
149
147
  * Unlayer supports only passing id of container, but when we use shadowDOM (MFE),
150
148
  * getElementById can't find element in it
151
149
  * so making this dirty hack to let unlayer find container in DOM
152
- */ const id = container.id;
150
+ */
151
+ const id = container.id;
153
152
  const currentFind = document.getElementById;
154
- document.getElementById = function(elementId) {
153
+ document.getElementById = function (elementId) {
155
154
  if (id === elementId) {
156
155
  return container;
157
156
  }
158
157
  return currentFind.call(document, id);
159
158
  };
160
159
  const acv = constGenericsEditor.adminConfigProperty;
161
- const eSignTypeMapping = (eSignFieldTypes !== null && eSignFieldTypes !== void 0 ? eSignFieldTypes : []).map((key)=>({
162
- label: key,
163
- value: key.charAt(0).toLowerCase() + key.replace(/ /g, '').slice(1)
164
- }));
165
- const unitsConfig = (units !== null && units !== void 0 ? units : []).reduce((out, unit)=>{
160
+ const eSignTypeMapping = (eSignFieldTypes !== null && eSignFieldTypes !== void 0 ? eSignFieldTypes : []).map(key => {
161
+ var _a;
162
+ const value = key.charAt(0).toLowerCase() + key.replace(/ /g, '').slice(1);
163
+ return { label: (_a = E_SIGN_FIELD_TYPE_LABELS[value]) !== null && _a !== void 0 ? _a : key, value };
164
+ });
165
+ const unitsConfig = (units !== null && units !== void 0 ? units : []).reduce((out, unit) => {
166
166
  out[`custom#${unit.generic}:unit:${unit.id}`] = {
167
167
  data: {
168
- [acv]: unit.values[acv]
168
+ [acv]: unit.values[acv],
169
169
  },
170
170
  properties: {
171
171
  [constGenericsEditor.userConfigProperty]: {
172
172
  editor: {
173
- data: {
174
- [acv]: unit.values[acv]
175
- }
176
- }
173
+ data: { [acv]: unit.values[acv] },
174
+ },
177
175
  },
178
176
  [constGenericsEditor.infoDataProperty]: {
179
177
  editor: {
180
- data: {
181
- title: unit.title
182
- }
183
- }
184
- }
185
- }
178
+ data: { title: unit.title },
179
+ },
180
+ },
181
+ },
186
182
  };
187
183
  return out;
188
184
  }, {});
@@ -191,21 +187,21 @@ export const createUnlayerEditor = (container, { customCSS, customJS, displayCon
191
187
  eSignRecipient: {
192
188
  editor: {
193
189
  data: {
194
- options: eSignRecipients === null || eSignRecipients === void 0 ? void 0 : eSignRecipients.map((item)=>({
195
- label: item.displayName,
196
- value: item.name
197
- }))
198
- }
199
- }
190
+ options: eSignRecipients === null || eSignRecipients === void 0 ? void 0 : eSignRecipients.map(item => ({
191
+ label: item.displayName,
192
+ value: item.name,
193
+ })),
194
+ },
195
+ },
200
196
  },
201
197
  eSignFieldType: {
202
198
  editor: {
203
199
  data: {
204
- options: eSignTypeMapping
205
- }
206
- }
207
- }
208
- }
200
+ options: eSignTypeMapping,
201
+ },
202
+ },
203
+ },
204
+ },
209
205
  };
210
206
  let result;
211
207
  try {
@@ -215,35 +211,28 @@ export const createUnlayerEditor = (container, { customCSS, customJS, displayCon
215
211
  }
216
212
  result = unlayerApi.createEditor({
217
213
  displayMode: 'web',
218
- devices: [
219
- 'desktop'
220
- ],
214
+ devices: ['desktop'],
221
215
  features: {
222
216
  preview: true,
223
217
  userUploads: false,
224
218
  stockImages: false,
225
219
  textEditor: {
226
- tables: true
227
- }
220
+ tables: true,
221
+ },
228
222
  },
229
223
  /*
230
224
  * Flat only: nested groups here break custom tool registration. UnlayerStore applies
231
225
  * the grouped config via setMergeTags once the editor is ready.
232
- */ mergeTags: toUnlayerMergeTags(mergeTags, {
233
- groups: false
234
- }),
226
+ */
227
+ mergeTags: toUnlayerMergeTags(mergeTags, { groups: false }),
235
228
  projectId: 5713,
236
229
  version: latest ? undefined : versions.unlayer,
237
230
  appearance: {
238
- theme: 'classic_light'
231
+ theme: 'classic_light',
239
232
  },
240
233
  tools: {
241
- 'carousel': {
242
- enabled: false
243
- },
244
- 'button': {
245
- enabled: false
246
- },
234
+ 'carousel': { enabled: false },
235
+ 'button': { enabled: false },
247
236
  'html': {
248
237
  enabled: enableHTMLEditing,
249
238
  properties: {
@@ -251,75 +240,59 @@ export const createUnlayerEditor = (container, { customCSS, customJS, displayCon
251
240
  editor: {
252
241
  widgetParams: {
253
242
  codeMirrorOptions: {
254
- readOnly: enableHTMLEditingReadonly
255
- }
256
- }
257
- }
258
- }
259
- }
243
+ readOnly: enableHTMLEditingReadonly,
244
+ },
245
+ },
246
+ },
247
+ },
248
+ },
260
249
  },
261
250
  'table': {
262
- enabled: true
263
- },
264
- 'menu': {
265
- enabled: false
251
+ enabled: true,
266
252
  },
267
- 'form': {
268
- enabled: false
269
- },
270
- ...noCoreTools ? {
271
- columns: {
272
- enabled: false
273
- },
274
- text: {
275
- enabled: false
276
- },
277
- heading: {
278
- enabled: false
279
- },
280
- divider: {
281
- enabled: false
282
- },
283
- image: {
284
- enabled: false
253
+ 'menu': { enabled: false },
254
+ 'form': { enabled: false },
255
+ ...(noCoreTools
256
+ ? {
257
+ columns: { enabled: false },
258
+ text: { enabled: false },
259
+ heading: { enabled: false },
260
+ divider: { enabled: false },
261
+ image: { enabled: false },
285
262
  }
286
- } : {},
263
+ : {}),
287
264
  ...unitsConfig,
288
- 'custom#e-sign': eSignComponentRecipients
265
+ 'custom#e-sign': eSignComponentRecipients,
289
266
  },
290
267
  editor: {
291
- autoSelectOnDrop: true
268
+ autoSelectOnDrop: true,
292
269
  },
293
270
  customJS: customScripts,
294
271
  customCSS: customStyles,
295
272
  id,
296
273
  fonts: {
297
274
  showDefaultFonts: false,
298
- customFonts: unlayerSupportedFonts
275
+ customFonts: unlayerSupportedFonts,
299
276
  },
300
277
  tabs: {
301
278
  content: {},
302
279
  body: {},
303
- blocks: {
304
- enabled: false
305
- }
306
- }
280
+ blocks: { enabled: false },
281
+ },
307
282
  });
308
- } catch (error) {
283
+ }
284
+ catch (error) {
309
285
  logUnlayerError('unlayer.createEditor failed', error);
310
286
  throw error;
311
- } finally{
287
+ }
288
+ finally {
312
289
  document.getElementById = currentFind;
313
290
  }
314
291
  if (displayConditions) {
315
- result.registerCallback('displayCondition', function(data, done) {
316
- emitDisplayCondition({
317
- data,
318
- done
319
- });
292
+ result.registerCallback('displayCondition', function (data, done) {
293
+ emitDisplayCondition({ data, done });
320
294
  });
321
295
  }
322
296
  return result;
323
297
  };
324
-
325
298
  //# sourceMappingURL=unlayer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/unlayer.tsx"],"sourcesContent":["import { emitDisplayCondition } from './display-conditions/displayConditionController';\nimport { editorCoreScript, editorCoreStyles, editorCoreTools } from './editor-core';\nimport { logUnlayerError } from './log';\nimport { toUnlayerMergeTags } from './merge-tags';\nimport { constGenericsEditor } from './shared/const';\nimport { unlayerSupportedFonts } from './shared/fonts';\nimport {\n unlayerCustomEmptyToolState,\n unlayerCustomToolMetaData,\n unlayerCustomToolsGetRegisterUrls,\n} from './tools';\nimport { CreateUnlayerEditorProps } from './unlayer-interface';\n\nexport interface UnlayerExport {\n html: string;\n chunks: any;\n design: any;\n demoData?: Record<string, unknown>;\n}\n\nexport interface Unlayer {\n addEventListener(event: string, cb: (arg: any) => void): void;\n removeEventListener(event: string, cb: (arg: any) => void): void;\n registerCallback(type: string, cb: (...args: any[]) => void): void;\n unregisterCallback(type: string, cb: (...args: any[]) => void): void;\n registerProvider(type: string, cb: (...args: any[]) => void): void;\n unregisterProvider(type: string, cb: (...args: any[]) => void): void;\n loadDesign(design: any): void;\n saveDesign(callback: (design: any) => void): void;\n exportHtml(callback: (data: UnlayerExport) => void): void;\n setMergeTags(tags: any): void;\n createViewer(opts: { render: (values: any) => string }): any;\n registerTool(tool: any): void;\n setBodyValues(values: any): void;\n}\n\nexport enum DesignUpdatedEventType {\n ContentAdded = 'content:added',\n ContentMoved = 'content:moved',\n ContentRemoved = 'content:removed',\n ContentModified = 'content:modified',\n RowAdded = 'row:added',\n RowMoved = 'row:moved',\n RowRemoved = 'row:removed',\n RowModified = 'row:modified',\n ColumnAdded = 'column:added',\n ColumnRemoved = 'column:removed',\n ColumnModified = 'column:modified',\n BodyModified = 'body:modified',\n}\n\nexport interface EventDesignUpdated {\n type: DesignUpdatedEventType;\n item: {\n type: string;\n slug?: string;\n values: any;\n };\n}\n\n/**\n * !!! IMPORTANT !!!\n * do not forget to update schema version when updating unlayer version\n * it is important for templates export and should be in sync\n * to know correct schema version, open unlayer editor and check output design ('schema' property)\n */\nexport const versions = {\n unlayer: '1.421.0',\n schema: 24,\n};\n\nexport const handlePreselectTool = (preselectToolSlug: string) => {\n return `\n const element = document.querySelector('.u_content_custom_${preselectToolSlug}');\n if (element) {\n element.click();\n }\n `;\n};\n\nexport const hideUnlayerContentsControls = () => {\n return `\n .blockbuilder-layer-controls-contents, .blockbuilder-layer-controls-rows {\n display: none !important;\n }\n\n .blockbuilder-options-header .text-right .icon-delete, .blockbuilder-options-header .text-right .icon-duplicate {\n display: none !important;\n }\n `;\n};\n\nexport const hideUnlayerBodyMenuItem = () => {\n return `\n .nav-item.tab-body {\n display: none !important;\n }\n `;\n};\n\nconst injectEditorCoreStyles = () => {\n const cssText = editorCoreStyles?.trim();\n\n if (!cssText) {\n return '';\n }\n\n return `\n (function () {\n var css = ${JSON.stringify(cssText)};\n var id = 'dte-unlayer-core-styles';\n if (document.getElementById(id)) {\n return;\n }\n var style = document.createElement('style');\n style.id = id;\n style.type = 'text/css';\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n })();\n `;\n};\n\nexport const hideMobileTabletPreview = () => `\n [data-key=\"preview-tablet\"],\n [data-key=\"resolution\"],\n [data-key=\"dark-mode\"],\n [data-key=\"preview-desktop\"],\n [data-key=\"preview-mobile\"] {\n display: none !important;\n }\n`;\nexport const hideUnlayerTools = () => {\n return `\n .blockbuilder-content-tools {\n display: none !important;\n }\n \n .unlayer-custom-empty-tool-state {\n display: flex;\n margin-top: 150px;\n flex-direction: column;\n justify-content: center;\n }\n \n .unlayer-custom-empty-tool-state-icon {\n text-align: center;\n margin-bottom: 12px;\n }\n \n .unlayer-custom-empty-tool-state-icon svg{\n color: #606162;\n }\n \n .unlayer-custom-empty-tool-state-text {\n text-align: center;\n font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 500;\n line-height: normal;\n color: #606162;\n line-height: 13px;\n }\n `;\n};\n\nexport const createUnlayerEditor = (\n container: HTMLDivElement,\n {\n customCSS,\n customJS,\n displayConditions,\n eSignFieldTypes,\n eSignRecipients,\n enableHTMLEditing,\n enableHTMLEditingReadonly,\n hideAllTools,\n hideBodyMenuItem,\n hideContentControls,\n latest,\n mergeTags,\n noCoreTools,\n tools,\n units,\n }: CreateUnlayerEditorProps,\n): Unlayer => {\n const customScripts = [\n editorCoreScript,\n editorCoreTools,\n injectEditorCoreStyles(),\n 'window.dteStore.sendData(\"--core-loaded\")',\n ...unlayerCustomToolsGetRegisterUrls(tools),\n unlayerCustomToolMetaData(tools),\n ...(customJS ? (Array.isArray(customJS) ? customJS : [customJS]) : []),\n hideAllTools ? unlayerCustomEmptyToolState() : '',\n 'window.dteStore.sendData(\"--data-loaded\")',\n ].filter(js => !!js?.trim());\n const customStyles = [\n editorCoreStyles,\n ...(customCSS ? (Array.isArray(customCSS) ? customCSS : [customCSS]) : []),\n /*\n * @TODO this is workaround for hiding all tools from unlayer sidebar.\n * Will be better to use unlayer functionality for this but it is not implemented yet\n */\n hideMobileTabletPreview(),\n hideAllTools ? hideUnlayerTools() : '',\n hideContentControls ? hideUnlayerContentsControls() : '',\n hideBodyMenuItem ? hideUnlayerBodyMenuItem() : '',\n ].filter(css => !!css?.trim());\n\n /**\n * Unlayer supports only passing id of container, but when we use shadowDOM (MFE),\n * getElementById can't find element in it\n * so making this dirty hack to let unlayer find container in DOM\n */\n const id = container.id;\n const currentFind = document.getElementById;\n document.getElementById = function (elementId: string) {\n if (id === elementId) {\n return container;\n }\n\n return currentFind.call(document, id);\n };\n\n const acv = constGenericsEditor.adminConfigProperty;\n\n const eSignTypeMapping = (eSignFieldTypes ?? []).map(key => ({\n label: key,\n value: key.charAt(0).toLowerCase() + key.replace(/ /g, '').slice(1),\n }));\n\n const unitsConfig = (units ?? []).reduce(\n (out, unit) => {\n out[`custom#${unit.generic}:unit:${unit.id}`] = {\n data: {\n [acv]: unit.values[acv],\n },\n properties: {\n [constGenericsEditor.userConfigProperty]: {\n editor: {\n data: { [acv]: unit.values[acv] },\n },\n },\n [constGenericsEditor.infoDataProperty]: {\n editor: {\n data: { title: unit.title },\n },\n },\n },\n };\n return out;\n },\n {} as Record<string, any>,\n );\n\n const eSignComponentRecipients = {\n properties: {\n eSignRecipient: {\n editor: {\n data: {\n options: eSignRecipients?.map(item => ({\n label: item.displayName,\n value: item.name,\n })),\n },\n },\n },\n eSignFieldType: {\n editor: {\n data: {\n options: eSignTypeMapping,\n },\n },\n },\n },\n };\n\n let result: Unlayer;\n\n try {\n const unlayerApi = (window as any).unlayer;\n\n if (!unlayerApi?.createEditor) {\n throw new Error(\n 'Unlayer embed is not available. window.unlayer.createEditor is missing.',\n );\n }\n\n result = unlayerApi.createEditor({\n displayMode: 'web',\n devices: ['desktop'],\n features: {\n preview: true,\n userUploads: false,\n stockImages: false,\n textEditor: {\n tables: true,\n },\n },\n /*\n * Flat only: nested groups here break custom tool registration. UnlayerStore applies\n * the grouped config via setMergeTags once the editor is ready.\n */\n mergeTags: toUnlayerMergeTags(mergeTags, { groups: false }),\n projectId: 5713,\n version: latest ? undefined : versions.unlayer,\n appearance: {\n theme: 'classic_light',\n },\n tools: {\n 'carousel': { enabled: false },\n 'button': { enabled: false },\n 'html': {\n enabled: enableHTMLEditing,\n properties: {\n html: {\n editor: {\n widgetParams: {\n codeMirrorOptions: {\n readOnly: enableHTMLEditingReadonly,\n },\n },\n },\n },\n },\n },\n 'table': {\n enabled: true,\n },\n 'menu': { enabled: false },\n 'form': { enabled: false },\n ...(noCoreTools\n ? {\n columns: { enabled: false },\n text: { enabled: false },\n heading: { enabled: false },\n divider: { enabled: false },\n image: { enabled: false },\n }\n : {}),\n ...unitsConfig,\n 'custom#e-sign': eSignComponentRecipients,\n },\n editor: {\n autoSelectOnDrop: true,\n },\n customJS: customScripts,\n customCSS: customStyles,\n id,\n fonts: {\n showDefaultFonts: false,\n customFonts: unlayerSupportedFonts,\n },\n tabs: {\n content: {},\n body: {},\n blocks: { enabled: false },\n },\n });\n } catch (error: unknown) {\n logUnlayerError('unlayer.createEditor failed', error);\n throw error;\n } finally {\n document.getElementById = currentFind;\n }\n\n if (displayConditions) {\n result.registerCallback(\n 'displayCondition',\n function (data: any, done: (condition: any) => void) {\n emitDisplayCondition({ data, done });\n },\n );\n }\n\n return result;\n};\n"],"names":["emitDisplayCondition","editorCoreScript","editorCoreStyles","editorCoreTools","logUnlayerError","toUnlayerMergeTags","constGenericsEditor","unlayerSupportedFonts","unlayerCustomEmptyToolState","unlayerCustomToolMetaData","unlayerCustomToolsGetRegisterUrls","DesignUpdatedEventType","versions","unlayer","schema","handlePreselectTool","preselectToolSlug","hideUnlayerContentsControls","hideUnlayerBodyMenuItem","injectEditorCoreStyles","cssText","trim","JSON","stringify","hideMobileTabletPreview","hideUnlayerTools","createUnlayerEditor","container","customCSS","customJS","displayConditions","eSignFieldTypes","eSignRecipients","enableHTMLEditing","enableHTMLEditingReadonly","hideAllTools","hideBodyMenuItem","hideContentControls","latest","mergeTags","noCoreTools","tools","units","customScripts","Array","isArray","filter","js","customStyles","css","id","currentFind","document","getElementById","elementId","call","acv","adminConfigProperty","eSignTypeMapping","map","key","label","value","charAt","toLowerCase","replace","slice","unitsConfig","reduce","out","unit","generic","data","values","properties","userConfigProperty","editor","infoDataProperty","title","eSignComponentRecipients","eSignRecipient","options","item","displayName","name","eSignFieldType","result","unlayerApi","window","createEditor","Error","displayMode","devices","features","preview","userUploads","stockImages","textEditor","tables","groups","projectId","version","undefined","appearance","theme","enabled","html","widgetParams","codeMirrorOptions","readOnly","columns","text","heading","divider","image","autoSelectOnDrop","fonts","showDefaultFonts","customFonts","tabs","content","body","blocks","error","registerCallback","done"],"mappings":"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"}
1
+ {"version":3,"file":"unlayer.js","sourceRoot":"","sources":["../src/unlayer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type KnownHoliday } from './types';
2
+ /** Whether `value` is a valid `MM-DD` custom date (`02-29` included, as a recurring rule). */
3
+ export declare function isValidCustomDate(value: string): boolean;
4
+ /** A month/day pair as `DateFieldYearless` represents it (either part `null` while incomplete). */
5
+ export interface YearlessDateValue {
6
+ month: number | null;
7
+ day: number | null;
8
+ }
9
+ /** Converts a complete `{ month, day }` to `MM-DD`, or null while the field is incomplete/invalid. */
10
+ export declare function yearlessDateToCustomDate(value: YearlessDateValue | null): string | null;
11
+ /** Converts a stored `MM-DD` custom date back to `DateFieldYearless`'s `{ month, day }` value. */
12
+ export declare function customDateToYearlessDate(value: string): YearlessDateValue | null;
13
+ /** Formats a stored `MM-DD` custom date for display, e.g. `03-03` → `Mar - 03`. */
14
+ export declare function formatCustomDateLabel(value: string): string;
15
+ /** How the schedule picker and drawer name a known holiday, e.g. `Independence Day · July 4`. */
16
+ export declare function formatKnownHolidayLabel(holiday: Pick<KnownHoliday, 'displayName' | 'rule'>): string;
17
+ /** Whether `name` is the reserved default-schedule name, ignoring case and surrounding whitespace. */
18
+ export declare function isReservedScheduleName(name: string): boolean;
19
+ /**
20
+ * Client-side schedule name checks mirroring DTE's `SaveDateScheduleRequest.Name` contract: a
21
+ * required, non-reserved name up to 255 characters, unique per tenant ignoring case. `existingNames`
22
+ * should exclude the schedule being edited, if any. The server is still authoritative — a duplicate
23
+ * it rejects despite passing this check is a 409, not a bug here.
24
+ */
25
+ export declare function validateScheduleName(name: string, existingNames: string[]): string | undefined;