@servicetitan/dte-unlayer 0.158.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 (147) 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.js +63 -205
  26. package/dist/display-conditions/ConditionRow.js.map +1 -1
  27. package/dist/display-conditions/DisplayConditionModal.js +40 -190
  28. package/dist/display-conditions/DisplayConditionModal.js.map +1 -1
  29. package/dist/display-conditions/LookupValueControl.js +42 -105
  30. package/dist/display-conditions/LookupValueControl.js.map +1 -1
  31. package/dist/display-conditions/SeparatorWithChip.js +1 -10
  32. package/dist/display-conditions/SeparatorWithChip.js.map +1 -1
  33. package/dist/display-conditions/constants.js +15 -20
  34. package/dist/display-conditions/constants.js.map +1 -1
  35. package/dist/display-conditions/displayConditionController.js +5 -8
  36. package/dist/display-conditions/displayConditionController.js.map +1 -1
  37. package/dist/display-conditions/lookupOptionsController.js +16 -16
  38. package/dist/display-conditions/lookupOptionsController.js.map +1 -1
  39. package/dist/display-conditions/nunjucks.js +98 -116
  40. package/dist/display-conditions/nunjucks.js.map +1 -1
  41. package/dist/display-conditions/schemaDataPoints.js +13 -11
  42. package/dist/display-conditions/schemaDataPoints.js.map +1 -1
  43. package/dist/display-conditions/types.js +23 -67
  44. package/dist/display-conditions/types.js.map +1 -1
  45. package/dist/display-conditions/useConditionForms.js +38 -56
  46. package/dist/display-conditions/useConditionForms.js.map +1 -1
  47. package/dist/display-conditions/useLookupOptions.js +24 -44
  48. package/dist/display-conditions/useLookupOptions.js.map +1 -1
  49. package/dist/e-sign-offset/ESignDateSignedOffsetModal.js +37 -150
  50. package/dist/e-sign-offset/ESignDateSignedOffsetModal.js.map +1 -1
  51. package/dist/e-sign-offset/ESignOffsetRuleRow.js +12 -73
  52. package/dist/e-sign-offset/ESignOffsetRuleRow.js.map +1 -1
  53. package/dist/e-sign-offset/eSignOffsetController.js +5 -8
  54. package/dist/e-sign-offset/eSignOffsetController.js.map +1 -1
  55. package/dist/editor-core-source.d.ts +2 -2
  56. package/dist/editor-core-source.d.ts.map +1 -1
  57. package/dist/editor-core-source.js +3 -3
  58. package/dist/editor-core-source.js.map +1 -1
  59. package/dist/editor-core.js +2 -2
  60. package/dist/editor-core.js.map +1 -1
  61. package/dist/editor.d.ts.map +1 -1
  62. package/dist/editor.js +56 -118
  63. package/dist/editor.js.map +1 -1
  64. package/dist/image-upload-error.js +3 -3
  65. package/dist/image-upload-error.js.map +1 -1
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +0 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/loadScript.js +7 -8
  71. package/dist/loadScript.js.map +1 -1
  72. package/dist/log.js +2 -3
  73. package/dist/log.js.map +1 -1
  74. package/dist/merge-tags.js +18 -17
  75. package/dist/merge-tags.js.map +1 -1
  76. package/dist/shared/configs.js +1 -2
  77. package/dist/shared/configs.js.map +1 -1
  78. package/dist/shared/const.d.ts +70 -0
  79. package/dist/shared/const.d.ts.map +1 -1
  80. package/dist/shared/const.js +13 -4
  81. package/dist/shared/const.js.map +1 -1
  82. package/dist/shared/date-calc.js +47 -38
  83. package/dist/shared/date-calc.js.map +1 -1
  84. package/dist/shared/e-sign-offset.js +46 -63
  85. package/dist/shared/e-sign-offset.js.map +1 -1
  86. package/dist/shared/edit-icon.js +0 -1
  87. package/dist/shared/edit-icon.js.map +1 -1
  88. package/dist/shared/fonts.js +16 -17
  89. package/dist/shared/fonts.js.map +1 -1
  90. package/dist/shared/forms.js +16 -38
  91. package/dist/shared/forms.js.map +1 -1
  92. package/dist/shared/instance-id.js +6 -9
  93. package/dist/shared/instance-id.js.map +1 -1
  94. package/dist/shared/nunjucks-helpers.js +2 -5
  95. package/dist/shared/nunjucks-helpers.js.map +1 -1
  96. package/dist/shared/schema.js +52 -96
  97. package/dist/shared/schema.js.map +1 -1
  98. package/dist/shared/tools.js +6 -13
  99. package/dist/shared/tools.js.map +1 -1
  100. package/dist/store.d.ts +15 -1
  101. package/dist/store.d.ts.map +1 -1
  102. package/dist/store.js +851 -548
  103. package/dist/store.js.map +1 -1
  104. package/dist/tools.js +133 -143
  105. package/dist/tools.js.map +1 -1
  106. package/dist/unlayer-interface.d.ts +15 -4
  107. package/dist/unlayer-interface.d.ts.map +1 -1
  108. package/dist/unlayer-interface.js +1 -2
  109. package/dist/unlayer-interface.js.map +1 -1
  110. package/dist/unlayer.js +86 -113
  111. package/dist/unlayer.js.map +1 -1
  112. package/dist/vendor/dte-shared/business-calendar-validation.utils.d.ts +25 -0
  113. package/dist/vendor/dte-shared/business-calendar-validation.utils.js +80 -0
  114. package/dist/vendor/dte-shared/components/business-calendar-section.d.ts +15 -0
  115. package/dist/vendor/dte-shared/components/business-calendar-section.js +14 -0
  116. package/dist/vendor/dte-shared/components/schedule-drawer.d.ts +18 -0
  117. package/dist/vendor/dte-shared/components/schedule-drawer.js +119 -0
  118. package/dist/vendor/dte-shared/components/schedule-picker.d.ts +8 -0
  119. package/dist/vendor/dte-shared/components/schedule-picker.js +88 -0
  120. package/dist/vendor/dte-shared/constants.d.ts +31 -0
  121. package/dist/vendor/dte-shared/constants.js +34 -0
  122. package/dist/vendor/dte-shared/field-schedule-editor-context.d.ts +31 -0
  123. package/dist/vendor/dte-shared/field-schedule-editor-context.js +110 -0
  124. package/dist/vendor/dte-shared/index.d.ts +8 -0
  125. package/dist/vendor/dte-shared/index.js +7 -0
  126. package/dist/vendor/dte-shared/schedule-bindings.utils.d.ts +22 -0
  127. package/dist/vendor/dte-shared/schedule-bindings.utils.js +31 -0
  128. package/dist/vendor/dte-shared/styles/schedule.css +19 -0
  129. package/dist/vendor/dte-shared/types.d.ts +129 -0
  130. package/dist/vendor/dte-shared/types.js +1 -0
  131. package/package.json +7 -1
  132. package/src/__tests__/business-calendar-drawer.test.tsx +183 -0
  133. package/src/__tests__/business-calendar-requests.test.ts +166 -0
  134. package/src/__tests__/business-calendar-state.test.tsx +142 -0
  135. package/src/__tests__/store.business-calendar.test.ts +185 -0
  136. package/src/__tests__/unlayer.e-sign-types.test.ts +30 -0
  137. package/src/business-calendar/BusinessCalendarDrawer.tsx +76 -0
  138. package/src/business-calendar/business-calendar-requests.ts +80 -0
  139. package/src/business-calendar/business-calendar-state.ts +113 -0
  140. package/src/business-calendar/useBusinessCalendarRequests.ts +49 -0
  141. package/src/editor-core-source.ts +2 -2
  142. package/src/editor.tsx +15 -0
  143. package/src/index.ts +10 -0
  144. package/src/shared/const.ts +59 -0
  145. package/src/store.ts +67 -5
  146. package/src/unlayer-interface.tsx +15 -4
  147. package/src/unlayer.tsx +5 -5
