@tellescope/react-components 1.238.0 → 1.239.1

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 (59) hide show
  1. package/lib/cjs/Forms/forms.d.ts.map +1 -1
  2. package/lib/cjs/Forms/forms.js +29 -27
  3. package/lib/cjs/Forms/forms.js.map +1 -1
  4. package/lib/cjs/Forms/forms.v2.d.ts.map +1 -1
  5. package/lib/cjs/Forms/forms.v2.js +29 -27
  6. package/lib/cjs/Forms/forms.v2.js.map +1 -1
  7. package/lib/cjs/Forms/hooks.d.ts +25 -1
  8. package/lib/cjs/Forms/hooks.d.ts.map +1 -1
  9. package/lib/cjs/Forms/hooks.js +40 -2
  10. package/lib/cjs/Forms/hooks.js.map +1 -1
  11. package/lib/cjs/Forms/inputs.d.ts +6 -2
  12. package/lib/cjs/Forms/inputs.d.ts.map +1 -1
  13. package/lib/cjs/Forms/inputs.js +109 -11
  14. package/lib/cjs/Forms/inputs.js.map +1 -1
  15. package/lib/cjs/Forms/inputs.v2.d.ts +2 -1
  16. package/lib/cjs/Forms/inputs.v2.d.ts.map +1 -1
  17. package/lib/cjs/Forms/inputs.v2.js +26 -9
  18. package/lib/cjs/Forms/inputs.v2.js.map +1 -1
  19. package/lib/cjs/Forms/localization.d.ts.map +1 -1
  20. package/lib/cjs/Forms/localization.js +7 -0
  21. package/lib/cjs/Forms/localization.js.map +1 -1
  22. package/lib/cjs/inputs_shared.d.ts +6 -2
  23. package/lib/cjs/inputs_shared.d.ts.map +1 -1
  24. package/lib/cjs/inputs_shared.js +4 -3
  25. package/lib/cjs/inputs_shared.js.map +1 -1
  26. package/lib/esm/Forms/forms.d.ts.map +1 -1
  27. package/lib/esm/Forms/forms.js +30 -28
  28. package/lib/esm/Forms/forms.js.map +1 -1
  29. package/lib/esm/Forms/forms.v2.d.ts.map +1 -1
  30. package/lib/esm/Forms/forms.v2.js +30 -28
  31. package/lib/esm/Forms/forms.v2.js.map +1 -1
  32. package/lib/esm/Forms/hooks.d.ts +25 -1
  33. package/lib/esm/Forms/hooks.d.ts.map +1 -1
  34. package/lib/esm/Forms/hooks.js +38 -1
  35. package/lib/esm/Forms/hooks.js.map +1 -1
  36. package/lib/esm/Forms/inputs.d.ts +6 -2
  37. package/lib/esm/Forms/inputs.d.ts.map +1 -1
  38. package/lib/esm/Forms/inputs.js +107 -10
  39. package/lib/esm/Forms/inputs.js.map +1 -1
  40. package/lib/esm/Forms/inputs.v2.d.ts +2 -1
  41. package/lib/esm/Forms/inputs.v2.d.ts.map +1 -1
  42. package/lib/esm/Forms/inputs.v2.js +25 -9
  43. package/lib/esm/Forms/inputs.v2.js.map +1 -1
  44. package/lib/esm/Forms/localization.d.ts.map +1 -1
  45. package/lib/esm/Forms/localization.js +7 -0
  46. package/lib/esm/Forms/localization.js.map +1 -1
  47. package/lib/esm/inputs_shared.d.ts +6 -2
  48. package/lib/esm/inputs_shared.d.ts.map +1 -1
  49. package/lib/esm/inputs_shared.js +4 -3
  50. package/lib/esm/inputs_shared.js.map +1 -1
  51. package/lib/tsconfig.tsbuildinfo +1 -1
  52. package/package.json +9 -9
  53. package/src/Forms/forms.tsx +9 -2
  54. package/src/Forms/forms.v2.tsx +9 -2
  55. package/src/Forms/hooks.tsx +57 -2
  56. package/src/Forms/inputs.tsx +223 -9
  57. package/src/Forms/inputs.v2.tsx +29 -11
  58. package/src/Forms/localization.ts +8 -0
  59. package/src/inputs_shared.tsx +6 -5
