@servicetitan/dte-unlayer 0.153.0 → 0.155.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/display-conditions/ConditionRow.d.ts.map +1 -1
- package/dist/display-conditions/ConditionRow.js +111 -95
- package/dist/display-conditions/ConditionRow.js.map +1 -1
- package/dist/display-conditions/DisplayConditionModal.d.ts +3 -3
- package/dist/display-conditions/DisplayConditionModal.d.ts.map +1 -1
- package/dist/display-conditions/DisplayConditionModal.js +8 -95
- package/dist/display-conditions/DisplayConditionModal.js.map +1 -1
- package/dist/display-conditions/useConditionForms.d.ts +22 -0
- package/dist/display-conditions/useConditionForms.d.ts.map +1 -0
- package/dist/display-conditions/useConditionForms.js +110 -0
- package/dist/display-conditions/useConditionForms.js.map +1 -0
- package/dist/e-sign-offset/ESignDateSignedOffsetModal.d.ts +11 -0
- package/dist/e-sign-offset/ESignDateSignedOffsetModal.d.ts.map +1 -0
- package/dist/e-sign-offset/ESignDateSignedOffsetModal.js +192 -0
- package/dist/e-sign-offset/ESignDateSignedOffsetModal.js.map +1 -0
- package/dist/e-sign-offset/ESignOffsetRuleRow.d.ts +20 -0
- package/dist/e-sign-offset/ESignOffsetRuleRow.d.ts.map +1 -0
- package/dist/e-sign-offset/ESignOffsetRuleRow.js +87 -0
- package/dist/e-sign-offset/ESignOffsetRuleRow.js.map +1 -0
- package/dist/e-sign-offset/eSignOffsetController.d.ts +10 -0
- package/dist/e-sign-offset/eSignOffsetController.d.ts.map +1 -0
- package/dist/e-sign-offset/eSignOffsetController.js +27 -0
- package/dist/e-sign-offset/eSignOffsetController.js.map +1 -0
- 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.d.ts.map +1 -1
- package/dist/editor.js +8 -0
- package/dist/editor.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/merge-tags.d.ts +6 -10
- package/dist/merge-tags.d.ts.map +1 -1
- package/dist/merge-tags.js +35 -44
- package/dist/merge-tags.js.map +1 -1
- package/dist/shared/const.d.ts +30 -0
- package/dist/shared/const.d.ts.map +1 -1
- package/dist/shared/const.js +5 -0
- package/dist/shared/const.js.map +1 -1
- package/dist/shared/e-sign-offset.d.ts +21 -0
- package/dist/shared/e-sign-offset.d.ts.map +1 -0
- package/dist/shared/e-sign-offset.js +130 -0
- package/dist/shared/e-sign-offset.js.map +1 -0
- package/dist/shared/instance-id.d.ts +13 -0
- package/dist/shared/instance-id.d.ts.map +1 -0
- package/dist/shared/instance-id.js +22 -0
- package/dist/shared/instance-id.js.map +1 -0
- package/dist/store.d.ts +15 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +80 -5
- package/dist/store.js.map +1 -1
- package/dist/tools.d.ts +18 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +68 -1
- package/dist/tools.js.map +1 -1
- package/dist/unlayer-interface.d.ts +11 -1
- package/dist/unlayer-interface.d.ts.map +1 -1
- package/dist/unlayer-interface.js.map +1 -1
- package/dist/unlayer.d.ts.map +1 -1
- package/dist/unlayer.js +5 -3
- package/dist/unlayer.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/e-sign-offset.test.ts +281 -0
- package/src/__tests__/merge-tags.test.ts +98 -76
- package/src/__tests__/store.merge-tags.test.ts +186 -0
- package/src/display-conditions/ConditionRow.tsx +86 -81
- package/src/display-conditions/DisplayConditionModal.tsx +12 -116
- package/src/display-conditions/useConditionForms.ts +146 -0
- package/src/e-sign-offset/ESignDateSignedOffsetModal.tsx +197 -0
- package/src/e-sign-offset/ESignOffsetRuleRow.tsx +101 -0
- package/src/e-sign-offset/eSignOffsetController.ts +39 -0
- package/src/editor-core-source.ts +2 -2
- package/src/editor.tsx +9 -0
- package/src/index.ts +1 -2
- package/src/merge-tags.ts +41 -60
- package/src/shared/const.ts +37 -0
- package/src/shared/e-sign-offset.ts +173 -0
- package/src/shared/instance-id.ts +23 -0
- package/src/store.ts +106 -5
- package/src/tools.ts +87 -1
- package/src/unlayer-interface.tsx +11 -1
- package/src/unlayer.tsx +5 -3
package/dist/editor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAOhB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAOhB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAgB,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,EAAE,wBAAwB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,OAAO,CAAC,IAAI,IAAI,CAAC;IAEjB,QAAQ,CAAC,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAE/C,cAAc,CAAC,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE/C,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/C,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpD,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;CAC7C;AAED,eAAO,MAAM,aAAa,2DAAwC,CAAC;AAEnE,eAAO,MAAM,aAAa,2GAyHxB,CAAC"}
|
package/dist/editor.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import { DisplayConditionModal } from './display-conditions/DisplayConditionModal';
|
|
4
|
+
import { ESignDateSignedOffsetModal } from './e-sign-offset/ESignDateSignedOffsetModal';
|
|
4
5
|
import { getErrorMessage } from './log';
|
|
5
6
|
import { UnlayerStore } from './store';
|
|
6
7
|
export const useUnlayerRef = ()=>useRef(null);
|
|
7
8
|
export const UnlayerEditor = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
8
9
|
var _props_id;
|
|
10
|
+
var _props_opts_eSignRecipients;
|
|
9
11
|
const [isReady, setIsReady] = useState(false);
|
|
10
12
|
const [loadError, setLoadError] = useState();
|
|
11
13
|
const containerRef = useRef(null);
|
|
@@ -136,6 +138,12 @@ export const UnlayerEditor = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
136
138
|
schema: props.opts.schema,
|
|
137
139
|
onConditionalsOpen: props.opts.onConditionalsOpen,
|
|
138
140
|
onConditionFormSelect: props.opts.onConditionFormSelect
|
|
141
|
+
}),
|
|
142
|
+
!!((_props_opts_eSignRecipients = props.opts.eSignRecipients) === null || _props_opts_eSignRecipients === void 0 ? void 0 : _props_opts_eSignRecipients.length) && /*#__PURE__*/ _jsx(ESignDateSignedOffsetModal, {
|
|
143
|
+
portalContainer: props.opts.displayConditionModalPortalContainer,
|
|
144
|
+
schema: props.opts.schema,
|
|
145
|
+
onConditionalsOpen: props.opts.onConditionalsOpen,
|
|
146
|
+
onConditionFormSelect: props.opts.onConditionFormSelect
|
|
139
147
|
})
|
|
140
148
|
]
|
|
141
149
|
});
|
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 { getErrorMessage } from './log';\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 [loadError, setLoadError] = useState<string>();\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 store.setOnError(props.onError);\n\n return () => store.setOnError();\n }, [props.onError, store]);\n\n useEffect(() => {\n if (containerRef.current) {\n store\n .init(containerRef.current)\n .then(() => {\n setLoadError(undefined);\n setIsReady(true);\n })\n .catch((error: unknown) => {\n const description = getErrorMessage(error);\n setIsReady(false);\n setLoadError(description);\n props.onError?.('Editor failed to load', description);\n });\n }\n\n return () => store.destroy();\n // eslint-disable-next-line react-hooks/exhaustive-deps\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.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 {loadError && <p className=\"c-red-500\">error loading editor: {loadError}</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","getErrorMessage","UnlayerStore","useUnlayerRef","UnlayerEditor","props","ref","isReady","setIsReady","loadError","setLoadError","containerRef","store","opts","setOnError","onError","current","init","then","undefined","catch","error","description","destroy","unlayerRef","setDesign","design","setOnChange","onChange","setOnSnapshotSave","onSnapshotSave","newSnapshot","addTwin","setOnReady","onReady","setOnImage","onImage","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;AACnF,SAASC,eAAe,QAAQ,QAAQ;AAExC,SAASC,YAAY,QAAiC,UAAU;AAuBhE,OAAO,MAAMC,gBAAgB,
|
|
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 { ESignDateSignedOffsetModal } from './e-sign-offset/ESignDateSignedOffsetModal';\nimport { getErrorMessage } from './log';\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 [loadError, setLoadError] = useState<string>();\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 store.setOnError(props.onError);\n\n return () => store.setOnError();\n }, [props.onError, store]);\n\n useEffect(() => {\n if (containerRef.current) {\n store\n .init(containerRef.current)\n .then(() => {\n setLoadError(undefined);\n setIsReady(true);\n })\n .catch((error: unknown) => {\n const description = getErrorMessage(error);\n setIsReady(false);\n setLoadError(description);\n props.onError?.('Editor failed to load', description);\n });\n }\n\n return () => store.destroy();\n // eslint-disable-next-line react-hooks/exhaustive-deps\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.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 {loadError && <p className=\"c-red-500\">error loading editor: {loadError}</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 {!!props.opts.eSignRecipients?.length && (\n <ESignDateSignedOffsetModal\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","ESignDateSignedOffsetModal","getErrorMessage","UnlayerStore","useUnlayerRef","UnlayerEditor","props","ref","isReady","setIsReady","loadError","setLoadError","containerRef","store","opts","setOnError","onError","current","init","then","undefined","catch","error","description","destroy","unlayerRef","setDesign","design","setOnChange","onChange","setOnSnapshotSave","onSnapshotSave","newSnapshot","addTwin","setOnReady","onReady","setOnImage","onImage","setOnMessage","onMessage","setOnFormSelect","onFormSelect","setOnCalcFieldOpen","onCalcFieldOpen","setOnCalcFieldSelect","onCalcFieldSelect","minHeight","style","div","display","p","className","id","displayConditions","portalContainer","displayConditionModalPortalContainer","schema","onConditionalsOpen","onConditionFormSelect","eSignRecipients","length"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ export * from './tools';
|
|
|
3
3
|
export * from './api-core';
|
|
4
4
|
export * from './api-custom-tools';
|
|
5
5
|
export * from './unlayer-interface';
|
|
6
|
-
export { isUnlayerMergeTagGroup,
|
|
7
|
-
export type { ToUnlayerMergeTagsOptions, UnlayerMergeTagGroup, UnlayerMergeTagLeaf, UnlayerMergeTagsConfig,
|
|
6
|
+
export { isUnlayerMergeTagGroup, toUnlayerMergeTags } from './merge-tags';
|
|
7
|
+
export type { ToUnlayerMergeTagsOptions, UnlayerMergeTagGroup, UnlayerMergeTagLeaf, UnlayerMergeTagsConfig, } from './merge-tags';
|
|
8
8
|
export * from './loadScript';
|
|
9
9
|
export * from './shared/const';
|
|
10
10
|
export * from './shared/forms';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC1E,YAAY,EACR,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,GACzB,MAAM,cAAc,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,cAAc,8CAA8C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export * from './tools';
|
|
|
3
3
|
export * from './api-core';
|
|
4
4
|
export * from './api-custom-tools';
|
|
5
5
|
export * from './unlayer-interface';
|
|
6
|
-
export { isUnlayerMergeTagGroup,
|
|
6
|
+
export { isUnlayerMergeTagGroup, toUnlayerMergeTags } from './merge-tags';
|
|
7
7
|
export * from './loadScript';
|
|
8
8
|
export * from './shared/const';
|
|
9
9
|
export * from './shared/forms';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './editor';\nexport * from './tools';\nexport * from './api-core';\nexport * from './api-custom-tools';\nexport * from './unlayer-interface';\nexport { isUnlayerMergeTagGroup,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './editor';\nexport * from './tools';\nexport * from './api-core';\nexport * from './api-custom-tools';\nexport * from './unlayer-interface';\nexport { isUnlayerMergeTagGroup, toUnlayerMergeTags } from './merge-tags';\nexport type {\n ToUnlayerMergeTagsOptions,\n UnlayerMergeTagGroup,\n UnlayerMergeTagLeaf,\n UnlayerMergeTagsConfig,\n} from './merge-tags';\nexport * from './loadScript';\nexport * from './shared/const';\nexport * from './shared/forms';\nexport * from './shared/schema';\nexport * from './shared/tools';\nexport type { UnlayerDesignChangeInfo } from './store';\nexport { versions } from './unlayer';\nexport * from './shared/date-calc';\nexport { emptyArrayIfNull } from './shared/nunjucks-helpers';\nexport * from './display-conditions/lookupOptionsController';\n"],"names":["isUnlayerMergeTagGroup","toUnlayerMergeTags","versions","emptyArrayIfNull"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B,cAAc,qBAAqB;AACnC,cAAc,sBAAsB;AACpC,SAASA,sBAAsB,EAAEC,kBAAkB,QAAQ,eAAe;AAO1E,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B,cAAc,kBAAkB;AAChC,cAAc,iBAAiB;AAE/B,SAASC,QAAQ,QAAQ,YAAY;AACrC,cAAc,qBAAqB;AACnC,SAASC,gBAAgB,QAAQ,4BAA4B;AAC7D,cAAc,+CAA+C"}
|
package/dist/merge-tags.d.ts
CHANGED
|
@@ -5,7 +5,8 @@ export interface UnlayerMergeTagLeaf {
|
|
|
5
5
|
}
|
|
6
6
|
export interface UnlayerMergeTagGroup {
|
|
7
7
|
name: string;
|
|
8
|
-
|
|
8
|
+
/** Nested submenu: leaves and/or further groups (Unlayer supports arbitrary depth). */
|
|
9
|
+
mergeTags: UnlayerMergeTagsConfig;
|
|
9
10
|
}
|
|
10
11
|
export type UnlayerMergeTagsConfig = Record<string, UnlayerMergeTagLeaf | UnlayerMergeTagGroup>;
|
|
11
12
|
export interface ToUnlayerMergeTagsOptions {
|
|
@@ -15,16 +16,11 @@ export interface ToUnlayerMergeTagsOptions {
|
|
|
15
16
|
*/
|
|
16
17
|
groups?: boolean;
|
|
17
18
|
}
|
|
18
|
-
export interface UnlayerMergeTagsEditor {
|
|
19
|
-
addEventListener(event: string, cb: (arg: any) => void): void;
|
|
20
|
-
setMergeTags(tags: UnlayerMergeTagsConfig): void;
|
|
21
|
-
}
|
|
22
19
|
export declare function isUnlayerMergeTagGroup(entry: UnlayerMergeTagLeaf | UnlayerMergeTagGroup): entry is UnlayerMergeTagGroup;
|
|
23
|
-
export declare const toUnlayerMergeTags: (tags: UnlayerEditorMergeTagInfo[] | undefined, options?: ToUnlayerMergeTagsOptions) => UnlayerMergeTagsConfig | undefined;
|
|
24
20
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
21
|
+
* Builds Unlayer's `mergeTags` config. With `groups` enabled (default) tags nest under the
|
|
22
|
+
* submenu path in `group`; `UnlayerStore` applies that shape once the editor is ready, since
|
|
23
|
+
* nested groups at `createEditor` time prevent DTE custom tools from loading.
|
|
28
24
|
*/
|
|
29
|
-
export declare const
|
|
25
|
+
export declare const toUnlayerMergeTags: (tags: UnlayerEditorMergeTagInfo[] | undefined, options?: ToUnlayerMergeTagsOptions) => UnlayerMergeTagsConfig | undefined;
|
|
30
26
|
//# sourceMappingURL=merge-tags.d.ts.map
|
package/dist/merge-tags.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-tags.d.ts","sourceRoot":"","sources":["../src/merge-tags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-tags.d.ts","sourceRoot":"","sources":["../src/merge-tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,SAAS,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;AAEhG,MAAM,WAAW,yBAAyB;IACtC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,GAClD,KAAK,IAAI,oBAAoB,CAE/B;AA4CD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC3B,MAAM,yBAAyB,EAAE,GAAG,SAAS,EAC7C,UAAU,yBAAyB,uCAoBtC,CAAC"}
|
package/dist/merge-tags.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { logUnlayerError } from './log';
|
|
2
1
|
export function isUnlayerMergeTagGroup(entry) {
|
|
3
2
|
return 'mergeTags' in entry;
|
|
4
3
|
}
|
|
@@ -6,61 +5,53 @@ const toMergeTagKey = (value)=>{
|
|
|
6
5
|
const key = value.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).join('_');
|
|
7
6
|
return key || value;
|
|
8
7
|
};
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Normalizes the host `group` into the submenu path the tag belongs to:
|
|
10
|
+
* `'Custom Fields'` → `['Custom Fields']`, `['Forms', 'Intake']` → `['Forms', 'Intake']`.
|
|
11
|
+
* Blank segments are dropped; an empty result means the tag stays at the top level.
|
|
12
|
+
*/ const toGroupPath = (group)=>{
|
|
13
|
+
const segments = Array.isArray(group) ? group : group === undefined ? [] : [
|
|
14
|
+
group
|
|
15
|
+
];
|
|
16
|
+
return segments.map((segment)=>segment.trim()).filter(Boolean);
|
|
17
|
+
};
|
|
18
|
+
/** Returns the `mergeTags` record of the (possibly nested) group at `path`, creating groups on the way. */ const ensureGroup = (root, path)=>{
|
|
19
|
+
let current = root;
|
|
20
|
+
for (const groupName of path){
|
|
21
|
+
const groupKey = toMergeTagKey(groupName);
|
|
22
|
+
const existing = current[groupKey];
|
|
23
|
+
if (existing && isUnlayerMergeTagGroup(existing)) {
|
|
24
|
+
current = existing.mergeTags;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const created = {
|
|
28
|
+
name: groupName,
|
|
29
|
+
mergeTags: {}
|
|
30
|
+
};
|
|
31
|
+
current[groupKey] = created;
|
|
32
|
+
current = created.mergeTags;
|
|
33
|
+
}
|
|
34
|
+
return current;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Builds Unlayer's `mergeTags` config. With `groups` enabled (default) tags nest under the
|
|
38
|
+
* submenu path in `group`; `UnlayerStore` applies that shape once the editor is ready, since
|
|
39
|
+
* nested groups at `createEditor` time prevent DTE custom tools from loading.
|
|
40
|
+
*/ export const toUnlayerMergeTags = (tags, options)=>{
|
|
10
41
|
if (!(tags === null || tags === void 0 ? void 0 : tags.length)) {
|
|
11
42
|
return undefined;
|
|
12
43
|
}
|
|
13
44
|
const groupsEnabled = (options === null || options === void 0 ? void 0 : options.groups) !== false;
|
|
14
45
|
return tags.reduce((out, tag)=>{
|
|
15
|
-
var _tag_group;
|
|
16
46
|
const mergeTag = {
|
|
17
47
|
name: tag.name,
|
|
18
48
|
value: tag.propertyPath
|
|
19
49
|
};
|
|
20
50
|
const tagKey = toMergeTagKey(tag.id);
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
out[tagKey] = mergeTag;
|
|
24
|
-
return out;
|
|
25
|
-
}
|
|
26
|
-
const groupKey = toMergeTagKey(groupName);
|
|
27
|
-
const existing = out[groupKey];
|
|
28
|
-
if (existing && isUnlayerMergeTagGroup(existing)) {
|
|
29
|
-
existing.mergeTags[tagKey] = mergeTag;
|
|
30
|
-
return out;
|
|
31
|
-
}
|
|
32
|
-
out[groupKey] = {
|
|
33
|
-
name: groupName,
|
|
34
|
-
mergeTags: {
|
|
35
|
-
[tagKey]: mergeTag
|
|
36
|
-
}
|
|
37
|
-
};
|
|
51
|
+
const groupPath = groupsEnabled ? toGroupPath(tag.group) : [];
|
|
52
|
+
ensureGroup(out, groupPath)[tagKey] = mergeTag;
|
|
38
53
|
return out;
|
|
39
54
|
}, {});
|
|
40
55
|
};
|
|
41
|
-
/**
|
|
42
|
-
* Nested Unlayer groups passed to createEditor prevent DTE custom tools from
|
|
43
|
-
* loading in the host app. Apply the 0.151 flat shape at init, then upgrade to
|
|
44
|
-
* grouped submenus once the editor (and customJS tools) are ready.
|
|
45
|
-
*/ export const scheduleUnlayerMergeTags = (editor, tags)=>{
|
|
46
|
-
const grouped = toUnlayerMergeTags(tags);
|
|
47
|
-
if (!grouped) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
let isApplied = false;
|
|
51
|
-
const apply = ()=>{
|
|
52
|
-
if (isApplied) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
editor.setMergeTags(grouped);
|
|
57
|
-
isApplied = true;
|
|
58
|
-
} catch (error) {
|
|
59
|
-
logUnlayerError('Failed to apply grouped merge tags', error);
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
editor.addEventListener('editor:ready', apply);
|
|
63
|
-
editor.addEventListener('design:loaded', apply);
|
|
64
|
-
};
|
|
65
56
|
|
|
66
57
|
//# sourceMappingURL=merge-tags.js.map
|
package/dist/merge-tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/merge-tags.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../src/merge-tags.ts"],"sourcesContent":["import { UnlayerEditorMergeTagInfo } from './unlayer-interface';\n\nexport interface UnlayerMergeTagLeaf {\n name: string;\n value: string;\n}\n\nexport interface UnlayerMergeTagGroup {\n name: string;\n /** Nested submenu: leaves and/or further groups (Unlayer supports arbitrary depth). */\n mergeTags: UnlayerMergeTagsConfig;\n}\n\nexport type UnlayerMergeTagsConfig = Record<string, UnlayerMergeTagLeaf | UnlayerMergeTagGroup>;\n\nexport interface ToUnlayerMergeTagsOptions {\n /**\n * When false, ignore `group` and emit the flat 0.151 shape. Unlayer custom\n * tools fail to register if nested groups are present during createEditor.\n */\n groups?: boolean;\n}\n\nexport function isUnlayerMergeTagGroup(\n entry: UnlayerMergeTagLeaf | UnlayerMergeTagGroup,\n): entry is UnlayerMergeTagGroup {\n return 'mergeTags' in entry;\n}\n\nconst toMergeTagKey = (value: string) => {\n const key = value\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter(Boolean)\n .join('_');\n\n return key || value;\n};\n\n/**\n * Normalizes the host `group` into the submenu path the tag belongs to:\n * `'Custom Fields'` → `['Custom Fields']`, `['Forms', 'Intake']` → `['Forms', 'Intake']`.\n * Blank segments are dropped; an empty result means the tag stays at the top level.\n */\nconst toGroupPath = (group: UnlayerEditorMergeTagInfo['group']): string[] => {\n const segments = Array.isArray(group) ? group : group === undefined ? [] : [group];\n\n return segments.map(segment => segment.trim()).filter(Boolean);\n};\n\n/** Returns the `mergeTags` record of the (possibly nested) group at `path`, creating groups on the way. */\nconst ensureGroup = (root: UnlayerMergeTagsConfig, path: string[]) => {\n let current = root;\n\n for (const groupName of path) {\n const groupKey = toMergeTagKey(groupName);\n const existing = current[groupKey];\n\n if (existing && isUnlayerMergeTagGroup(existing)) {\n current = existing.mergeTags;\n continue;\n }\n\n const created: UnlayerMergeTagGroup = { name: groupName, mergeTags: {} };\n current[groupKey] = created;\n current = created.mergeTags;\n }\n\n return current;\n};\n\n/**\n * Builds Unlayer's `mergeTags` config. With `groups` enabled (default) tags nest under the\n * submenu path in `group`; `UnlayerStore` applies that shape once the editor is ready, since\n * nested groups at `createEditor` time prevent DTE custom tools from loading.\n */\nexport const toUnlayerMergeTags = (\n tags: UnlayerEditorMergeTagInfo[] | undefined,\n options?: ToUnlayerMergeTagsOptions,\n) => {\n if (!tags?.length) {\n return undefined;\n }\n\n const groupsEnabled = options?.groups !== false;\n\n return tags.reduce<UnlayerMergeTagsConfig>((out, tag) => {\n const mergeTag: UnlayerMergeTagLeaf = {\n name: tag.name,\n value: tag.propertyPath,\n };\n const tagKey = toMergeTagKey(tag.id);\n const groupPath = groupsEnabled ? toGroupPath(tag.group) : [];\n\n ensureGroup(out, groupPath)[tagKey] = mergeTag;\n\n return out;\n }, {});\n};\n"],"names":["isUnlayerMergeTagGroup","entry","toMergeTagKey","value","key","toLowerCase","split","filter","Boolean","join","toGroupPath","group","segments","Array","isArray","undefined","map","segment","trim","ensureGroup","root","path","current","groupName","groupKey","existing","mergeTags","created","name","toUnlayerMergeTags","tags","options","length","groupsEnabled","groups","reduce","out","tag","mergeTag","propertyPath","tagKey","id","groupPath"],"mappings":"AAuBA,OAAO,SAASA,uBACZC,KAAiD;IAEjD,OAAO,eAAeA;AAC1B;AAEA,MAAMC,gBAAgB,CAACC;IACnB,MAAMC,MAAMD,MACPE,WAAW,GACXC,KAAK,CAAC,cACNC,MAAM,CAACC,SACPC,IAAI,CAAC;IAEV,OAAOL,OAAOD;AAClB;AAEA;;;;CAIC,GACD,MAAMO,cAAc,CAACC;IACjB,MAAMC,WAAWC,MAAMC,OAAO,CAACH,SAASA,QAAQA,UAAUI,YAAY,EAAE,GAAG;QAACJ;KAAM;IAElF,OAAOC,SAASI,GAAG,CAACC,CAAAA,UAAWA,QAAQC,IAAI,IAAIX,MAAM,CAACC;AAC1D;AAEA,yGAAyG,GACzG,MAAMW,cAAc,CAACC,MAA8BC;IAC/C,IAAIC,UAAUF;IAEd,KAAK,MAAMG,aAAaF,KAAM;QAC1B,MAAMG,WAAWtB,cAAcqB;QAC/B,MAAME,WAAWH,OAAO,CAACE,SAAS;QAElC,IAAIC,YAAYzB,uBAAuByB,WAAW;YAC9CH,UAAUG,SAASC,SAAS;YAC5B;QACJ;QAEA,MAAMC,UAAgC;YAAEC,MAAML;YAAWG,WAAW,CAAC;QAAE;QACvEJ,OAAO,CAACE,SAAS,GAAGG;QACpBL,UAAUK,QAAQD,SAAS;IAC/B;IAEA,OAAOJ;AACX;AAEA;;;;CAIC,GACD,OAAO,MAAMO,qBAAqB,CAC9BC,MACAC;IAEA,IAAI,EAACD,iBAAAA,2BAAAA,KAAME,MAAM,GAAE;QACf,OAAOjB;IACX;IAEA,MAAMkB,gBAAgBF,CAAAA,oBAAAA,8BAAAA,QAASG,MAAM,MAAK;IAE1C,OAAOJ,KAAKK,MAAM,CAAyB,CAACC,KAAKC;QAC7C,MAAMC,WAAgC;YAClCV,MAAMS,IAAIT,IAAI;YACdzB,OAAOkC,IAAIE,YAAY;QAC3B;QACA,MAAMC,SAAStC,cAAcmC,IAAII,EAAE;QACnC,MAAMC,YAAYT,gBAAgBvB,YAAY2B,IAAI1B,KAAK,IAAI,EAAE;QAE7DQ,YAAYiB,KAAKM,UAAU,CAACF,OAAO,GAAGF;QAEtC,OAAOF;IACX,GAAG,CAAC;AACR,EAAE"}
|
package/dist/shared/const.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DisplayConditionState } from '../display-conditions/types';
|
|
1
2
|
import { SchemaObject } from './schema';
|
|
2
3
|
export declare const constGenericsEditor: {
|
|
3
4
|
infoDataProperty: string;
|
|
@@ -9,6 +10,34 @@ export interface UnlayerEditorESignRecipientInfo {
|
|
|
9
10
|
name: string;
|
|
10
11
|
displayName: string;
|
|
11
12
|
}
|
|
13
|
+
export declare const E_SIGN_TOOL_SLUG = "e-sign";
|
|
14
|
+
export declare const E_SIGN_DATE_SIGNED_OFFSET_TYPE = "dateSignedOffset";
|
|
15
|
+
/** Must match the backend `EsignFieldSubTypes` registry key read from the e-sign tool values. */
|
|
16
|
+
export declare const E_SIGN_DATE_SIGNED_OFFSET_VALUES_KEY = "eSignDateSignedOffset";
|
|
17
|
+
export declare const MAX_E_SIGN_OFFSET_DAYS = 365;
|
|
18
|
+
/** Counts the trailing unconditional rule too. */
|
|
19
|
+
export declare const MAX_E_SIGN_OFFSET_RULES = 5;
|
|
20
|
+
export interface ESignDateSignedOffsetRule {
|
|
21
|
+
days: number;
|
|
22
|
+
/** Always `behavior: 'show'` with exactly one condition; the backend rejects anything else. */
|
|
23
|
+
condition: DisplayConditionState;
|
|
24
|
+
}
|
|
25
|
+
export interface ESignDateSignedOffsetFinalRule {
|
|
26
|
+
days: number;
|
|
27
|
+
condition?: never;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Ordered if / else-if / else chain: the first rule whose condition matches supplies the offset,
|
|
31
|
+
* and the last rule is always the unconditional fallback.
|
|
32
|
+
*/
|
|
33
|
+
export interface ESignDateSignedOffsetSettings {
|
|
34
|
+
rules: [ESignDateSignedOffsetFinalRule] | [...ESignDateSignedOffsetRule[], ESignDateSignedOffsetFinalRule];
|
|
35
|
+
}
|
|
36
|
+
/** Payload of both `--esign-offset-open` (iframe to parent) and `--esign-offset-result` (back). */
|
|
37
|
+
export interface UnlayerEventESignOffset {
|
|
38
|
+
requestId: string;
|
|
39
|
+
value: ESignDateSignedOffsetSettings;
|
|
40
|
+
}
|
|
12
41
|
export interface UnlayerEditorUnit {
|
|
13
42
|
id: string;
|
|
14
43
|
generic: string;
|
|
@@ -28,6 +57,7 @@ export interface UnlayerEventConfig {
|
|
|
28
57
|
isSnapshotMode?: boolean;
|
|
29
58
|
units?: UnlayerEditorUnit[];
|
|
30
59
|
holidays?: string[];
|
|
60
|
+
conditionalRulesEnabled?: boolean;
|
|
31
61
|
}
|
|
32
62
|
export interface UnlayerEventRegister {
|
|
33
63
|
units?: UnlayerEditorUnit[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/shared/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;CAI/B,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/shared/const.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;CAI/B,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,WAAW,CAAC;AACzC,eAAO,MAAM,8BAA8B,qBAAqB,CAAC;AACjE,iGAAiG;AACjG,eAAO,MAAM,oCAAoC,0BAA0B,CAAC;AAC5E,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,+FAA+F;IAC/F,SAAS,EAAE,qBAAqB,CAAC;CACpC;AAED,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,KAAK,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC1C,KAAK,EACC,CAAC,8BAA8B,CAAC,GAChC,CAAC,GAAG,yBAAyB,EAAE,EAAE,8BAA8B,CAAC,CAAC;CAC1E;AAED,mGAAmG;AACnG,MAAM,WAAW,uBAAuB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,6BAA6B,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,+BAA+B,EAAE,CAAC;IACpD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
package/dist/shared/const.js
CHANGED
|
@@ -3,5 +3,10 @@ export const constGenericsEditor = {
|
|
|
3
3
|
adminConfigProperty: 'adminConfig',
|
|
4
4
|
userConfigProperty: 'config'
|
|
5
5
|
};
|
|
6
|
+
export const E_SIGN_TOOL_SLUG = 'e-sign';
|
|
7
|
+
export const E_SIGN_DATE_SIGNED_OFFSET_TYPE = 'dateSignedOffset';
|
|
8
|
+
/** Must match the backend `EsignFieldSubTypes` registry key read from the e-sign tool values. */ export const E_SIGN_DATE_SIGNED_OFFSET_VALUES_KEY = 'eSignDateSignedOffset';
|
|
9
|
+
export const MAX_E_SIGN_OFFSET_DAYS = 365;
|
|
10
|
+
/** Counts the trailing unconditional rule too. */ export const MAX_E_SIGN_OFFSET_RULES = 5;
|
|
6
11
|
|
|
7
12
|
//# sourceMappingURL=const.js.map
|
package/dist/shared/const.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/const.ts"],"sourcesContent":["import { SchemaObject } from './schema';\n\nexport const constGenericsEditor = {\n infoDataProperty: '_info',\n adminConfigProperty: 'adminConfig',\n userConfigProperty: 'config',\n};\n\nexport interface UnlayerEditorESignRecipientInfo {\n id: number;\n name: string;\n displayName: string;\n}\n\nexport interface UnlayerEditorUnit {\n id: string;\n generic: string;\n title: string;\n values: any;\n}\n\nexport interface UnlayerEditorTwin {\n tool: string;\n title: string;\n values: any;\n}\n\nexport interface UnlayerEventConfig {\n dummyData?: any;\n schema?: SchemaObject;\n generics?: true | string[];\n genericConfigMode?: boolean;\n isSnapshotMode?: boolean;\n units?: UnlayerEditorUnit[];\n holidays?: string[];\n}\n\nexport interface UnlayerEventRegister {\n units?: UnlayerEditorUnit[];\n eSignRecipients?: UnlayerEditorESignRecipientInfo[];\n eSignFieldTypes?: string[];\n customTools?: {\n key: string;\n title?: string;\n }[];\n toolTwins?: UnlayerEditorTwin[];\n}\n\nexport interface UnlayerToolMetaData {\n key: string;\n description?: string;\n}\n"],"names":["constGenericsEditor","infoDataProperty","adminConfigProperty","userConfigProperty"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/shared/const.ts"],"sourcesContent":["import type { DisplayConditionState } from '../display-conditions/types';\nimport { SchemaObject } from './schema';\n\nexport const constGenericsEditor = {\n infoDataProperty: '_info',\n adminConfigProperty: 'adminConfig',\n userConfigProperty: 'config',\n};\n\nexport interface UnlayerEditorESignRecipientInfo {\n id: number;\n name: string;\n displayName: string;\n}\n\nexport const E_SIGN_TOOL_SLUG = 'e-sign';\nexport const E_SIGN_DATE_SIGNED_OFFSET_TYPE = 'dateSignedOffset';\n/** Must match the backend `EsignFieldSubTypes` registry key read from the e-sign tool values. */\nexport const E_SIGN_DATE_SIGNED_OFFSET_VALUES_KEY = 'eSignDateSignedOffset';\nexport const MAX_E_SIGN_OFFSET_DAYS = 365;\n/** Counts the trailing unconditional rule too. */\nexport const MAX_E_SIGN_OFFSET_RULES = 5;\n\nexport interface ESignDateSignedOffsetRule {\n days: number;\n /** Always `behavior: 'show'` with exactly one condition; the backend rejects anything else. */\n condition: DisplayConditionState;\n}\n\nexport interface ESignDateSignedOffsetFinalRule {\n days: number;\n condition?: never;\n}\n\n/**\n * Ordered if / else-if / else chain: the first rule whose condition matches supplies the offset,\n * and the last rule is always the unconditional fallback.\n */\nexport interface ESignDateSignedOffsetSettings {\n rules:\n | [ESignDateSignedOffsetFinalRule]\n | [...ESignDateSignedOffsetRule[], ESignDateSignedOffsetFinalRule];\n}\n\n/** Payload of both `--esign-offset-open` (iframe to parent) and `--esign-offset-result` (back). */\nexport interface UnlayerEventESignOffset {\n requestId: string;\n value: ESignDateSignedOffsetSettings;\n}\n\nexport interface UnlayerEditorUnit {\n id: string;\n generic: string;\n title: string;\n values: any;\n}\n\nexport interface UnlayerEditorTwin {\n tool: string;\n title: string;\n values: any;\n}\n\nexport interface UnlayerEventConfig {\n dummyData?: any;\n schema?: SchemaObject;\n generics?: true | string[];\n genericConfigMode?: boolean;\n isSnapshotMode?: boolean;\n units?: UnlayerEditorUnit[];\n holidays?: string[];\n conditionalRulesEnabled?: boolean;\n}\n\nexport interface UnlayerEventRegister {\n units?: UnlayerEditorUnit[];\n eSignRecipients?: UnlayerEditorESignRecipientInfo[];\n eSignFieldTypes?: string[];\n customTools?: {\n key: string;\n title?: string;\n }[];\n toolTwins?: UnlayerEditorTwin[];\n}\n\nexport interface UnlayerToolMetaData {\n key: string;\n description?: string;\n}\n"],"names":["constGenericsEditor","infoDataProperty","adminConfigProperty","userConfigProperty","E_SIGN_TOOL_SLUG","E_SIGN_DATE_SIGNED_OFFSET_TYPE","E_SIGN_DATE_SIGNED_OFFSET_VALUES_KEY","MAX_E_SIGN_OFFSET_DAYS","MAX_E_SIGN_OFFSET_RULES"],"mappings":"AAGA,OAAO,MAAMA,sBAAsB;IAC/BC,kBAAkB;IAClBC,qBAAqB;IACrBC,oBAAoB;AACxB,EAAE;AAQF,OAAO,MAAMC,mBAAmB,SAAS;AACzC,OAAO,MAAMC,iCAAiC,mBAAmB;AACjE,+FAA+F,GAC/F,OAAO,MAAMC,uCAAuC,wBAAwB;AAC5E,OAAO,MAAMC,yBAAyB,IAAI;AAC1C,gDAAgD,GAChD,OAAO,MAAMC,0BAA0B,EAAE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type DataPointOption, type SingleCondition } from '../display-conditions/types';
|
|
2
|
+
import { type ESignDateSignedOffsetRule, type ESignDateSignedOffsetSettings } from './const';
|
|
3
|
+
export declare const clampESignOffsetDays: (days: unknown) => number;
|
|
4
|
+
export declare const createESignOffsetSettings: (days?: number) => ESignDateSignedOffsetSettings;
|
|
5
|
+
export declare const createESignOffsetRule: () => ESignDateSignedOffsetRule;
|
|
6
|
+
export declare const buildESignOffsetSettings: (conditionedRules: ESignDateSignedOffsetRule[], finalDays: number) => ESignDateSignedOffsetSettings;
|
|
7
|
+
export declare const splitESignOffsetSettings: (settings: ESignDateSignedOffsetSettings) => {
|
|
8
|
+
conditionedRules: ESignDateSignedOffsetRule[];
|
|
9
|
+
finalDays: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function isESignOffsetSettings(value: unknown): value is ESignDateSignedOffsetSettings;
|
|
12
|
+
/** Coerces whatever is stored on the tool (missing, legacy or hand-edited) into a valid chain. */
|
|
13
|
+
export declare const normalizeESignOffsetSettings: (value: unknown) => ESignDateSignedOffsetSettings;
|
|
14
|
+
export declare const canAddESignOffsetRule: (rules: ESignDateSignedOffsetRule[]) => boolean;
|
|
15
|
+
export declare const addESignOffsetRule: (rules: ESignDateSignedOffsetRule[]) => ESignDateSignedOffsetRule[];
|
|
16
|
+
export declare const updateESignOffsetRule: (rules: ESignDateSignedOffsetRule[], index: number, nextRule: ESignDateSignedOffsetRule) => ESignDateSignedOffsetRule[];
|
|
17
|
+
export declare const removeESignOffsetRule: (rules: ESignDateSignedOffsetRule[], index: number) => ESignDateSignedOffsetRule[];
|
|
18
|
+
export declare const getESignOffsetRuleCondition: (rule: ESignDateSignedOffsetRule) => SingleCondition;
|
|
19
|
+
export declare const isCompleteESignOffsetCondition: (condition: SingleCondition | undefined, fieldType: DataPointOption["fieldType"]) => boolean;
|
|
20
|
+
export declare const getESignOffsetConditionText: (condition: SingleCondition, dataPointTitle: string) => string;
|
|
21
|
+
//# sourceMappingURL=e-sign-offset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e-sign-offset.d.ts","sourceRoot":"","sources":["../../src/shared/e-sign-offset.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,eAAe,EAEpB,KAAK,eAAe,EAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEH,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAGrC,MAAM,SAAS,CAAC;AAkBjB,eAAO,MAAM,oBAAoB,GAAI,MAAM,OAAO,WAMjD,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,aAAQ,KAAG,6BAEpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,yBAExC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACjC,kBAAkB,yBAAyB,EAAE,EAC7C,WAAW,MAAM,KAClB,6BAOF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,UAAU,6BAA6B;;;CAQ/E,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,6BAA6B,CAoB5F;AAED,kGAAkG;AAClG,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,6BAwB7D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,OAAO,yBAAyB,EAAE,YAEvE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,yBAAyB,EAAE,gCAEpE,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAC9B,OAAO,yBAAyB,EAAE,EAClC,OAAO,MAAM,EACb,UAAU,yBAAyB,gCAGtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,OAAO,yBAAyB,EAAE,EAAE,OAAO,MAAM,gCAEtF,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,MAAM,yBAAyB,oBAE1E,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACvC,WAAW,eAAe,GAAG,SAAS,EACtC,WAAW,eAAe,CAAC,WAAW,CAAC,YAa1C,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,WAAW,eAAe,EAAE,gBAAgB,MAAM,WAY7F,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { defaultGroup } from '../display-conditions/constants';
|
|
2
|
+
import { CONDITION_OPERATORS, VALUE_LESS_OPERATORS } from '../display-conditions/types';
|
|
3
|
+
import { MAX_E_SIGN_OFFSET_DAYS, MAX_E_SIGN_OFFSET_RULES } from './const';
|
|
4
|
+
const NUMERIC_VALUE_RE = /^-?(?:\d+\.?\d*|\.\d+)$/;
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
function isConditionState(value) {
|
|
9
|
+
return isRecord(value) && Array.isArray(value.groups) && value.groups.length > 0;
|
|
10
|
+
}
|
|
11
|
+
function isConditionedRule(rule) {
|
|
12
|
+
return rule.condition !== undefined;
|
|
13
|
+
}
|
|
14
|
+
export const clampESignOffsetDays = (days)=>{
|
|
15
|
+
if (typeof days !== 'number' || !Number.isFinite(days)) {
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
return Math.max(Math.min(MAX_E_SIGN_OFFSET_DAYS, Math.trunc(days)), 0);
|
|
19
|
+
};
|
|
20
|
+
export const createESignOffsetSettings = (days = 0)=>{
|
|
21
|
+
return {
|
|
22
|
+
rules: [
|
|
23
|
+
{
|
|
24
|
+
days: clampESignOffsetDays(days)
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export const createESignOffsetRule = ()=>{
|
|
30
|
+
return {
|
|
31
|
+
condition: {
|
|
32
|
+
behavior: 'show',
|
|
33
|
+
groups: [
|
|
34
|
+
defaultGroup()
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
days: 0
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
export const buildESignOffsetSettings = (conditionedRules, finalDays)=>{
|
|
41
|
+
return {
|
|
42
|
+
rules: [
|
|
43
|
+
...conditionedRules.map((rule)=>({
|
|
44
|
+
...rule,
|
|
45
|
+
days: clampESignOffsetDays(rule.days)
|
|
46
|
+
})),
|
|
47
|
+
{
|
|
48
|
+
days: clampESignOffsetDays(finalDays)
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export const splitESignOffsetSettings = (settings)=>{
|
|
54
|
+
var _ref;
|
|
55
|
+
var _rules_;
|
|
56
|
+
const rules = settings.rules;
|
|
57
|
+
return {
|
|
58
|
+
conditionedRules: rules.filter(isConditionedRule),
|
|
59
|
+
finalDays: (_ref = (_rules_ = rules[rules.length - 1]) === null || _rules_ === void 0 ? void 0 : _rules_.days) !== null && _ref !== void 0 ? _ref : 0
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export function isESignOffsetSettings(value) {
|
|
63
|
+
if (!isRecord(value) || !Array.isArray(value.rules)) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const rules = value.rules;
|
|
67
|
+
if (rules.length === 0 || rules.length > MAX_E_SIGN_OFFSET_RULES) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
return rules.every((rule, index)=>{
|
|
71
|
+
if (!isRecord(rule) || clampESignOffsetDays(rule.days) !== rule.days) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
return index === rules.length - 1 ? rule.condition === undefined : isConditionState(rule.condition);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/** Coerces whatever is stored on the tool (missing, legacy or hand-edited) into a valid chain. */ export const normalizeESignOffsetSettings = (value)=>{
|
|
78
|
+
if (isESignOffsetSettings(value)) {
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
if (!isRecord(value) || !Array.isArray(value.rules)) {
|
|
82
|
+
return createESignOffsetSettings();
|
|
83
|
+
}
|
|
84
|
+
const rules = value.rules;
|
|
85
|
+
const lastRule = rules[rules.length - 1];
|
|
86
|
+
const conditionedRules = rules.slice(0, -1).flatMap((rule)=>isRecord(rule) && isConditionState(rule.condition) ? [
|
|
87
|
+
{
|
|
88
|
+
condition: rule.condition,
|
|
89
|
+
days: clampESignOffsetDays(rule.days)
|
|
90
|
+
}
|
|
91
|
+
] : []).slice(0, MAX_E_SIGN_OFFSET_RULES - 1);
|
|
92
|
+
return buildESignOffsetSettings(conditionedRules, isRecord(lastRule) ? clampESignOffsetDays(lastRule.days) : 0);
|
|
93
|
+
};
|
|
94
|
+
export const canAddESignOffsetRule = (rules)=>{
|
|
95
|
+
return rules.length < MAX_E_SIGN_OFFSET_RULES - 1;
|
|
96
|
+
};
|
|
97
|
+
export const addESignOffsetRule = (rules)=>{
|
|
98
|
+
return canAddESignOffsetRule(rules) ? [
|
|
99
|
+
...rules,
|
|
100
|
+
createESignOffsetRule()
|
|
101
|
+
] : rules;
|
|
102
|
+
};
|
|
103
|
+
export const updateESignOffsetRule = (rules, index, nextRule)=>{
|
|
104
|
+
return rules.map((rule, ruleIndex)=>ruleIndex === index ? nextRule : rule);
|
|
105
|
+
};
|
|
106
|
+
export const removeESignOffsetRule = (rules, index)=>{
|
|
107
|
+
return rules.filter((_, ruleIndex)=>ruleIndex !== index);
|
|
108
|
+
};
|
|
109
|
+
export const getESignOffsetRuleCondition = (rule)=>{
|
|
110
|
+
var _rule_condition_groups_;
|
|
111
|
+
return (_rule_condition_groups_ = rule.condition.groups[0]) === null || _rule_condition_groups_ === void 0 ? void 0 : _rule_condition_groups_.conditions[0];
|
|
112
|
+
};
|
|
113
|
+
export const isCompleteESignOffsetCondition = (condition, fieldType)=>{
|
|
114
|
+
if (!(condition === null || condition === void 0 ? void 0 : condition.dataPointKey)) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (VALUE_LESS_OPERATORS.includes(condition.operator)) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
const value = condition.value.trim();
|
|
121
|
+
return value !== '' && (fieldType !== 'number' || NUMERIC_VALUE_RE.test(value));
|
|
122
|
+
};
|
|
123
|
+
export const getESignOffsetConditionText = (condition, dataPointTitle)=>{
|
|
124
|
+
var _ref;
|
|
125
|
+
var _CONDITION_OPERATORS_find;
|
|
126
|
+
const operatorLabel = ((_ref = (_CONDITION_OPERATORS_find = CONDITION_OPERATORS.find((operator)=>operator.value === condition.operator)) === null || _CONDITION_OPERATORS_find === void 0 ? void 0 : _CONDITION_OPERATORS_find.label) !== null && _ref !== void 0 ? _ref : condition.operator).split(' (')[0].replace('==', '=').toLowerCase();
|
|
127
|
+
return VALUE_LESS_OPERATORS.includes(condition.operator) ? `${dataPointTitle} ${operatorLabel}` : `${dataPointTitle} ${operatorLabel} ${condition.value}`;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=e-sign-offset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/e-sign-offset.ts"],"sourcesContent":["import { defaultGroup } from '../display-conditions/constants';\nimport {\n CONDITION_OPERATORS,\n type DataPointOption,\n type DisplayConditionState,\n type SingleCondition,\n VALUE_LESS_OPERATORS,\n} from '../display-conditions/types';\nimport {\n type ESignDateSignedOffsetFinalRule,\n type ESignDateSignedOffsetRule,\n type ESignDateSignedOffsetSettings,\n MAX_E_SIGN_OFFSET_DAYS,\n MAX_E_SIGN_OFFSET_RULES,\n} from './const';\n\nconst NUMERIC_VALUE_RE = /^-?(?:\\d+\\.?\\d*|\\.\\d+)$/;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isConditionState(value: unknown): value is DisplayConditionState {\n return isRecord(value) && Array.isArray(value.groups) && value.groups.length > 0;\n}\n\nfunction isConditionedRule(\n rule: ESignDateSignedOffsetRule | ESignDateSignedOffsetFinalRule,\n): rule is ESignDateSignedOffsetRule {\n return rule.condition !== undefined;\n}\n\nexport const clampESignOffsetDays = (days: unknown) => {\n if (typeof days !== 'number' || !Number.isFinite(days)) {\n return 0;\n }\n\n return Math.max(Math.min(MAX_E_SIGN_OFFSET_DAYS, Math.trunc(days)), 0);\n};\n\nexport const createESignOffsetSettings = (days = 0): ESignDateSignedOffsetSettings => {\n return { rules: [{ days: clampESignOffsetDays(days) }] };\n};\n\nexport const createESignOffsetRule = (): ESignDateSignedOffsetRule => {\n return { condition: { behavior: 'show', groups: [defaultGroup()] }, days: 0 };\n};\n\nexport const buildESignOffsetSettings = (\n conditionedRules: ESignDateSignedOffsetRule[],\n finalDays: number,\n): ESignDateSignedOffsetSettings => {\n return {\n rules: [\n ...conditionedRules.map(rule => ({ ...rule, days: clampESignOffsetDays(rule.days) })),\n { days: clampESignOffsetDays(finalDays) },\n ],\n };\n};\n\nexport const splitESignOffsetSettings = (settings: ESignDateSignedOffsetSettings) => {\n const rules: readonly (ESignDateSignedOffsetRule | ESignDateSignedOffsetFinalRule)[] =\n settings.rules;\n\n return {\n conditionedRules: rules.filter(isConditionedRule),\n finalDays: rules[rules.length - 1]?.days ?? 0,\n };\n};\n\nexport function isESignOffsetSettings(value: unknown): value is ESignDateSignedOffsetSettings {\n if (!isRecord(value) || !Array.isArray(value.rules)) {\n return false;\n }\n\n const rules: unknown[] = value.rules;\n\n if (rules.length === 0 || rules.length > MAX_E_SIGN_OFFSET_RULES) {\n return false;\n }\n\n return rules.every((rule, index) => {\n if (!isRecord(rule) || clampESignOffsetDays(rule.days) !== rule.days) {\n return false;\n }\n\n return index === rules.length - 1\n ? rule.condition === undefined\n : isConditionState(rule.condition);\n });\n}\n\n/** Coerces whatever is stored on the tool (missing, legacy or hand-edited) into a valid chain. */\nexport const normalizeESignOffsetSettings = (value: unknown): ESignDateSignedOffsetSettings => {\n if (isESignOffsetSettings(value)) {\n return value;\n }\n\n if (!isRecord(value) || !Array.isArray(value.rules)) {\n return createESignOffsetSettings();\n }\n\n const rules: unknown[] = value.rules;\n const lastRule = rules[rules.length - 1];\n const conditionedRules = rules\n .slice(0, -1)\n .flatMap(rule =>\n isRecord(rule) && isConditionState(rule.condition)\n ? [{ condition: rule.condition, days: clampESignOffsetDays(rule.days) }]\n : [],\n )\n .slice(0, MAX_E_SIGN_OFFSET_RULES - 1);\n\n return buildESignOffsetSettings(\n conditionedRules,\n isRecord(lastRule) ? clampESignOffsetDays(lastRule.days) : 0,\n );\n};\n\nexport const canAddESignOffsetRule = (rules: ESignDateSignedOffsetRule[]) => {\n return rules.length < MAX_E_SIGN_OFFSET_RULES - 1;\n};\n\nexport const addESignOffsetRule = (rules: ESignDateSignedOffsetRule[]) => {\n return canAddESignOffsetRule(rules) ? [...rules, createESignOffsetRule()] : rules;\n};\n\nexport const updateESignOffsetRule = (\n rules: ESignDateSignedOffsetRule[],\n index: number,\n nextRule: ESignDateSignedOffsetRule,\n) => {\n return rules.map((rule, ruleIndex) => (ruleIndex === index ? nextRule : rule));\n};\n\nexport const removeESignOffsetRule = (rules: ESignDateSignedOffsetRule[], index: number) => {\n return rules.filter((_, ruleIndex) => ruleIndex !== index);\n};\n\nexport const getESignOffsetRuleCondition = (rule: ESignDateSignedOffsetRule) => {\n return rule.condition.groups[0]?.conditions[0];\n};\n\nexport const isCompleteESignOffsetCondition = (\n condition: SingleCondition | undefined,\n fieldType: DataPointOption['fieldType'],\n) => {\n if (!condition?.dataPointKey) {\n return false;\n }\n\n if (VALUE_LESS_OPERATORS.includes(condition.operator)) {\n return true;\n }\n\n const value = condition.value.trim();\n\n return value !== '' && (fieldType !== 'number' || NUMERIC_VALUE_RE.test(value));\n};\n\nexport const getESignOffsetConditionText = (condition: SingleCondition, dataPointTitle: string) => {\n const operatorLabel = (\n CONDITION_OPERATORS.find(operator => operator.value === condition.operator)?.label ??\n condition.operator\n )\n .split(' (')[0]\n .replace('==', '=')\n .toLowerCase();\n\n return VALUE_LESS_OPERATORS.includes(condition.operator)\n ? `${dataPointTitle} ${operatorLabel}`\n : `${dataPointTitle} ${operatorLabel} ${condition.value}`;\n};\n"],"names":["defaultGroup","CONDITION_OPERATORS","VALUE_LESS_OPERATORS","MAX_E_SIGN_OFFSET_DAYS","MAX_E_SIGN_OFFSET_RULES","NUMERIC_VALUE_RE","isRecord","value","Array","isArray","isConditionState","groups","length","isConditionedRule","rule","condition","undefined","clampESignOffsetDays","days","Number","isFinite","Math","max","min","trunc","createESignOffsetSettings","rules","createESignOffsetRule","behavior","buildESignOffsetSettings","conditionedRules","finalDays","map","splitESignOffsetSettings","settings","filter","isESignOffsetSettings","every","index","normalizeESignOffsetSettings","lastRule","slice","flatMap","canAddESignOffsetRule","addESignOffsetRule","updateESignOffsetRule","nextRule","ruleIndex","removeESignOffsetRule","_","getESignOffsetRuleCondition","conditions","isCompleteESignOffsetCondition","fieldType","dataPointKey","includes","operator","trim","test","getESignOffsetConditionText","dataPointTitle","operatorLabel","find","label","split","replace","toLowerCase"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom tools whose `values.id` is a per-instance GUID that must stay unique
|
|
3
|
+
* within a design. When such a tool is duplicated (content or row duplicate),
|
|
4
|
+
* Unlayer copies the values as-is, so the host regenerates the id of the copy.
|
|
5
|
+
*/
|
|
6
|
+
export declare const INSTANCE_ID_TOOL_SLUGS: string[];
|
|
7
|
+
/**
|
|
8
|
+
* Generates an RFC 4122 v4 GUID (`3fa85f64-5717-4562-b3fc-2c963f66afa6`) with the
|
|
9
|
+
* platform `crypto.randomUUID()`. It is only exposed in secure contexts (https /
|
|
10
|
+
* localhost); when missing the error is logged and no id is produced.
|
|
11
|
+
*/
|
|
12
|
+
export declare const generateInstanceId: () => string | undefined;
|
|
13
|
+
//# sourceMappingURL=instance-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-id.d.ts","sourceRoot":"","sources":["../../src/shared/instance-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAAqB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,SAU9C,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom tools whose `values.id` is a per-instance GUID that must stay unique
|
|
3
|
+
* within a design. When such a tool is duplicated (content or row duplicate),
|
|
4
|
+
* Unlayer copies the values as-is, so the host regenerates the id of the copy.
|
|
5
|
+
*/ export const INSTANCE_ID_TOOL_SLUGS = [
|
|
6
|
+
'embedded-image'
|
|
7
|
+
];
|
|
8
|
+
/**
|
|
9
|
+
* Generates an RFC 4122 v4 GUID (`3fa85f64-5717-4562-b3fc-2c963f66afa6`) with the
|
|
10
|
+
* platform `crypto.randomUUID()`. It is only exposed in secure contexts (https /
|
|
11
|
+
* localhost); when missing the error is logged and no id is produced.
|
|
12
|
+
*/ export const generateInstanceId = ()=>{
|
|
13
|
+
var _globalThis_crypto;
|
|
14
|
+
if (typeof ((_globalThis_crypto = globalThis.crypto) === null || _globalThis_crypto === void 0 ? void 0 : _globalThis_crypto.randomUUID) !== 'function') {
|
|
15
|
+
// eslint-disable-next-line no-console
|
|
16
|
+
console.error('crypto.randomUUID is not available (insecure context?), cannot generate an instance id');
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return globalThis.crypto.randomUUID();
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=instance-id.js.map
|