@@ -5,193 +5,80 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
5
5
  import { createPortal } from 'react-dom';
6
6
  import { MODAL_CONTENT_MAX_HEIGHT } from '../display-conditions/constants';
7
7
  import { getSchemaDataPointOptions } from '../display-conditions/schemaDataPoints';
8
- import { useConditionForms } from '../display-conditions/useConditionForms';
9
- import { addESignOffsetRule, buildESignOffsetSettings, canAddESignOffsetRule, createESignOffsetRule, getESignOffsetRuleCondition, isCompleteESignOffsetCondition, normalizeESignOffsetSettings, removeESignOffsetRule, splitESignOffsetSettings, updateESignOffsetRule } from '../shared/e-sign-offset';
8
+ import { useConditionForms, } from '../display-conditions/useConditionForms';
9
+ import { addESignOffsetRule, buildESignOffsetSettings, canAddESignOffsetRule, createESignOffsetRule, getESignOffsetRuleCondition, isCompleteESignOffsetCondition, normalizeESignOffsetSettings, removeESignOffsetRule, splitESignOffsetSettings, updateESignOffsetRule, } from '../shared/e-sign-offset';
10
10
  import { onESignOffsetRequest } from './eSignOffsetController';
11
11
  import { ESignOffsetDaysField, ESignOffsetRuleRow } from './ESignOffsetRuleRow';