@@ -93,6 +93,7 @@ import { Elements, PaymentElement, useStripe, useElements, EmbeddedCheckout, Emb
93
93
  import { loadStripe } from '@stripe/stripe-js';
94
94
  import { CheckCircleOutline, Delete, Edit, ExpandMore } from "@mui/icons-material";
95
95
  import { WYSIWYG } from "./wysiwyg";
96
+ import { useConditionalChoices } from "./hooks";
96
97
  // Bridge Eligibility - shared variable for storing most recent eligibility userIds
97
98
  var bridgeEligibilityResult = {
98
99
  userIds: [],
@@ -831,6 +832,91 @@ export var BridgeEligibilityInput = function (_a) {
831
832
  // User/admin interface (non-enduser sessions)
832
833
  return (_jsxs(Grid, __assign({ container: true, spacing: 2, direction: "column" }, { children: [_jsxs(Grid, __assign({ item: true }, { children: [_jsxs(Typography, __assign({ variant: "body2", color: "textSecondary" }, { children: ["Eligibility Type: ", eligibilityType] })), _jsxs(Typography, __assign({ variant: "body2", color: "textSecondary" }, { children: ["Service Type IDs: ", ((_e = (_d = field.options) === null || _d === void 0 ? void 0 : _d.bridgeServiceTypeIds) === null || _e === void 0 ? void 0 : _e.join(', ')) || 'Not configured'] })), state && _jsxs(Typography, __assign({ variant: "body2", color: "textSecondary" }, { children: ["State: ", state] })), payerId && _jsxs(Typography, __assign({ variant: "body2", color: "textSecondary" }, { children: ["Payer ID: ", payerId] })), memberId && _jsxs(Typography, __assign({ variant: "body2", color: "textSecondary" }, { children: ["Member ID: ", memberId] }))] })), error && (_jsx(Grid, __assign({ item: true }, { children: _jsx(Typography, __assign({ variant: "body2", color: "error" }, { children: error })) }))), polling && (_jsx(Grid, __assign({ item: true }, { children: _jsx(Typography, __assign({ variant: "body2", color: "primary" }, { children: form_display_text_for_language(form, "Polling for results... (this may take 15-30 seconds)") })) }))), _jsxs(Grid, __assign({ item: true, container: true, spacing: 2 }, { children: [_jsx(Grid, __assign({ item: true }, { children: _jsx(LoadingButton, { variant: "outlined", onClick: checkProviderEligibility, submitText: form_display_text_for_language(form, "Check Provider Eligibility (Free)"), submittingText: form_display_text_for_language(form, "Checking..."), submitting: loading && !polling, disabled: !((_g = (_f = field.options) === null || _f === void 0 ? void 0 : _f.bridgeServiceTypeIds) === null || _g === void 0 ? void 0 : _g.length) || loading || polling }) })), _jsx(Grid, __assign({ item: true }, { children: _jsx(LoadingButton, { variant: "outlined", onClick: checkServiceEligibility, submitText: form_display_text_for_language(form, "Check Service Eligibility (Paid)"), submittingText: polling ? form_display_text_for_language(form, "Polling...") : form_display_text_for_language(form, "Initiating..."), submitting: loading || polling, disabled: !((_j = (_h = field.options) === null || _h === void 0 ? void 0 : _h.bridgeServiceTypeIds) === null || _j === void 0 ? void 0 : _j.length) || loading || polling }) }))] })), value && (_jsxs(Grid, __assign({ item: true }, { children: [_jsx(Typography, __assign({ variant: "caption", color: "textSecondary" }, { children: "Current Answer:" })), _jsx("pre", __assign({ style: { fontSize: 11, whiteSpace: 'pre-wrap', wordBreak: 'break-word' } }, { children: JSON.stringify(value, null, 2) }))] })))] })));
833
834
  };
835
+ export var PharmacySearchInput = function (_a) {
836
+ var field = _a.field, rawValue = _a.value, onChange = _a.onChange, responses = _a.responses, enduser = _a.enduser, form = _a.form, props = __rest(_a, ["field", "value", "onChange", "responses", "enduser", "form"]);
837
+ var value = rawValue;
838
+ var session = useResolvedSession();
839
+ // Get initial ZIP code from responses or enduser data
840
+ var getInitialZipCode = function () {
841
+ var _a;
842
+ // Check Address field responses first
843
+ var addressResponse = responses === null || responses === void 0 ? void 0 : responses.find(function (r) { var _a, _b, _d; return ((_a = r.answer) === null || _a === void 0 ? void 0 : _a.type) === 'Address' && ((_d = (_b = r.answer) === null || _b === void 0 ? void 0 : _b.value) === null || _d === void 0 ? void 0 : _d.zipCode); });
844
+ if (((_a = addressResponse === null || addressResponse === void 0 ? void 0 : addressResponse.answer) === null || _a === void 0 ? void 0 : _a.type) === 'Address') {
845
+ var addressValue = addressResponse.answer.value;
846
+ if (addressValue === null || addressValue === void 0 ? void 0 : addressValue.zipCode) {
847
+ return addressValue.zipCode;
848
+ }
849
+ }
850
+ // Fall back to enduser.zipCode
851
+ return (enduser === null || enduser === void 0 ? void 0 : enduser.zipCode) || '';
852
+ };
853
+ var _b = useState(getInitialZipCode()), zipCode = _b[0], setZipCode = _b[1];
854
+ var _d = useState(false), loading = _d[0], setLoading = _d[1];
855
+ var _e = useState(), error = _e[0], setError = _e[1];
856
+ var _f = useState([]), pharmacies = _f[0], setPharmacies = _f[1];
857
+ var _g = useState(false), hasSearched = _g[0], setHasSearched = _g[1];
858
+ var searchPharmacies = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
859
+ var data, err_6;
860
+ return __generator(this, function (_a) {
861
+ switch (_a.label) {
862
+ case 0:
863
+ if (!zipCode || zipCode.length !== 5) {
864
+ setError(form_display_text_for_language(form, 'Please enter a valid 5-digit ZIP code'));
865
+ return [2 /*return*/];
866
+ }
867
+ setLoading(true);
868
+ setError(undefined);
869
+ setHasSearched(true);
870
+ _a.label = 1;
871
+ case 1:
872
+ _a.trys.push([1, 3, 4, 5]);
873
+ return [4 /*yield*/, session.api.integrations.proxy_read({
874
+ integration: 'ScriptSure',
875
+ type: 'pharmacy-search',
876
+ query: JSON.stringify({ zipCode: zipCode }),
877
+ })];
878
+ case 2:
879
+ data = (_a.sent()).data;
880
+ setPharmacies(data || []);
881
+ if (!(data === null || data === void 0 ? void 0 : data.length)) {
882
+ setError(form_display_text_for_language(form, 'No pharmacies found for this ZIP code'));
883
+ }
884
+ return [3 /*break*/, 5];
885
+ case 3:
886
+ err_6 = _a.sent();
887
+ setError((err_6 === null || err_6 === void 0 ? void 0 : err_6.message) || form_display_text_for_language(form, 'Failed to search pharmacies'));
888
+ setPharmacies([]);
889
+ return [3 /*break*/, 5];
890
+ case 4:
891
+ setLoading(false);
892
+ return [7 /*endfinally*/];
893
+ case 5: return [2 /*return*/];
894
+ }
895
+ });
896
+ }); }, [session, zipCode, form]);
897
+ var handleSelectPharmacy = function (pharmacy) {
898
+ onChange({
899
+ npi: pharmacy.npi,
900
+ ncpdpId: pharmacy.ncpdpId,
901
+ businessName: pharmacy.businessName,
902
+ primaryTelephone: pharmacy.primaryTelephone || '',
903
+ addressLine1: pharmacy.addressLine1,
904
+ city: pharmacy.city,
905
+ stateProvince: pharmacy.stateProvince,
906
+ postalCode: pharmacy.postalCode,
907
+ }, field.id);
908
+ };
909
+ var formatPharmacyAddress = function (p) {
910
+ var parts = [p.addressLine1, p.city, p.stateProvince, p.postalCode].filter(Boolean);
911
+ return parts.join(', ');
912
+ };
913
+ return (_jsxs(Grid, __assign({ container: true, direction: "column", spacing: 2 }, { children: [_jsx(Grid, __assign({ item: true }, { children: _jsxs(Grid, __assign({ container: true, spacing: 2, alignItems: "flex-end" }, { children: [_jsx(Grid, __assign({ item: true, xs: 8, sm: 6 }, { children: _jsx(TextField, { fullWidth: true, size: "small", label: form_display_text_for_language(form, "ZIP Code"), value: zipCode, onChange: function (e) { return setZipCode(e.target.value.replace(/\D/g, '').slice(0, 5)); }, InputProps: defaultInputProps, placeholder: "12345", required: !field.isOptional }) })), _jsx(Grid, __assign({ item: true, xs: 4, sm: 6 }, { children: _jsx(LoadingButton, { variant: "contained", onClick: searchPharmacies, submitText: form_display_text_for_language(form, "Search"), submittingText: form_display_text_for_language(form, "Searching..."), submitting: loading, disabled: zipCode.length !== 5 || loading, style: { width: '100%', marginTop: 0 } }) }))] })) })), error && (_jsx(Grid, __assign({ item: true }, { children: _jsx(Typography, __assign({ color: "error", sx: { fontSize: 14 } }, { children: error })) }))), value && (_jsx(Grid, __assign({ item: true }, { children: _jsx(Paper, __assign({ elevation: 2, sx: { p: 2, backgroundColor: '#e8f5e9' } }, { children: _jsxs(Grid, __assign({ container: true, alignItems: "center", justifyContent: "space-between" }, { children: [_jsxs(Grid, __assign({ item: true, xs: true }, { children: [_jsxs(Typography, __assign({ variant: "subtitle1", fontWeight: "bold" }, { children: [_jsx(CheckCircleOutline, { sx: { color: 'success.main', mr: 1, verticalAlign: 'middle' } }), value.businessName] })), _jsx(Typography, __assign({ variant: "body2", color: "text.secondary" }, { children: formatPharmacyAddress(value) })), value.primaryTelephone && (_jsx(Typography, __assign({ variant: "body2", color: "text.secondary" }, { children: value.primaryTelephone })))] })), _jsx(Grid, __assign({ item: true }, { children: _jsx(MuiIconButton, __assign({ onClick: function () { return onChange(undefined, field.id); }, size: "small" }, { children: _jsx(CancelIcon, {}) })) }))] })) })) }))), !value && hasSearched && pharmacies.length > 0 && (_jsxs(Grid, __assign({ item: true }, { children: [_jsxs(Typography, __assign({ variant: "subtitle2", sx: { mb: 1 } }, { children: [pharmacies.length, " ", form_display_text_for_language(form, pharmacies.length === 1 ? 'pharmacy found' : 'pharmacies found')] })), _jsx(Box, __assign({ sx: { maxHeight: 300, overflow: 'auto' } }, { children: pharmacies.map(function (pharmacy, index) { return (_jsxs(Paper, __assign({ elevation: 1, sx: {
914
+ p: 1.5,
915
+ mb: 1,
916
+ cursor: 'pointer',
917
+ '&:hover': { backgroundColor: '#f5f5f5' },
918
+ }, onClick: function () { return handleSelectPharmacy(pharmacy); } }, { children: [_jsx(Typography, __assign({ variant: "subtitle2", fontWeight: "medium" }, { children: pharmacy.businessName })), _jsx(Typography, __assign({ variant: "body2", color: "text.secondary" }, { children: formatPharmacyAddress(pharmacy) })), pharmacy.primaryTelephone && (_jsx(Typography, __assign({ variant: "caption", color: "text.secondary" }, { children: pharmacy.primaryTelephone })))] }), "".concat(pharmacy.ncpdpId, "-").concat(index))); }) }))] }))), loading && (_jsx(Grid, __assign({ item: true }, { children: _jsx(LinearProgress, {}) })))] })));
919
+ };
834
920
  var HourSelector = function (props) { return (_jsx(StringSelector, __assign({}, props, { options: Array(12).fill('').map(function (_, i) { return (i + 1) <= 9 ? "0".concat(i + 1) : (i + 1).toString(); }) }))); };