12
- export function ESignDateSignedOffsetModal({ onConditionFormSelect, onConditionalsOpen, portalContainer, schema }) {
12
+ export function ESignDateSignedOffsetModal({ onConditionFormSelect, onConditionalsOpen, portalContainer, schema, }) {
13
13
  const [request, setRequest] = useState(null);
14
14
  const [rules, setRules] = useState([]);
15
15
  const [finalDays, setFinalDays] = useState(0);
16
16
  const [hasClearedRules, setHasClearedRules] = useState(false);
17
- const { formFieldOptions, forms, isFieldDataLoading, loadForms, requestFormFields } = useConditionForms({
18
- onConditionFormSelect,
19
- onConditionalsOpen
20
- });
21
- const dataPointOptions = useMemo(()=>getSchemaDataPointOptions(schema), [
22
- schema
23
- ]);
24
- const allFieldOptions = useMemo(()=>[
25
- ...dataPointOptions,
26
- ...formFieldOptions
27
- ], [
28
- dataPointOptions,
29
- formFieldOptions
30
- ]);
31
- useEffect(()=>{
32
- return onESignOffsetRequest((nextRequest)=>{
17
+ const { formFieldOptions, forms, isFieldDataLoading, loadForms, requestFormFields } = useConditionForms({ onConditionFormSelect, onConditionalsOpen });
18
+ const dataPointOptions = useMemo(() => getSchemaDataPointOptions(schema), [schema]);
19
+ const allFieldOptions = useMemo(() => [...dataPointOptions, ...formFieldOptions], [dataPointOptions, formFieldOptions]);
20
+ useEffect(() => {
21
+ return onESignOffsetRequest(nextRequest => {
33
22
  const { conditionedRules, finalDays: nextFinalDays } = splitESignOffsetSettings(normalizeESignOffsetSettings(nextRequest.value));
34
- const initialRules = conditionedRules.length ? conditionedRules : [
35
- createESignOffsetRule()
36
- ];
37
- loadForms(initialRules.flatMap((rule)=>rule.condition.groups));
23
+ const initialRules = conditionedRules.length
24
+ ? conditionedRules
25
+ : [createESignOffsetRule()];
26
+ loadForms(initialRules.flatMap(rule => rule.condition.groups));
38
27
  setRules(initialRules);
39
28
  setFinalDays(nextFinalDays);
40
29
  setHasClearedRules(false);
41
30
  setRequest(nextRequest);
42
31
  });
43
- }, [
44
- loadForms
45
- ]);
46
- const isCompleteRule = useCallback((rule)=>{
47
- var _ref;
48
- var _allFieldOptions_find;
32
+ }, [loadForms]);
33
+ const isCompleteRule = useCallback((rule) => {
34
+ var _a, _b;
49
35
  const condition = getESignOffsetRuleCondition(rule);
50
- const fieldType = (_ref = (_allFieldOptions_find = allFieldOptions.find((option)=>option.fullKey === (condition === null || condition === void 0 ? void 0 : condition.dataPointKey))) === null || _allFieldOptions_find === void 0 ? void 0 : _allFieldOptions_find.fieldType) !== null && _ref !== void 0 ? _ref : 'string';
36
+ const fieldType = (_b = (_a = allFieldOptions.find(option => option.fullKey === (condition === null || condition === void 0 ? void 0 : condition.dataPointKey))) === null || _a === void 0 ? void 0 : _a.fieldType) !== null && _b !== void 0 ? _b : 'string';
51
37
  return isCompleteESignOffsetCondition(condition, fieldType);
52
- }, [
53
- allFieldOptions
54
- ]);
38
+ }, [allFieldOptions]);
55
39
  /*
56
40
  * As in BYOD: "Clear Rules" shows once there is something to clear, and leaves one empty rule
57
41
  * that is saved as no rules until it is filled in.
58
- */ const hasConfiguredRules = rules.some(isCompleteRule);
42
+ */
43
+ const hasConfiguredRules = rules.some(isCompleteRule);
59
44
  const shouldSaveNoRules = hasClearedRules && !hasConfiguredRules;
60
45
  const canSave = !isFieldDataLoading && (shouldSaveNoRules || rules.every(isCompleteRule));
61
- const handleClose = useCallback(()=>{
46
+ const handleClose = useCallback(() => {
62
47
  setRequest(null);
63
48
  }, []);
64
- const handleSave = useCallback(()=>{
49
+ const handleSave = useCallback(() => {
65
50
  request === null || request === void 0 ? void 0 : request.done(buildESignOffsetSettings(shouldSaveNoRules ? [] : rules, finalDays));
66
51
  setRequest(null);
67
- }, [
68
- finalDays,
69
- request,
70
- rules,
71
- shouldSaveNoRules
72
- ]);
73
- const handleClearRules = useCallback(()=>{
74
- setRules([
75
- createESignOffsetRule()
76
- ]);
52
+ }, [finalDays, request, rules, shouldSaveNoRules]);
53
+ const handleClearRules = useCallback(() => {
54
+ setRules([createESignOffsetRule()]);
77
55
  setFinalDays(0);
78
56
  setHasClearedRules(true);
79
57
  }, []);
80
- const handleAddRule = useCallback(()=>{
81
- setRules((prev)=>addESignOffsetRule(prev));
58
+ const handleAddRule = useCallback(() => {
59
+ setRules(prev => addESignOffsetRule(prev));
82
60
  }, []);
83
- const handleUpdateRule = useCallback((index, rule)=>{
84
- setRules((prev)=>updateESignOffsetRule(prev, index, rule));
61
+ const handleUpdateRule = useCallback((index, rule) => {
62
+ setRules(prev => updateESignOffsetRule(prev, index, rule));
85
63
  }, []);
86
- const handleRemoveRule = useCallback((index)=>{
87
- setRules((prev)=>removeESignOffsetRule(prev, index));
64
+ const handleRemoveRule = useCallback((index) => {
65
+ setRules(prev => removeESignOffsetRule(prev, index));
88
66
  }, []);
89
67
  if (!request) {
90
68
  return null;
91
69
  }
92
- const dialog = /*#__PURE__*/ _jsxs(Dialog, {
93
- open: true,
94
- onClose: handleClose,
95
- size: "xlarge",
96
- children: [
97
- /*#__PURE__*/ _jsx(Dialog.Header, {
98
- children: "Date Signed Offset Rules"
99
- }),
100
- /*#__PURE__*/ _jsx(Dialog.Content, {
101
- children: /*#__PURE__*/ _jsxs(Flex, {
102
- direction: "column",
103
- gap: "4",
104
- style: {
70
+ const dialog = (_jsxs(Dialog, { open: true, onClose: handleClose, size: "xlarge", children: [_jsx(Dialog.Header, { children: "Date Signed Offset Rules" }), _jsx(Dialog.Content, { children: _jsxs(Flex, { direction: "column", gap: "4", style: {
105
71
  maxHeight: MODAL_CONTENT_MAX_HEIGHT,
106
72
  overflowY: 'auto',
107
73
  paddingRight: 8,
108
- width: '100%'
109
- },
110
- children: [
111
- rules.length === 0 && /*#__PURE__*/ _jsx(Flex, {
112
- justifyContent: "center",
113
- alignItems: "center",
114
- children: /*#__PURE__*/ _jsx(Text, {
115
- variant: "body",
116
- size: "xlarge",
117
- subdued: true,
118
- children: "Rule not configured yet."
119
- })
120
- }),
121
- rules.map((rule, index)=>{
122
- var _ref;
123
- var _rule_condition_groups_;
124
- return /*#__PURE__*/ _jsx(ESignOffsetRuleRow, {
125
- dataPointOptions: dataPointOptions,
126
- formFieldOptions: formFieldOptions,
127
- forms: forms,
128
- onChange: (nextRule)=>handleUpdateRule(index, nextRule),
129
- onFormSelect: requestFormFields,
130
- onRemove: ()=>handleRemoveRule(index),
131
- rule: rule
132
- }, (_ref = (_rule_condition_groups_ = rule.condition.groups[0]) === null || _rule_condition_groups_ === void 0 ? void 0 : _rule_condition_groups_.id) !== null && _ref !== void 0 ? _ref : index);
133
- }),
134
- /*#__PURE__*/ _jsx(Flex, {
135
- children: /*#__PURE__*/ _jsx(Button, {
136
- size: "small",
137
- appearance: "ghost",
138
- icon: {
139
- before: PlusCircleIcon
140
- },
141
- onClick: handleAddRule,
142
- disabled: !canAddESignOffsetRule(rules),
143
- children: rules.length === 0 ? 'Add Condition' : 'Add Else Condition'
144
- })
145
- }),
146
- /*#__PURE__*/ _jsx(Card, {
147
- background: "strong",
148
- padding: "small",
149
- children: /*#__PURE__*/ _jsx(ESignOffsetDaysField, {
150
- chipLabel: rules.length === 0 ? 'THEN' : 'ELSE',
151
- days: finalDays,
152
- onChange: setFinalDays
153
- })
154
- })
155
- ]
156
- })
157
- }),
158
- /*#__PURE__*/ _jsx(Dialog.Footer, {
159
- sticky: true,
160
- children: /*#__PURE__*/ _jsxs(Flex, {
161
- justifyContent: "flex-end",
162
- alignItems: "center",
163
- gap: "3",
164
- style: {
165
- width: '100%'
166
- },
167
- children: [
168
- (hasConfiguredRules || rules.length > 1) && /*#__PURE__*/ _jsx(Button, {
169
- appearance: "ghost",
170
- onClick: handleClearRules,
171
- children: "Clear Rules"
172
- }),
173
- /*#__PURE__*/ _jsx(Button, {
174
- appearance: "secondary",
175
- onClick: handleClose,
176
- children: "Cancel"
177
- }),
178
- /*#__PURE__*/ _jsx(Button, {
179
- appearance: "primary",
180
- disabled: !canSave,
181
- onClick: handleSave,
182
- children: "Save Changes"
183
- })
184
- ]
185
- })
186
- })
187
- ]
188
- });
74
+ width: '100%',
75
+ }, children: [rules.length === 0 && (_jsx(Flex, { justifyContent: "center", alignItems: "center", children: _jsx(Text, { variant: "body", size: "xlarge", subdued: true, children: "Rule not configured yet." }) })), rules.map((rule, index) => {
76
+ var _a, _b;
77
+ return (_jsx(ESignOffsetRuleRow, { dataPointOptions: dataPointOptions, formFieldOptions: formFieldOptions, forms: forms, onChange: nextRule => handleUpdateRule(index, nextRule), onFormSelect: requestFormFields, onRemove: () => handleRemoveRule(index), rule: rule }, (_b = (_a = rule.condition.groups[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : index));
78
+ }), _jsx(Flex, { children: _jsx(Button, { size: "small", appearance: "ghost", icon: { before: PlusCircleIcon }, onClick: handleAddRule, disabled: !canAddESignOffsetRule(rules), children: rules.length === 0 ? 'Add Condition' : 'Add Else Condition' }) }), _jsx(Card, { background: "strong", padding: "small", children: _jsx(ESignOffsetDaysField, { chipLabel: rules.length === 0 ? 'THEN' : 'ELSE', days: finalDays, onChange: setFinalDays }) })] }) }), _jsx(Dialog.Footer, { sticky: true, children: _jsxs(Flex, { justifyContent: "flex-end", alignItems: "center", gap: "3", style: { width: '100%' }, children: [(hasConfiguredRules || rules.length > 1) && (_jsx(Button, { appearance: "ghost", onClick: handleClearRules, children: "Clear Rules" })), _jsx(Button, { appearance: "secondary", onClick: handleClose, children: "Cancel" }), _jsx(Button, { appearance: "primary", disabled: !canSave, onClick: handleSave, children: "Save Changes" })] }) })] }));
189
79
  if (portalContainer) {
190
- return /*#__PURE__*/ createPortal(/*#__PURE__*/ _jsx(ThemeProvider, {
191
- children: dialog
192
- }), portalContainer);
80
+ return createPortal(_jsx(ThemeProvider, { children: dialog }), portalContainer);
193
81
  }
194
82
  return dialog;
195
83
  }
196
-
197
84
  //# sourceMappingURL=ESignDateSignedOffsetModal.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/e-sign-offset/ESignDateSignedOffsetModal.tsx"],"sourcesContent":["import { Button, Card, Dialog, Flex, Text, ThemeProvider } from '@servicetitan/anvil2';\nimport PlusCircleIcon from '@servicetitan/anvil2/assets/icons/material/round/add_circle.svg';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { MODAL_CONTENT_MAX_HEIGHT } from '../display-conditions/constants';\nimport { getSchemaDataPointOptions } from '../display-conditions/schemaDataPoints';\nimport {\n ConditionalsOpenHandler,\n ConditionFormSelectHandler,\n useConditionForms,\n} from '../display-conditions/useConditionForms';\nimport type { ESignDateSignedOffsetRule } from '../shared/const';\nimport {\n addESignOffsetRule,\n buildESignOffsetSettings,\n canAddESignOffsetRule,\n createESignOffsetRule,\n getESignOffsetRuleCondition,\n isCompleteESignOffsetCondition,\n normalizeESignOffsetSettings,\n removeESignOffsetRule,\n splitESignOffsetSettings,\n updateESignOffsetRule,\n} from '../shared/e-sign-offset';\nimport type { SchemaObject } from '../shared/schema';\nimport { ESignOffsetRequest, onESignOffsetRequest } from './eSignOffsetController';\nimport { ESignOffsetDaysField, ESignOffsetRuleRow } from './ESignOffsetRuleRow';\n\nexport interface ESignDateSignedOffsetModalProps {\n /** Same contract as `DisplayConditionModalProps.portalContainer`. */\n portalContainer?: Element | DocumentFragment | null;\n onConditionFormSelect?: ConditionFormSelectHandler;\n onConditionalsOpen?: ConditionalsOpenHandler;\n schema?: SchemaObject;\n}\n\nexport function ESignDateSignedOffsetModal({\n onConditionFormSelect,\n onConditionalsOpen,\n portalContainer,\n schema,\n}: Readonly<ESignDateSignedOffsetModalProps>) {\n const [request, setRequest] = useState<ESignOffsetRequest | null>(null);\n const [rules, setRules] = useState<ESignDateSignedOffsetRule[]>([]);\n const [finalDays, setFinalDays] = useState(0);\n const [hasClearedRules, setHasClearedRules] = useState(false);\n const { formFieldOptions, forms, isFieldDataLoading, loadForms, requestFormFields } =\n useConditionForms({ onConditionFormSelect, onConditionalsOpen });\n\n const dataPointOptions = useMemo(() => getSchemaDataPointOptions(schema), [schema]);\n const allFieldOptions = useMemo(\n () => [...dataPointOptions, ...formFieldOptions],\n [dataPointOptions, formFieldOptions],\n );\n\n useEffect(() => {\n return onESignOffsetRequest(nextRequest => {\n const { conditionedRules, finalDays: nextFinalDays } = splitESignOffsetSettings(\n normalizeESignOffsetSettings(nextRequest.value),\n );\n const initialRules = conditionedRules.length\n ? conditionedRules\n : [createESignOffsetRule()];\n\n loadForms(initialRules.flatMap(rule => rule.condition.groups));\n setRules(initialRules);\n setFinalDays(nextFinalDays);\n setHasClearedRules(false);\n setRequest(nextRequest);\n });\n }, [loadForms]);\n\n const isCompleteRule = useCallback(\n (rule: ESignDateSignedOffsetRule) => {\n const condition = getESignOffsetRuleCondition(rule);\n const fieldType =\n allFieldOptions.find(option => option.fullKey === condition?.dataPointKey)\n ?.fieldType ?? 'string';\n\n return isCompleteESignOffsetCondition(condition, fieldType);\n },\n [allFieldOptions],\n );\n\n /*\n * As in BYOD: \"Clear Rules\" shows once there is something to clear, and leaves one empty rule\n * that is saved as no rules until it is filled in.\n */\n const hasConfiguredRules = rules.some(isCompleteRule);\n const shouldSaveNoRules = hasClearedRules && !hasConfiguredRules;\n const canSave = !isFieldDataLoading && (shouldSaveNoRules || rules.every(isCompleteRule));\n\n const handleClose = useCallback(() => {\n setRequest(null);\n }, []);\n\n const handleSave = useCallback(() => {\n request?.done(buildESignOffsetSettings(shouldSaveNoRules ? [] : rules, finalDays));\n setRequest(null);\n }, [finalDays, request, rules, shouldSaveNoRules]);\n\n const handleClearRules = useCallback(() => {\n setRules([createESignOffsetRule()]);\n setFinalDays(0);\n setHasClearedRules(true);\n }, []);\n\n const handleAddRule = useCallback(() => {\n setRules(prev => addESignOffsetRule(prev));\n }, []);\n\n const handleUpdateRule = useCallback((index: number, rule: ESignDateSignedOffsetRule) => {\n setRules(prev => updateESignOffsetRule(prev, index, rule));\n }, []);\n\n const handleRemoveRule = useCallback((index: number) => {\n setRules(prev => removeESignOffsetRule(prev, index));\n }, []);\n\n if (!request) {\n return null;\n }\n\n const dialog = (\n <Dialog open onClose={handleClose} size=\"xlarge\">\n <Dialog.Header>Date Signed Offset Rules</Dialog.Header>\n <Dialog.Content>\n <Flex\n direction=\"column\"\n gap=\"4\"\n style={{\n maxHeight: MODAL_CONTENT_MAX_HEIGHT,\n overflowY: 'auto',\n paddingRight: 8,\n width: '100%',\n }}\n >\n {rules.length === 0 && (\n <Flex justifyContent=\"center\" alignItems=\"center\">\n <Text variant=\"body\" size=\"xlarge\" subdued>\n Rule not configured yet.\n </Text>\n </Flex>\n )}\n {rules.map((rule, index) => (\n <ESignOffsetRuleRow\n key={rule.condition.groups[0]?.id ?? index}\n dataPointOptions={dataPointOptions}\n formFieldOptions={formFieldOptions}\n forms={forms}\n onChange={nextRule => handleUpdateRule(index, nextRule)}\n onFormSelect={requestFormFields}\n onRemove={() => handleRemoveRule(index)}\n rule={rule}\n />\n ))}\n <Flex>\n <Button\n size=\"small\"\n appearance=\"ghost\"\n icon={{ before: PlusCircleIcon }}\n onClick={handleAddRule}\n disabled={!canAddESignOffsetRule(rules)}\n >\n {rules.length === 0 ? 'Add Condition' : 'Add Else Condition'}\n </Button>\n </Flex>\n <Card background=\"strong\" padding=\"small\">\n <ESignOffsetDaysField\n chipLabel={rules.length === 0 ? 'THEN' : 'ELSE'}\n days={finalDays}\n onChange={setFinalDays}\n />\n </Card>\n </Flex>\n </Dialog.Content>\n <Dialog.Footer sticky>\n <Flex\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n gap=\"3\"\n style={{ width: '100%' }}\n >\n {(hasConfiguredRules || rules.length > 1) && (\n <Button appearance=\"ghost\" onClick={handleClearRules}>\n Clear Rules\n </Button>\n )}\n <Button appearance=\"secondary\" onClick={handleClose}>\n Cancel\n </Button>\n <Button appearance=\"primary\" disabled={!canSave} onClick={handleSave}>\n Save Changes\n </Button>\n </Flex>\n </Dialog.Footer>\n </Dialog>\n );\n\n if (portalContainer) {\n return createPortal(<ThemeProvider>{dialog}</ThemeProvider>, portalContainer);\n }\n\n return dialog;\n}\n"],"names":["Button","Card","Dialog","Flex","Text","ThemeProvider","PlusCircleIcon","useCallback","useEffect","useMemo","useState","createPortal","MODAL_CONTENT_MAX_HEIGHT","getSchemaDataPointOptions","useConditionForms","addESignOffsetRule","buildESignOffsetSettings","canAddESignOffsetRule","createESignOffsetRule","getESignOffsetRuleCondition","isCompleteESignOffsetCondition","normalizeESignOffsetSettings","removeESignOffsetRule","splitESignOffsetSettings","updateESignOffsetRule","onESignOffsetRequest","ESignOffsetDaysField","ESignOffsetRuleRow","ESignDateSignedOffsetModal","onConditionFormSelect","onConditionalsOpen","portalContainer","schema","request","setRequest","rules","setRules","finalDays","setFinalDays","hasClearedRules","setHasClearedRules","formFieldOptions","forms","isFieldDataLoading","loadForms","requestFormFields","dataPointOptions","allFieldOptions","nextRequest","conditionedRules","nextFinalDays","value","initialRules","length","flatMap","rule","condition","groups","isCompleteRule","fieldType","find","option","fullKey","dataPointKey","hasConfiguredRules","some","shouldSaveNoRules","canSave","every","handleClose","handleSave","done","handleClearRules","handleAddRule","prev","handleUpdateRule","index","handleRemoveRule","dialog","open","onClose","size","Header","Content","direction","gap","style","maxHeight","overflowY","paddingRight","width","justifyContent","alignItems","variant","subdued","map","onChange","nextRule","onFormSelect","onRemove","id","appearance","icon","before","onClick","disabled","background","padding","chipLabel","days","Footer","sticky"],"mappings":"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"}
1
+ {"version":3,"file":"ESignDateSignedOffsetModal.js","sourceRoot":"","sources":["../../src/e-sign-offset/ESignDateSignedOffsetModal.tsx"],"names":[],"mappings":"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"}
@@ -4,86 +4,25 @@ import { ConditionRow } from '../display-conditions/ConditionRow';
4
4
  import { defaultCondition, defaultGroup } from '../display-conditions/constants';
5
5
  import { MAX_E_SIGN_OFFSET_DAYS } from '../shared/const';
6
6
  import { clampESignOffsetDays } from '../shared/e-sign-offset';
7
- export function ESignOffsetDaysField({ chipLabel, days, onChange, size = 'small' }) {
8
- return /*#__PURE__*/ _jsxs(Flex, {
9
- children: [
10
- /*#__PURE__*/ _jsx(Flex, {
11
- alignItems: "center",
12
- style: {
13
- padding: '8px 12px'
14
- },
15
- children: /*#__PURE__*/ _jsx(Chip, {
16
- label: chipLabel,
17
- size: "medium"
18
- })
19
- }),
20
- /*#__PURE__*/ _jsx(NumberField, {
21
- label: "Number of days",
22
- size: size,
23
- value: days,
24
- minValue: 0,
25
- maxValue: MAX_E_SIGN_OFFSET_DAYS,
26
- maximumFractionDigits: 0,
27
- suffix: "days",
28
- hint: `days range up to ${MAX_E_SIGN_OFFSET_DAYS}`,
29
- onChange: (value)=>onChange(clampESignOffsetDays(value))
30
- })
31
- ]
32
- });
7
+ export function ESignOffsetDaysField({ chipLabel, days, onChange, size = 'small', }) {
8
+ return (_jsxs(Flex, { children: [_jsx(Flex, { alignItems: "center", style: { padding: '8px 12px' }, children: _jsx(Chip, { label: chipLabel, size: "medium" }) }), _jsx(NumberField, { label: "Number of days", size: size, value: days, minValue: 0, maxValue: MAX_E_SIGN_OFFSET_DAYS, maximumFractionDigits: 0, suffix: "days", hint: `days range up to ${MAX_E_SIGN_OFFSET_DAYS}`, onChange: value => onChange(clampESignOffsetDays(value)) })] }));
33
9
  }
34
- export function ESignOffsetRuleRow({ dataPointOptions, formFieldOptions, forms, onChange, onFormSelect, onRemove, rule }) {
35
- var _rule_condition_groups_, _group_conditions_;
36
- const group = (_rule_condition_groups_ = rule.condition.groups[0]) !== null && _rule_condition_groups_ !== void 0 ? _rule_condition_groups_ : defaultGroup();
37
- const condition = (_group_conditions_ = group.conditions[0]) !== null && _group_conditions_ !== void 0 ? _group_conditions_ : defaultCondition();
38
- const handleConditionChange = (nextCondition)=>{
10
+ export function ESignOffsetRuleRow({ dataPointOptions, formFieldOptions, forms, onChange, onFormSelect, onRemove, rule, }) {
11
+ var _a, _b;
12
+ const group = (_a = rule.condition.groups[0]) !== null && _a !== void 0 ? _a : defaultGroup();
13
+ const condition = (_b = group.conditions[0]) !== null && _b !== void 0 ? _b : defaultCondition();
14
+ const handleConditionChange = (nextCondition) => {
39
15
  onChange({
40
16
  ...rule,
41
17
  condition: {
42
18
  behavior: 'show',
43
- groups: [
44
- {
45
- conditions: [
46
- nextCondition
47
- ],
48
- id: group.id
49
- }
50
- ]
51
- }
19
+ groups: [{ conditions: [nextCondition], id: group.id }],
20
+ },
52
21
  });
53
22
  };
54
- const handleDaysChange = (days)=>{
55
- onChange({
56
- ...rule,
57
- days
58
- });
23
+ const handleDaysChange = (days) => {
24
+ onChange({ ...rule, days });
59
25
  };
60
- return /*#__PURE__*/ _jsx(Card, {
61
- background: "strong",
62
- padding: "small",
63
- children: /*#__PURE__*/ _jsxs(Flex, {
64
- direction: "column",
65
- gap: "3",
66
- flex: 1,
67
- children: [
68
- /*#__PURE__*/ _jsx(ConditionRow, {
69
- canRemove: true,
70
- condition: condition,
71
- dataPointOptions: dataPointOptions,
72
- formFieldOptions: formFieldOptions,
73
- forms: forms,
74
- onChange: handleConditionChange,
75
- onFormSelect: onFormSelect,
76
- onRemove: onRemove
77
- }),
78
- /*#__PURE__*/ _jsx(ESignOffsetDaysField, {
79
- chipLabel: "THEN",
80
- days: rule.days,
81
- onChange: handleDaysChange,
82
- size: "medium"
83
- })
84
- ]
85
- })
86
- });
26
+ return (_jsx(Card, { background: "strong", padding: "small", children: _jsxs(Flex, { direction: "column", gap: "3", flex: 1, children: [_jsx(ConditionRow, { canRemove: true, condition: condition, dataPointOptions: dataPointOptions, formFieldOptions: formFieldOptions, forms: forms, onChange: handleConditionChange, onFormSelect: onFormSelect, onRemove: onRemove }), _jsx(ESignOffsetDaysField, { chipLabel: "THEN", days: rule.days, onChange: handleDaysChange, size: "medium" })] }) }));
87
27
  }
88
-
89
28
  //# sourceMappingURL=ESignOffsetRuleRow.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/e-sign-offset/ESignOffsetRuleRow.tsx"],"sourcesContent":["import { Card, Chip, Flex, NumberField } from '@servicetitan/anvil2';\nimport { ConditionRow } from '../display-conditions/ConditionRow';\nimport { defaultCondition, defaultGroup } from '../display-conditions/constants';\nimport type {\n DataPointOption,\n FormFieldOption,\n SingleCondition,\n} from '../display-conditions/types';\nimport { type ESignDateSignedOffsetRule, MAX_E_SIGN_OFFSET_DAYS } from '../shared/const';\nimport { clampESignOffsetDays } from '../shared/e-sign-offset';\nimport { FormInfo } from '../shared/forms';\n\nexport interface ESignOffsetDaysFieldProps {\n chipLabel: string;\n days: number;\n onChange: (days: number) => void;\n /** As in BYOD: small in the final card, the condition row's size inside a rule card. */\n size?: 'small' | 'medium';\n}\n\nexport function ESignOffsetDaysField({\n chipLabel,\n days,\n onChange,\n size = 'small',\n}: Readonly<ESignOffsetDaysFieldProps>) {\n return (\n <Flex>\n <Flex alignItems=\"center\" style={{ padding: '8px 12px' }}>\n <Chip label={chipLabel} size=\"medium\" />\n </Flex>\n <NumberField\n label=\"Number of days\"\n size={size}\n value={days}\n minValue={0}\n maxValue={MAX_E_SIGN_OFFSET_DAYS}\n maximumFractionDigits={0}\n suffix=\"days\"\n hint={`days range up to ${MAX_E_SIGN_OFFSET_DAYS}`}\n onChange={value => onChange(clampESignOffsetDays(value))}\n />\n </Flex>\n );\n}\n\nexport interface ESignOffsetRuleRowProps {\n dataPointOptions: DataPointOption[];\n formFieldOptions: FormFieldOption[];\n forms: FormInfo[];\n onChange: (rule: ESignDateSignedOffsetRule) => void;\n onFormSelect: (formId: number) => void;\n onRemove: () => void;\n rule: ESignDateSignedOffsetRule;\n}\n\nexport function ESignOffsetRuleRow({\n dataPointOptions,\n formFieldOptions,\n forms,\n onChange,\n onFormSelect,\n onRemove,\n rule,\n}: Readonly<ESignOffsetRuleRowProps>) {\n const group = rule.condition.groups[0] ?? defaultGroup();\n const condition = group.conditions[0] ?? defaultCondition();\n\n const handleConditionChange = (nextCondition: SingleCondition) => {\n onChange({\n ...rule,\n condition: {\n behavior: 'show',\n groups: [{ conditions: [nextCondition], id: group.id }],\n },\n });\n };\n\n const handleDaysChange = (days: number) => {\n onChange({ ...rule, days });\n };\n\n return (\n <Card background=\"strong\" padding=\"small\">\n {/* A `Card` lays its children out in a row: take its full width, as BYOD's rule card does. */}\n <Flex direction=\"column\" gap=\"3\" flex={1}>\n <ConditionRow\n canRemove\n condition={condition}\n dataPointOptions={dataPointOptions}\n formFieldOptions={formFieldOptions}\n forms={forms}\n onChange={handleConditionChange}\n onFormSelect={onFormSelect}\n onRemove={onRemove}\n />\n <ESignOffsetDaysField\n chipLabel=\"THEN\"\n days={rule.days}\n onChange={handleDaysChange}\n size=\"medium\"\n />\n </Flex>\n </Card>\n );\n}\n"],"names":["Card","Chip","Flex","NumberField","ConditionRow","defaultCondition","defaultGroup","MAX_E_SIGN_OFFSET_DAYS","clampESignOffsetDays","ESignOffsetDaysField","chipLabel","days","onChange","size","alignItems","style","padding","label","value","minValue","maxValue","maximumFractionDigits","suffix","hint","ESignOffsetRuleRow","dataPointOptions","formFieldOptions","forms","onFormSelect","onRemove","rule","group","condition","groups","conditions","handleConditionChange","nextCondition","behavior","id","handleDaysChange","background","direction","gap","flex","canRemove"],"mappings":";AAAA,SAASA,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,WAAW,QAAQ,uBAAuB;AACrE,SAASC,YAAY,QAAQ,qCAAqC;AAClE,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,kCAAkC;AAMjF,SAAyCC,sBAAsB,QAAQ,kBAAkB;AACzF,SAASC,oBAAoB,QAAQ,0BAA0B;AAW/D,OAAO,SAASC,qBAAqB,EACjCC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,OAAO,OAAO,EACoB;IAClC,qBACI,MAACX;;0BACG,KAACA;gBAAKY,YAAW;gBAASC,OAAO;oBAAEC,SAAS;gBAAW;0BACnD,cAAA,KAACf;oBAAKgB,OAAOP;oBAAWG,MAAK;;;0BAEjC,KAACV;gBACGc,OAAM;gBACNJ,MAAMA;gBACNK,OAAOP;gBACPQ,UAAU;gBACVC,UAAUb;gBACVc,uBAAuB;gBACvBC,QAAO;gBACPC,MAAM,CAAC,iBAAiB,EAAEhB,wBAAwB;gBAClDK,UAAUM,CAAAA,QAASN,SAASJ,qBAAqBU;;;;AAIjE;AAYA,OAAO,SAASM,mBAAmB,EAC/BC,gBAAgB,EAChBC,gBAAgB,EAChBC,KAAK,EACLf,QAAQ,EACRgB,YAAY,EACZC,QAAQ,EACRC,IAAI,EAC4B;QAClBA,yBACIC;IADlB,MAAMA,SAAQD,0BAAAA,KAAKE,SAAS,CAACC,MAAM,CAAC,EAAE,cAAxBH,qCAAAA,0BAA4BxB;IAC1C,MAAM0B,aAAYD,qBAAAA,MAAMG,UAAU,CAAC,EAAE,cAAnBH,gCAAAA,qBAAuB1B;IAEzC,MAAM8B,wBAAwB,CAACC;QAC3BxB,SAAS;YACL,GAAGkB,IAAI;YACPE,WAAW;gBACPK,UAAU;gBACVJ,QAAQ;oBAAC;wBAAEC,YAAY;4BAACE;yBAAc;wBAAEE,IAAIP,MAAMO,EAAE;oBAAC;iBAAE;YAC3D;QACJ;IACJ;IAEA,MAAMC,mBAAmB,CAAC5B;QACtBC,SAAS;YAAE,GAAGkB,IAAI;YAAEnB;QAAK;IAC7B;IAEA,qBACI,KAACX;QAAKwC,YAAW;QAASxB,SAAQ;kBAE9B,cAAA,MAACd;YAAKuC,WAAU;YAASC,KAAI;YAAIC,MAAM;;8BACnC,KAACvC;oBACGwC,SAAS;oBACTZ,WAAWA;oBACXP,kBAAkBA;oBAClBC,kBAAkBA;oBAClBC,OAAOA;oBACPf,UAAUuB;oBACVP,cAAcA;oBACdC,UAAUA;;8BAEd,KAACpB;oBACGC,WAAU;oBACVC,MAAMmB,KAAKnB,IAAI;oBACfC,UAAU2B;oBACV1B,MAAK;;;;;AAKzB"}
1
+ {"version":3,"file":"ESignOffsetRuleRow.js","sourceRoot":"","sources":["../../src/e-sign-offset/ESignOffsetRuleRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAMjF,OAAO,EAAkC,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAW/D,MAAM,UAAU,oBAAoB,CAAC,EACjC,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,IAAI,GAAG,OAAO,GACoB;IAClC,OAAO,CACH,MAAC,IAAI,eACD,KAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,YACpD,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAC,QAAQ,GAAG,GACrC,EACP,KAAC,WAAW,IACR,KAAK,EAAC,gBAAgB,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,sBAAsB,EAChC,qBAAqB,EAAE,CAAC,EACxB,MAAM,EAAC,MAAM,EACb,IAAI,EAAE,oBAAoB,sBAAsB,EAAE,EAClD,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,GAC1D,IACC,CACV,CAAC;AACN,CAAC;AAYD,MAAM,UAAU,kBAAkB,CAAC,EAC/B,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,IAAI,GAC4B;;IAChC,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,mCAAI,YAAY,EAAE,CAAC;IACzD,MAAM,SAAS,GAAG,MAAA,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,mCAAI,gBAAgB,EAAE,CAAC;IAE5D,MAAM,qBAAqB,GAAG,CAAC,aAA8B,EAAE,EAAE;QAC7D,QAAQ,CAAC;YACL,GAAG,IAAI;YACP,SAAS,EAAE;gBACP,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;aAC1D;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE;QACtC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,YAErC,MAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAE,CAAC,aACpC,KAAC,YAAY,IACT,SAAS,QACT,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,qBAAqB,EAC/B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,GACpB,EACF,KAAC,oBAAoB,IACjB,SAAS,EAAC,MAAM,EAChB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAC,QAAQ,GACf,IACC,GACJ,CACV,CAAC;AACN,CAAC"}
@@ -1,27 +1,24 @@
1
1
  const E_SIGN_OFFSET_EVENT = 'dte:e-sign-offset';
2
2
  const eSignOffsetEvents = new EventTarget();
3
3
  let activeListeners = 0;
4
- export const onESignOffsetRequest = (listener)=>{
5
- const handler = (event)=>{
4
+ export const onESignOffsetRequest = (listener) => {
5
+ const handler = (event) => {
6
6
  if (event instanceof CustomEvent && event.detail) {
7
7
  listener(event.detail);
8
8
  }
9
9
  };
10
10
  activeListeners += 1;
11
11
  eSignOffsetEvents.addEventListener(E_SIGN_OFFSET_EVENT, handler);
12
- return ()=>{
12
+ return () => {
13
13
  activeListeners = Math.max(0, activeListeners - 1);
14
14
  eSignOffsetEvents.removeEventListener(E_SIGN_OFFSET_EVENT, handler);
15
15
  };
16
16
  };
17
- export const emitESignOffsetRequest = (request)=>{
17
+ export const emitESignOffsetRequest = (request) => {
18
18
  if (activeListeners === 0) {
19
19
  request.done(request.value);
20
20
  return;
21
21
  }
22
- eSignOffsetEvents.dispatchEvent(new CustomEvent(E_SIGN_OFFSET_EVENT, {
23
- detail: request
24
- }));
22
+ eSignOffsetEvents.dispatchEvent(new CustomEvent(E_SIGN_OFFSET_EVENT, { detail: request }));
25
23
  };
26
-
27
24
  //# sourceMappingURL=eSignOffsetController.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/e-sign-offset/eSignOffsetController.ts"],"sourcesContent":["import type { ESignDateSignedOffsetSettings } from '../shared/const';\n\nexport interface ESignOffsetRequest {\n value: ESignDateSignedOffsetSettings;\n done: (value: ESignDateSignedOffsetSettings) => void;\n}\n\ntype Listener = (request: ESignOffsetRequest) => void;\n\nconst E_SIGN_OFFSET_EVENT = 'dte:e-sign-offset';\nconst eSignOffsetEvents = new EventTarget();\nlet activeListeners = 0;\n\nexport const onESignOffsetRequest = (listener: Listener) => {\n const handler = (event: Event) => {\n if (event instanceof CustomEvent && event.detail) {\n listener(event.detail);\n }\n };\n\n activeListeners += 1;\n eSignOffsetEvents.addEventListener(E_SIGN_OFFSET_EVENT, handler);\n\n return () => {\n activeListeners = Math.max(0, activeListeners - 1);\n eSignOffsetEvents.removeEventListener(E_SIGN_OFFSET_EVENT, handler);\n };\n};\n\nexport const emitESignOffsetRequest = (request: ESignOffsetRequest) => {\n if (activeListeners === 0) {\n request.done(request.value);\n return;\n }\n\n eSignOffsetEvents.dispatchEvent(\n new CustomEvent<ESignOffsetRequest>(E_SIGN_OFFSET_EVENT, { detail: request }),\n );\n};\n"],"names":["E_SIGN_OFFSET_EVENT","eSignOffsetEvents","EventTarget","activeListeners","onESignOffsetRequest","listener","handler","event","CustomEvent","detail","addEventListener","Math","max","removeEventListener","emitESignOffsetRequest","request","done","value","dispatchEvent"],"mappings":"AASA,MAAMA,sBAAsB;AAC5B,MAAMC,oBAAoB,IAAIC;AAC9B,IAAIC,kBAAkB;AAEtB,OAAO,MAAMC,uBAAuB,CAACC;IACjC,MAAMC,UAAU,CAACC;QACb,IAAIA,iBAAiBC,eAAeD,MAAME,MAAM,EAAE;YAC9CJ,SAASE,MAAME,MAAM;QACzB;IACJ;IAEAN,mBAAmB;IACnBF,kBAAkBS,gBAAgB,CAACV,qBAAqBM;IAExD,OAAO;QACHH,kBAAkBQ,KAAKC,GAAG,CAAC,GAAGT,kBAAkB;QAChDF,kBAAkBY,mBAAmB,CAACb,qBAAqBM;IAC/D;AACJ,EAAE;AAEF,OAAO,MAAMQ,yBAAyB,CAACC;IACnC,IAAIZ,oBAAoB,GAAG;QACvBY,QAAQC,IAAI,CAACD,QAAQE,KAAK;QAC1B;IACJ;IAEAhB,kBAAkBiB,aAAa,CAC3B,IAAIV,YAAgCR,qBAAqB;QAAES,QAAQM;IAAQ;AAEnF,EAAE"}
1
+ {"version":3,"file":"eSignOffsetController.js","sourceRoot":"","sources":["../../src/e-sign-offset/eSignOffsetController.ts"],"names":[],"mappings":"AASA,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,MAAM,iBAAiB,GAAG,IAAI,WAAW,EAAE,CAAC;AAC5C,IAAI,eAAe,GAAG,CAAC,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAkB,EAAE,EAAE;IACvD,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;QAC7B,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/C,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC,CAAC;IAEF,eAAe,IAAI,CAAC,CAAC;IACrB,iBAAiB,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAEjE,OAAO,GAAG,EAAE;QACR,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC;QACnD,iBAAiB,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAA2B,EAAE,EAAE;IAClE,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO;IACX,CAAC;IAED,iBAAiB,CAAC,aAAa,CAC3B,IAAI,WAAW,CAAqB,mBAAmB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAChF,CAAC;AACN,CAAC,CAAC"}