835
921
  var MinuteSelector = function (props) { return (_jsx(StringSelector, __assign({}, props, { options: Array(60).fill('').map(function (_, i) { return i <= 9 ? "0".concat(i) : i.toString(); }) }))); };
836
922
  var AmPmSelector = function (props) { return (_jsx(StringSelector, __assign({}, props, { options: ['AM', 'PM'] }))); };
@@ -1128,13 +1214,24 @@ var multipleChoiceItemSx = {
1128
1214
  };
1129
1215
  export var MultipleChoiceInput = function (_a) {
1130
1216
  var _b;
1131
- var field = _a.field, form = _a.form, _value = _a.value, onChange = _a.onChange;
1217
+ var field = _a.field, form = _a.form, _value = _a.value, onChange = _a.onChange, responses = _a.responses, enduser = _a.enduser;
1132
1218
  var value = typeof _value === 'string' ? [_value] : _value; // if loading existingResponses, allows them to be a string
1133
1219
  var _d = field.options, choices = _d.choices, radio = _d.radio, other = _d.other, optionDetails = _d.optionDetails;
1134
1220
  var _e = useState({}), expandedDescriptions = _e[0], setExpandedDescriptions = _e[1];
1135
1221
  // current other string
1136
1222
  var enteringOtherStringRef = React.useRef(''); // if typing otherString as prefix of a checkbox value, don't auto-select
1137
1223
  var otherString = (_b = value === null || value === void 0 ? void 0 : value.find(function (v) { var _a; return v === enteringOtherStringRef.current || !((_a = (choices !== null && choices !== void 0 ? choices : [])) === null || _a === void 0 ? void 0 : _a.find(function (c) { return c === v; })); })) !== null && _b !== void 0 ? _b : '';
1224
+ // Conditional visibility for choices
1225
+ var _f = useConditionalChoices({
1226
+ choices: choices,
1227
+ optionDetails: optionDetails,
1228
+ responses: responses,
1229
+ enduser: enduser,
1230
+ form: form,
1231
+ onChange: onChange,
1232
+ fieldId: field.id,
1233
+ otherString: otherString,
1234
+ }), visibleChoices = _f.visibleChoices, handleChange = _f.handleChange;
1138
1235
  var getDescriptionForChoice = useCallback(function (choice) {
1139
1236
  var _a;
1140
1237
  return (_a = optionDetails === null || optionDetails === void 0 ? void 0 : optionDetails.find(function (detail) { return detail.option === choice; })) === null || _a === void 0 ? void 0 : _a.description;
@@ -1146,11 +1243,11 @@ export var MultipleChoiceInput = function (_a) {
1146
1243
  });
1147
1244
  }, []);
1148
1245
  return (_jsxs(Grid, __assign({ container: true, alignItems: "center" }, { children: [radio
1149
- ? (_jsxs(FormControl, __assign({ fullWidth: true }, { children: [_jsx(FormLabel, __assign({ id: "radio-group-".concat(field.id, "-label") }, { children: form_display_text_for_language(form, "Select One") })), _jsx(RadioGroup, __assign({ "aria-labelledby": "radio-group-".concat(field.id, "-label"), defaultValue: "female", name: "radio-group-".concat(field.id) }, { children: (choices !== null && choices !== void 0 ? choices : []).map(function (c, i) {
1246
+ ? (_jsxs(FormControl, __assign({ fullWidth: true }, { children: [_jsx(FormLabel, __assign({ id: "radio-group-".concat(field.id, "-label") }, { children: form_display_text_for_language(form, "Select One") })), _jsx(RadioGroup, __assign({ "aria-labelledby": "radio-group-".concat(field.id, "-label"), defaultValue: "female", name: "radio-group-".concat(field.id) }, { children: visibleChoices.map(function (c, i) {
1150
1247
  var description = getDescriptionForChoice(c);
1151
1248
  var hasDescription = !!description;
1152
1249
  var isExpanded = expandedDescriptions[i];
1153
- return (_jsxs(Box, __assign({ sx: { width: '100%' } }, { children: [_jsx(Box, __assign({ sx: { display: 'flex', alignItems: 'center', width: '100%' } }, { children: _jsx(FormControlLabel, { sx: __assign(__assign({}, multipleChoiceItemSx), { flex: 1, marginLeft: '0px' }), checked: !!(value === null || value === void 0 ? void 0 : value.includes(c)) && c !== otherString, control: _jsx(Radio, { onClick: function () { return onChange((value === null || value === void 0 ? void 0 : value.includes(c)) ? [] : [c], field.id); } }), label: _jsxs(Box, __assign({ sx: { display: 'flex', alignItems: 'center', width: '100%' } }, { children: [_jsx(Typography, __assign({ component: "span", sx: { flex: 1 } }, { children: c })), hasDescription && (_jsx(MuiIconButton, __assign({ size: "small", onClick: function (e) {
1250
+ return (_jsxs(Box, __assign({ sx: { width: '100%' } }, { children: [_jsx(Box, __assign({ sx: { display: 'flex', alignItems: 'center', width: '100%' } }, { children: _jsx(FormControlLabel, { sx: __assign(__assign({}, multipleChoiceItemSx), { flex: 1, marginLeft: '0px' }), checked: !!(value === null || value === void 0 ? void 0 : value.includes(c)) && c !== otherString, control: _jsx(Radio, { onClick: function () { return handleChange((value === null || value === void 0 ? void 0 : value.includes(c)) ? [] : [c], field.id); } }), label: _jsxs(Box, __assign({ sx: { display: 'flex', alignItems: 'center', width: '100%' } }, { children: [_jsx(Typography, __assign({ component: "span", sx: { flex: 1 } }, { children: c })), hasDescription && (_jsx(MuiIconButton, __assign({ size: "small", onClick: function (e) {
1154
1251
  e.stopPropagation();
1155
1252
  toggleDescription(i);
1156
1253
  }, sx: {
@@ -1158,7 +1255,7 @@ export var MultipleChoiceInput = function (_a) {
1158
1255
  transition: 'transform 0.2s',
1159
1256
  ml: 1
1160
1257
  } }, { children: _jsx(ExpandMore, { fontSize: "small" }) })))] })) }) })), hasDescription && (_jsx(Collapse, __assign({ in: isExpanded }, { children: _jsx(Box, __assign({ sx: { pl: '42px', pr: 2, pb: 1 } }, { children: _jsx(Typography, __assign({ variant: "body2", color: "text.secondary" }, { children: description })) })) })))] }), i));
1161
- }) }))] }))) : ((choices !== null && choices !== void 0 ? choices : []).map(function (c, i) {
1258
+ }) }))] }))) : (visibleChoices.map(function (c, i) {
1162
1259
  var description = getDescriptionForChoice(c);
1163
1260
  var hasDescription = !!description;
1164
1261
  var isExpanded = expandedDescriptions[i];
@@ -1168,7 +1265,7 @@ export var MultipleChoiceInput = function (_a) {
1168
1265
  if (e.target.closest('.expand-button')) {
1169
1266
  return;
1170
1267
  }
1171
- onChange(((value === null || value === void 0 ? void 0 : value.includes(c))
1268
+ handleChange(((value === null || value === void 0 ? void 0 : value.includes(c))
1172
1269
  ? ((radio || ((_b = (_a = field.options) === null || _a === void 0 ? void 0 : _a.radioChoices) === null || _b === void 0 ? void 0 : _b.includes(c)))
1173
1270
  ? []
1174
1271
  : value.filter(function (v) { return v !== c; }))
@@ -1189,13 +1286,13 @@ export var MultipleChoiceInput = function (_a) {
1189
1286
  // onClick={() => !otherChecked && handleOtherChecked()} // allow click to enable when disabled
1190
1287
  onChange: function (e) {
1191
1288
  enteringOtherStringRef.current = e.target.value;
1192
- onChange((radio
1289
+ handleChange((radio
1193
1290
  ? (e.target.value.trim()
1194
1291
  ? [e.target.value]
1195
1292
  : [])
1196
1293
  : (e.target.value.trim()
1197
1294
  // remove existing other string (if exists) and append new one
1198
- ? __spreadArray(__spreadArray([], (value !== null && value !== void 0 ? value : []).filter(function (v) { return v !== otherString; }), true), [e.target.value], false) : value === null || value === void 0 ? void 0 : value.filter(function (v) { return v !== otherString; }))), field.id);
1295
+ ? __spreadArray(__spreadArray([], (value !== null && value !== void 0 ? value : []).filter(function (v) { return v !== otherString; }), true), [e.target.value], false) : (value !== null && value !== void 0 ? value : []).filter(function (v) { return v !== otherString; }))), field.id);
1199
1296
  } }) }))] })));
1200
1297
  };
1201
1298
  // Helper to emit GTM purchase event for Stripe payments (single source of truth)
@@ -2232,7 +2329,7 @@ export var AppointmentBookingInput = function (_a) {
2232
2329
  var _s = useState(false), confirming = _s[0], setConfirming = _s[1];
2233
2330
  var bookingPageId = (_b = field === null || field === void 0 ? void 0 : field.options) === null || _b === void 0 ? void 0 : _b.bookingPageId;
2234
2331
  var downloadICS = useCallback(function (event) { return __awaiter(void 0, void 0, void 0, function () {
2235
- var _a, err_6;
2332
+ var _a, err_7;
2236
2333
  return __generator(this, function (_b) {
2237
2334
  switch (_b.label) {
2238
2335
  case 0:
@@ -2244,8 +2341,8 @@ export var AppointmentBookingInput = function (_a) {
2244
2341
  { name: "event.ics", dataIsURL: true, type: 'text/calendar' }]);
2245
2342
  return [3 /*break*/, 3];
2246
2343
  case 2:
2247
- err_6 = _b.sent();
2248
- console.error(err_6);
2344
+ err_7 = _b.sent();
2345
+ console.error(err_7);
2249
2346
  return [3 /*break*/, 3];
2250
2347
  case 3: return [2 /*return*/];
2251
2348
  }