@feathery/react 2.38.0 → 2.39.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 (126) hide show
  1. package/cjs/Form/grid/Element/index.d.ts.map +1 -1
  2. package/cjs/Form/grid/StyledContainer/index.d.ts +2 -1
  3. package/cjs/Form/grid/StyledContainer/index.d.ts.map +1 -1
  4. package/cjs/Form/index.d.ts.map +1 -1
  5. package/cjs/elements/basic/ImageElement.d.ts.map +1 -1
  6. package/cjs/elements/basic/ProgressBarElement/components/SegmentBar.d.ts +1 -1
  7. package/cjs/elements/basic/ProgressBarElement/components/SegmentBar.d.ts.map +1 -1
  8. package/cjs/elements/basic/ProgressBarElement/components/SmoothBar.d.ts +1 -1
  9. package/cjs/elements/basic/ProgressBarElement/components/SmoothBar.d.ts.map +1 -1
  10. package/cjs/elements/basic/ProgressBarElement/components/StepperBar.d.ts +16 -0
  11. package/cjs/elements/basic/ProgressBarElement/components/StepperBar.d.ts.map +1 -0
  12. package/cjs/elements/basic/ProgressBarElement/index.d.ts +1 -1
  13. package/cjs/elements/basic/ProgressBarElement/index.d.ts.map +1 -1
  14. package/cjs/elements/fields/index.d.ts +28 -23
  15. package/cjs/elements/fields/index.d.ts.map +1 -1
  16. package/cjs/elements/index.d.ts +66 -22
  17. package/cjs/elements/index.d.ts.map +1 -1
  18. package/cjs/{fthry_AssistantChat.DMRqYl7c.js → fthry_AssistantChat.DQ0U08nB.js} +4 -4
  19. package/cjs/{fthry_FormControl.Cl-dGLcM.js → fthry_FormControl.CGLQxWcB.js} +1 -1
  20. package/cjs/{fthry_InlineTooltip.B8DIhcwN.js → fthry_InlineTooltip.Di8A8FHv.js} +2 -2
  21. package/cjs/{fthry_Overlay.cDGh2blq.js → fthry_Overlay.Da9Aifek.js} +1 -1
  22. package/cjs/{fthry_PaymentMethodField.DBG_F2IV.js → fthry_PaymentMethodField.BCfRfF5k.js} +4 -4
  23. package/cjs/{fthry_Placeholder.D3e5FkES.js → fthry_Placeholder.DEc4QJJ4.js} +1 -1
  24. package/cjs/{fthry_ShowEyeIcon.Da2SnAC6.js → fthry_ShowEyeIcon.DUuKQNq7.js} +1 -1
  25. package/cjs/{fthry_highlighted-body-TPN3WLV5.BHwDjUKJ.js → fthry_highlighted-body-TPN3WLV5.sapB9BQx.js} +3 -3
  26. package/cjs/{fthry_index.CcDlE6Qp.js → fthry_index.-lo4kt_U.js} +1 -1
  27. package/cjs/{fthry_index.Bfi9gaRQ.js → fthry_index.0uHTYf8v.js} +4 -4
  28. package/cjs/{fthry_index.Cl5vVnOu.js → fthry_index.2hec0Cyq.js} +1 -1
  29. package/cjs/{fthry_index._rTrmGwo.js → fthry_index.BL8FLs1p.js} +379 -119
  30. package/cjs/{fthry_index.HtL5MFY2.js → fthry_index.BO0ubvlf.js} +1 -1
  31. package/cjs/{fthry_index.DVHeeCAd.js → fthry_index.BTKHmnww.js} +1 -1
  32. package/cjs/{fthry_index.DEnbUjkR.js → fthry_index.Bqr-JETA.js} +4 -4
  33. package/cjs/{fthry_index.8WMLSq-m.js → fthry_index.BvEoZLvr.js} +5 -5
  34. package/cjs/{fthry_index.DKbXGnnP.js → fthry_index.Bxvep-HH.js} +6 -6
  35. package/cjs/{fthry_index.Bq69xc_i.js → fthry_index.C4fLOWzK.js} +5 -5
  36. package/cjs/{fthry_index.z4phbmML.js → fthry_index.C9MjO1_2.js} +6 -6
  37. package/cjs/{fthry_index.71p3lEGO.js → fthry_index.CBXhgNiq.js} +5 -5
  38. package/cjs/{fthry_index.CUUU_mSN.js → fthry_index.CIczM5LF.js} +1 -1
  39. package/cjs/{fthry_index.DX0u8QrD.js → fthry_index.Cc253N4g.js} +2 -2
  40. package/cjs/{fthry_index.DD6R-HZB.js → fthry_index.D92_iqxj.js} +1 -1
  41. package/cjs/{fthry_index.C1bGkjXK.js → fthry_index.DRJnbdgq.js} +8 -8
  42. package/cjs/{fthry_index.DaWvIjDB.js → fthry_index.DpAKJ8nY.js} +2 -2
  43. package/cjs/{fthry_index.CE4Pt2Be.js → fthry_index.EDEcZRri.js} +5 -5
  44. package/cjs/{fthry_index.DGQK0BX6.js → fthry_index.KsIR58CL.js} +3 -3
  45. package/cjs/{fthry_index.Da2RxuWz.js → fthry_index.SCbU_F4C.js} +3 -3
  46. package/cjs/{fthry_index.DVl7lCQ4.js → fthry_index.ZWEzxCxs.js} +1 -1
  47. package/cjs/{fthry_index.CELRWX9K.js → fthry_index.bd_dascE.js} +1 -1
  48. package/cjs/{fthry_index.VY9IsOXx.js → fthry_index.hZwAxt4e.js} +6 -6
  49. package/cjs/{fthry_index.BHmognVe.js → fthry_index.iOhM0yii.js} +5 -5
  50. package/cjs/{fthry_index.B8RLVADy.js → fthry_index.nVNuvtTk.js} +1 -1
  51. package/cjs/{fthry_input.CNUxn07s.js → fthry_input.Cem2OoEV.js} +1 -1
  52. package/cjs/{fthry_mermaid-O7DHMXV3.C-jL0nU0.js → fthry_mermaid-O7DHMXV3.DtDL6zuT.js} +3 -3
  53. package/cjs/{fthry_script.CngcPx_9.js → fthry_script.CcpqD6sz.js} +1 -1
  54. package/cjs/{fthry_styles.BVmu9I22.js → fthry_styles.C570g4Qk.js} +1 -1
  55. package/cjs/{fthry_useElementSize.BgBAI35V.js → fthry_useElementSize.BTm7mSxv.js} +1 -1
  56. package/cjs/{fthry_useSalesforceSync.C1MgCEkl.js → fthry_useSalesforceSync.Bb_ko1ft.js} +1 -1
  57. package/cjs/{fthry_webfontloader.BgZRGUoe.js → fthry_webfontloader.DQj-dIFN.js} +1 -1
  58. package/cjs/index.d.ts +66 -22
  59. package/cjs/index.d.ts.map +1 -1
  60. package/cjs/index.js +1 -1
  61. package/dist/Form/grid/Element/index.d.ts.map +1 -1
  62. package/dist/Form/grid/StyledContainer/index.d.ts +2 -1
  63. package/dist/Form/grid/StyledContainer/index.d.ts.map +1 -1
  64. package/dist/Form/index.d.ts.map +1 -1
  65. package/dist/elements/basic/ImageElement.d.ts.map +1 -1
  66. package/dist/elements/basic/ProgressBarElement/components/SegmentBar.d.ts +1 -1
  67. package/dist/elements/basic/ProgressBarElement/components/SegmentBar.d.ts.map +1 -1
  68. package/dist/elements/basic/ProgressBarElement/components/SmoothBar.d.ts +1 -1
  69. package/dist/elements/basic/ProgressBarElement/components/SmoothBar.d.ts.map +1 -1
  70. package/dist/elements/basic/ProgressBarElement/components/StepperBar.d.ts +16 -0
  71. package/dist/elements/basic/ProgressBarElement/components/StepperBar.d.ts.map +1 -0
  72. package/dist/elements/basic/ProgressBarElement/index.d.ts +1 -1
  73. package/dist/elements/basic/ProgressBarElement/index.d.ts.map +1 -1
  74. package/dist/elements/fields/index.d.ts +28 -23
  75. package/dist/elements/fields/index.d.ts.map +1 -1
  76. package/dist/elements/index.d.ts +66 -22
  77. package/dist/elements/index.d.ts.map +1 -1
  78. package/dist/{fthry_AssistantChat.BpIazy4D.js → fthry_AssistantChat.D_blXDVn.js} +4 -4
  79. package/dist/{fthry_FormControl.VJETpF2_.js → fthry_FormControl.BAlGkOxw.js} +1 -1
  80. package/dist/{fthry_InlineTooltip.HYGB8l2S.js → fthry_InlineTooltip.CFWVGXML.js} +2 -2
  81. package/dist/{fthry_Overlay.DndK3JOJ.js → fthry_Overlay.BwPgEKz0.js} +1 -1
  82. package/dist/{fthry_PaymentMethodField.iCQc8h5O.js → fthry_PaymentMethodField.DU5n1W6P.js} +4 -4
  83. package/dist/{fthry_Placeholder.BRzhfZ1W.js → fthry_Placeholder.DXkvTQTB.js} +1 -1
  84. package/dist/{fthry_ShowEyeIcon.Cccxpke2.js → fthry_ShowEyeIcon.D_7XU7MB.js} +1 -1
  85. package/dist/{fthry_highlighted-body-TPN3WLV5._HIiKJRn.js → fthry_highlighted-body-TPN3WLV5.unZcvE33.js} +3 -3
  86. package/dist/{fthry_index.B_AxehyW.js → fthry_index.2IgipsEM.js} +6 -6
  87. package/dist/{fthry_index.P0AejkY4.js → fthry_index.B-nybZYJ.js} +5 -5
  88. package/dist/{fthry_index.Ca770hPU.js → fthry_index.B9DIVIQU.js} +1 -1
  89. package/dist/{fthry_index.BOItLjiR.js → fthry_index.BM2ld3tG.js} +8 -8
  90. package/dist/{fthry_index.BZZHsN5a.js → fthry_index.BTgeVAmS.js} +4 -4
  91. package/dist/{fthry_index.BQlKGMSZ.js → fthry_index.Bbc3lP0x.js} +6 -6
  92. package/dist/{fthry_index.DL46TGQr.js → fthry_index.BfNP3Kp1.js} +2 -2
  93. package/dist/{fthry_index.CQfKbwaC.js → fthry_index.BsBSZ5eS.js} +1 -1
  94. package/dist/{fthry_index.CBlXw7TW.js → fthry_index.Bv0Rd4n8.js} +379 -119
  95. package/dist/{fthry_index.CaQYjI5I.js → fthry_index.Bydv6C9o.js} +5 -5
  96. package/dist/{fthry_index.BZuK2sQ5.js → fthry_index.C2RescJg.js} +1 -1
  97. package/dist/{fthry_index.mxecJ9_a.js → fthry_index.C7DKIdK3.js} +6 -6
  98. package/dist/{fthry_index.BH5ZPwTL.js → fthry_index.CXEINKN6.js} +2 -2
  99. package/dist/{fthry_index.DOOj6cJp.js → fthry_index.CXcuEd6j.js} +1 -1
  100. package/dist/{fthry_index.08-lgbei.js → fthry_index.CZ9WEIQj.js} +5 -5
  101. package/dist/{fthry_index.JhHnGxYn.js → fthry_index.CsVcvrP3.js} +1 -1
  102. package/dist/{fthry_index.DHPFNhgl.js → fthry_index.CswL31zQ.js} +1 -1
  103. package/dist/{fthry_index.DwVO_QsO.js → fthry_index.D94NLNhy.js} +1 -1
  104. package/dist/{fthry_index.B020qTL1.js → fthry_index.DGbZqMXK.js} +5 -5
  105. package/dist/{fthry_index.-9Pe_RZJ.js → fthry_index.DKKxZ5bF.js} +1 -1
  106. package/dist/{fthry_index.DPAdqFeT.js → fthry_index.DVeINBpy.js} +3 -3
  107. package/dist/{fthry_index.CQOONMqP.js → fthry_index.DdyjeQle.js} +1 -1
  108. package/dist/{fthry_index.B2UzR5GS.js → fthry_index.DxbE60cC.js} +3 -3
  109. package/dist/{fthry_index.D7Lb5Krw.js → fthry_index.YWqg41F5.js} +5 -5
  110. package/dist/{fthry_index.DIIoaRob.js → fthry_index.mqd6gAHS.js} +4 -4
  111. package/dist/{fthry_input.DVAV1a0p.js → fthry_input.D1vjPw4v.js} +1 -1
  112. package/dist/{fthry_mermaid-O7DHMXV3.BdzSXu8K.js → fthry_mermaid-O7DHMXV3.Dby-9naO.js} +3 -3
  113. package/dist/{fthry_script.4UR41bnG.js → fthry_script.CdqUz_xN.js} +1 -1
  114. package/dist/{fthry_styles.BfM6iy4Q.js → fthry_styles.BwcJywy5.js} +1 -1
  115. package/dist/{fthry_useElementSize.BVjOicba.js → fthry_useElementSize.Bsa4K6S7.js} +1 -1
  116. package/dist/{fthry_useSalesforceSync.CXqC544h.js → fthry_useSalesforceSync.C6H1QGFx.js} +1 -1
  117. package/dist/{fthry_webfontloader.n8GaR_jB.js → fthry_webfontloader.CUla19Cs.js} +1 -1
  118. package/dist/index.d.ts +66 -22
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +1 -1
  121. package/package.json +2 -2
  122. package/umd/{AddressField.2d777eda22a67a0ed3a3.js → AddressField.c4188872f2a931394aa1.js} +1 -1
  123. package/umd/{DropdownMultiField.c8c926000cbed5ee771a.js → DropdownMultiField.72a44c0280217eeb5652.js} +1 -1
  124. package/umd/{PhoneField.6b9ad2d0d9387ef78a1f.js → PhoneField.8183bed71fa92767aa3a.js} +1 -1
  125. package/umd/{TextField.f5cc4a03e69d5872027b.js → TextField.28c59425e129e78a4551.js} +1 -1
  126. package/umd/index.js +1 -1
@@ -6128,12 +6128,12 @@ function requireUtils () {
6128
6128
  return response;
6129
6129
  });
6130
6130
  }
6131
- function createHttpHelpers(sdkKey, formId, userId, getFieldValues, updateFieldData, offlineHandler) {
6131
+ function createHttpHelpers(sdkKey, entityId, userId, getFieldValues, updateFieldData, offlineHandler, entityType = 'form') {
6132
6132
  const helpers = {};
6133
6133
  ['get', 'patch', 'post', 'put', 'delete'].forEach((method) => (helpers[method] = async (url, data, headers) => {
6134
6134
  if (!url)
6135
6135
  return {};
6136
- const response = await (0, api_1.runCustomRequest)(sdkKey, formId, { method: method.toUpperCase(), url, data, headers }, userId, getFieldValues?.(), offlineHandler);
6136
+ const response = await (0, api_1.runCustomRequest)(sdkKey, entityId, { method: method.toUpperCase(), url, data, headers }, userId, getFieldValues?.(), offlineHandler, entityType);
6137
6137
  if (!response)
6138
6138
  return {};
6139
6139
  if (response.field_values && updateFieldData) {
@@ -6149,7 +6149,7 @@ function requireUtils () {
6149
6149
  helpers.connect = async (name, data, headers) => {
6150
6150
  if (!name)
6151
6151
  return {};
6152
- const response = await (0, api_1.runCustomRequest)(sdkKey, formId, { name, data, headers }, userId, getFieldValues?.(), offlineHandler);
6152
+ const response = await (0, api_1.runCustomRequest)(sdkKey, entityId, { name, data, headers }, userId, getFieldValues?.(), offlineHandler, entityType);
6153
6153
  if (!response)
6154
6154
  return {};
6155
6155
  if (response.field_values && updateFieldData) {
@@ -6236,7 +6236,7 @@ function requireApi () {
6236
6236
  let meetingUrl;
6237
6237
  let variantPerFile;
6238
6238
  let variantMode;
6239
- let confidenceScoresCompleted;
6239
+ let waitForConfidenceScores;
6240
6240
  if (typeof options === 'object') {
6241
6241
  runAsync = !options.waitForCompletion;
6242
6242
  pages = options.pages;
@@ -6244,7 +6244,7 @@ function requireApi () {
6244
6244
  meetingUrl = options.meetingUrl;
6245
6245
  variantPerFile = options.variantPerFile;
6246
6246
  variantMode = options.variantMode;
6247
- confidenceScoresCompleted = options.confidenceScoresCompleted;
6247
+ waitForConfidenceScores = options.waitForConfidenceScores;
6248
6248
  }
6249
6249
  else {
6250
6250
  // deprecated usage, options is runAsync
@@ -6268,7 +6268,7 @@ function requireApi () {
6268
6268
  body: JSON.stringify(data),
6269
6269
  });
6270
6270
  const response = await res?.json();
6271
- const pollUrl = `${(0, utils_1.getStaticUrl)()}ai/vision/completion/?fid=${userId}&eid=${extractionId}&evid=${variantId ?? ''}&poll_ids=${(response?.poll_ids ?? []).join(',')}&wait_for_confidence_scores=${confidenceScoresCompleted ?? false}`;
6271
+ const pollUrl = `${(0, utils_1.getStaticUrl)()}ai/vision/completion/?fid=${userId}&eid=${extractionId}&evid=${variantId ?? ''}&poll_ids=${(response?.poll_ids ?? []).join(',')}&wait_for_confidence_scores=${waitForConfidenceScores ?? false}`;
6272
6272
  const CHECK_INTERVAL = pollCheckInterval ?? 2000;
6273
6273
  const MAX_TIME = pollMaxTime ?? 3 * 60 * 1000;
6274
6274
  if (runAsync) {
@@ -6381,10 +6381,9 @@ function requireApi () {
6381
6381
  };
6382
6382
  await (0, utils_1.apiFetch)(sdkKey, url, data);
6383
6383
  }
6384
- function runCustomRequest(sdkKey, formId, payload, userId, fieldValues, offlineHandler) {
6385
- const data = {
6384
+ function runCustomRequest(sdkKey, entityId, payload, userId, fieldValues, offlineHandler, entityType = 'form') {
6385
+ let data = {
6386
6386
  fuser_key: userId,
6387
- form_key: formId,
6388
6387
  name: payload.name,
6389
6388
  method: payload.method,
6390
6389
  url: payload.url,
@@ -6392,7 +6391,15 @@ function requireApi () {
6392
6391
  headers: payload.headers,
6393
6392
  field_values: fieldValues,
6394
6393
  };
6395
- const url = `${(0, utils_1.getStaticUrl)()}custom_request/`;
6394
+ let url;
6395
+ if (entityType === 'extraction') {
6396
+ data.extraction_id = entityId;
6397
+ url = `${(0, utils_1.getStaticUrl)()}ai/custom_request/`;
6398
+ }
6399
+ else {
6400
+ data.form_key = entityId;
6401
+ url = `${(0, utils_1.getStaticUrl)()}custom_request/`;
6402
+ }
6396
6403
  const options = {
6397
6404
  headers: { 'Content-Type': 'application/json' },
6398
6405
  method: 'POST',
@@ -16935,8 +16942,8 @@ function inRepeat(elementKey, parentKey, addCommaToElement) {
16935
16942
  */
16936
16943
  function getRepeatedContainer(step, element) {
16937
16944
  return getRepeatedContainers(step).find(function (subgrid) {
16938
- var elKey = getPositionKey(element);
16939
- var subgridKey = getPositionKey(subgrid);
16945
+ var elKey = getPositionKey$1(element);
16946
+ var subgridKey = getPositionKey$1(subgrid);
16940
16947
  return inRepeat(elKey, subgridKey);
16941
16948
  });
16942
16949
  }
@@ -16956,8 +16963,8 @@ function getRepeatedContainers(step) {
16956
16963
  */
16957
16964
  function getFieldsInRepeat(step, repeatContainer) {
16958
16965
  return step.servar_fields.filter(function (field) {
16959
- var positionKey = getPositionKey(field);
16960
- var repeatKey = getPositionKey(repeatContainer);
16966
+ var positionKey = getPositionKey$1(field);
16967
+ var repeatKey = getPositionKey$1(repeatContainer);
16961
16968
  return inRepeat(positionKey, repeatKey);
16962
16969
  });
16963
16970
  }
@@ -17033,7 +17040,7 @@ var getTextVariables = function (el) {
17033
17040
  };
17034
17041
  var repeatCountByTextVariables = function (step, repeatKey) {
17035
17042
  var textVariables = [];
17036
- __spreadArray(__spreadArray([], __read(step.buttons), false), __read(step.texts), false).filter(function (el) { return repeatKey && inRepeat(getPositionKey(el), repeatKey, true); })
17043
+ __spreadArray(__spreadArray([], __read(step.buttons), false), __read(step.texts), false).filter(function (el) { return repeatKey && inRepeat(getPositionKey$1(el), repeatKey, true); })
17037
17044
  .forEach(function (el) {
17038
17045
  textVariables = __spreadArray(__spreadArray([], __read(textVariables), false), __read(getTextVariables(el)), false);
17039
17046
  });
@@ -17049,7 +17056,7 @@ var repeatCountByFields = function (step, repeatKey) {
17049
17056
  var repeatableServars = step.servar_fields.filter(function (field) {
17050
17057
  return field.servar.repeated &&
17051
17058
  repeatKey &&
17052
- inRepeat(getPositionKey(field), repeatKey, true);
17059
+ inRepeat(getPositionKey$1(field), repeatKey, true);
17053
17060
  });
17054
17061
  var count = 0;
17055
17062
  repeatableServars.forEach(function (servar) {
@@ -17080,13 +17087,13 @@ var stepElementTypes = [
17080
17087
  'videos',
17081
17088
  'tables'
17082
17089
  ];
17083
- var getPositionKey = function (node) {
17090
+ var getPositionKey$1 = function (node) {
17084
17091
  if (!node.position)
17085
17092
  return null;
17086
17093
  return node.position.join(',') || 'root';
17087
17094
  };
17088
17095
  function _collectHideFlags(step, element, visiblePositions, hiddenPositions, repeatKeys, internalId) {
17089
- var elKey = getPositionKey(element);
17096
+ var elKey = getPositionKey$1(element);
17090
17097
  var repeatKey = repeatKeys.find(function (key) { return inRepeat(elKey, key, true); });
17091
17098
  var numRepeats = Math.max(repeatCountByFields(step, repeatKey), repeatCountByTextVariables(step, repeatKey), 1);
17092
17099
  var curRepeats = repeatKey ? numRepeats : 1;
@@ -17121,7 +17128,7 @@ function _collectHideFlags(step, element, visiblePositions, hiddenPositions, rep
17121
17128
  }
17122
17129
  function getVisiblePositions(step, internalId) {
17123
17130
  var repeatGrids = getRepeatedContainers(step);
17124
- var repeatKeys = repeatGrids.map(getPositionKey);
17131
+ var repeatKeys = repeatGrids.map(getPositionKey$1);
17125
17132
  var visiblePositions = {};
17126
17133
  // Efficient data structure for tracking hidden elements
17127
17134
  var hiddenPositions = {};
@@ -17150,7 +17157,7 @@ function getVisibleElements(step, visiblePositions, elementTypes, repeat) {
17150
17157
  return elementTypes.flatMap(function (type) {
17151
17158
  return step[type].flatMap(function (el) {
17152
17159
  var repeatGrid = getRepeatedContainer(step, el);
17153
- var elKey = getPositionKey(el);
17160
+ var elKey = getPositionKey$1(el);
17154
17161
  var elements = [];
17155
17162
  var flags = visiblePositions[elKey];
17156
17163
  flags.forEach(function (flag, index) {
@@ -21106,7 +21113,7 @@ var Element$1 = function (_a) {
21106
21113
  if (elementOnView && onViewElements.includes(fieldId))
21107
21114
  basicProps.onView = function (inView) { return elementOnView(fieldId, inView); };
21108
21115
  if (type === 'progress_bar')
21109
- return (jsx$1(Elements.ProgressBarElement, exports.__assign({}, basicProps, { progress: userProgress, curDepth: curDepth, maxDepth: maxDepth })));
21116
+ return (jsx$1(Elements.ProgressBarElement, exports.__assign({}, basicProps, { progress: userProgress, curDepth: curDepth, maxDepth: maxDepth, stepKey: activeStep === null || activeStep === void 0 ? void 0 : activeStep.key, changeStep: form.changeStep })));
21110
21117
  else if (type === 'image')
21111
21118
  return jsx$1(Elements.ImageElement, exports.__assign({}, basicProps));
21112
21119
  else if (type === 'video')
@@ -22188,12 +22195,6 @@ var ShadowDomHtmlContent = function (_a) {
22188
22195
  } }));
22189
22196
  };
22190
22197
 
22191
- /**
22192
- * StyledContainer
22193
- * This component applies all of the style properties to "Containers" which are used
22194
- * around elements and other "Containers". This component is used by both hosted forms
22195
- * and the editor to render "Containers".
22196
- */
22197
22198
  var StyledContainer = React.forwardRef(function (_a, ref) {
22198
22199
  var _b, _c, _d, _e;
22199
22200
  var _node = _a.node, raw = _a.raw, _f = _a.css, css = _f === void 0 ? {} : _f, viewport = _a.viewport, component = _a.component, _children = _a.children, className = _a.className, _g = _a.viewportOnly, viewportOnly = _g === void 0 ? false : _g, _h = _a.editMode, editMode = _h === void 0 ? false : _h, breakpoint = _a.breakpoint, props = __rest$1(_a, ["node", "raw", "css", "viewport", "component", "children", "className", "viewportOnly", "editMode", "breakpoint"]);
@@ -22965,7 +22966,7 @@ var Subgrid = function (_a) {
22965
22966
  var children = (node.children || []).map(function (child, i) {
22966
22967
  var _a, _b;
22967
22968
  var fieldKey = (_b = (_a = child.servar) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : '';
22968
- return (jsx$1(Subgrid, { tree: child, axis: node.axis, form: form, viewport: viewport }, getPositionKey(child) + ':' + i + ':' + fieldKey));
22969
+ return (jsx$1(Subgrid, { tree: child, axis: node.axis, form: form, viewport: viewport }, getPositionKey$1(child) + ':' + i + ':' + fieldKey));
22969
22970
  });
22970
22971
  if (props.embed_calendly && ((_c = form.calendly) === null || _c === void 0 ? void 0 : _c.api_key)) {
22971
22972
  children.push(jsx$1(CalendlyEmbed, { form: form, successStep: props.calendly_success_step }, 'calendly'));
@@ -22984,7 +22985,7 @@ var buildStepGrid = function (step, viewport, visiblePositions) {
22984
22985
  var map = buildGridMap(step);
22985
22986
  var repeatGrids = getRepeatedContainers(step);
22986
22987
  var repeatKeys = repeatGrids.map(function (repeatGrid) {
22987
- return getPositionKey(repeatGrid);
22988
+ return getPositionKey$1(repeatGrid);
22988
22989
  });
22989
22990
  var tree = buildGridTree(map, [], visiblePositions, repeatKeys, undefined, false);
22990
22991
  return { map: map, tree: tree };
@@ -23042,7 +23043,7 @@ var buildGridMap = function (step) {
23042
23043
  return (rootSubgrid = obj);
23043
23044
  }
23044
23045
  }
23045
- var previous = map[getPositionKey(obj)];
23046
+ var previous = map[getPositionKey$1(obj)];
23046
23047
  var prevObj = {};
23047
23048
  if (previous) {
23048
23049
  prevObj.width = previous.width;
@@ -23051,14 +23052,14 @@ var buildGridMap = function (step) {
23051
23052
  if (type !== 'subgrids') {
23052
23053
  prevObj.isElement = true;
23053
23054
  }
23054
- map[getPositionKey(obj)] = exports.__assign(exports.__assign({}, obj), prevObj);
23055
+ map[getPositionKey$1(obj)] = exports.__assign(exports.__assign({}, obj), prevObj);
23055
23056
  };
23056
23057
  stepElementTypes.forEach(function (type) { var _a; return (_a = step[type]) === null || _a === void 0 ? void 0 : _a.forEach(function (obj) { return addObjectsToMap(obj, type); }); });
23057
23058
  map.root = exports.__assign({ step: step }, rootSubgrid);
23058
23059
  return map;
23059
23060
  };
23060
23061
  var buildGridTree = function (gridMap, position, visiblePositions, repeatKeys, repeatIndex, lastRepeat) {
23061
- var positionKey = getPositionKey({ position: position });
23062
+ var positionKey = getPositionKey$1({ position: position });
23062
23063
  var node = exports.__assign({}, gridMap[positionKey]);
23063
23064
  if (!node)
23064
23065
  return;
@@ -23066,7 +23067,7 @@ var buildGridTree = function (gridMap, position, visiblePositions, repeatKeys, r
23066
23067
  node.lastRepeat = lastRepeat;
23067
23068
  var i = 0;
23068
23069
  var nextPos = __spreadArray(__spreadArray([], __read(position), false), [i], false);
23069
- var nextPosKey = getPositionKey({ position: nextPos });
23070
+ var nextPosKey = getPositionKey$1({ position: nextPos });
23070
23071
  var hasNextChild = gridMap[nextPosKey];
23071
23072
  if (hasNextChild)
23072
23073
  node.children = [];
@@ -23082,7 +23083,7 @@ var buildGridTree = function (gridMap, position, visiblePositions, repeatKeys, r
23082
23083
  }
23083
23084
  i = i + 1;
23084
23085
  nextPos = __spreadArray(__spreadArray([], __read(position), false), [i], false);
23085
- nextPosKey = getPositionKey({ position: nextPos });
23086
+ nextPosKey = getPositionKey$1({ position: nextPos });
23086
23087
  hasNextChild = gridMap[nextPosKey];
23087
23088
  };
23088
23089
  while (hasNextChild) {
@@ -39709,7 +39710,7 @@ function useTrackUserInteraction(formRef, activeStep, stepKey, formName) {
39709
39710
  }, [activeStep, stepKey, formName]);
39710
39711
  }
39711
39712
 
39712
- var LazyAssistantChat = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "AssistantChat" */ './fthry_AssistantChat.DMRqYl7c.js'); }).then(function (n) { return n.AssistantChat; }); });
39713
+ var LazyAssistantChat = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "AssistantChat" */ './fthry_AssistantChat.DQ0U08nB.js'); }).then(function (n) { return n.AssistantChat; }); });
39713
39714
  var AssistantChat = function (props) { return (jsx$1(React.Suspense, exports.__assign({ fallback: null }, { children: jsx$1(LazyAssistantChat, exports.__assign({}, props)) }))); };
39714
39715
 
39715
39716
  var AssistantClient = /** @class */ (function () {
@@ -40409,7 +40410,7 @@ function Form(_a) {
40409
40410
  return changed;
40410
40411
  };
40411
40412
  var getNewStep = function (newKey) { return __awaiter$2(_this, void 0, void 0, function () {
40412
- var newStep, nextStep, nextKey, fields, newHash, _a, curDepth, maxDepth, oldKey;
40413
+ var newStep, nextStep, nextKey, fields, newVisiblePositions, newHash, _a, curDepth, maxDepth, oldKey;
40413
40414
  var _this = this;
40414
40415
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
40415
40416
  return __generator(this, function (_o) {
@@ -40436,11 +40437,13 @@ function Form(_a) {
40436
40437
  fields = (_b = internalState[_internalId]) === null || _b === void 0 ? void 0 : _b.fields;
40437
40438
  if (!fields || !Object.isSealed(fields))
40438
40439
  fields = Object.seal(getAllFields(fieldKeys, Object.keys(hiddenFields), _internalId));
40440
+ newVisiblePositions = getVisiblePositions(newStep, _internalId);
40441
+ preloadStepFields(newStep, newVisiblePositions).catch(function () { });
40439
40442
  setFormInternalState(_internalId, {
40440
40443
  language: language !== null && language !== void 0 ? language : initState.language,
40441
40444
  currentStep: newStep,
40442
40445
  previousStepName: (_c = activeStep === null || activeStep === void 0 ? void 0 : activeStep.key) !== null && _c !== void 0 ? _c : '',
40443
- visiblePositions: getVisiblePositions(newStep, _internalId),
40446
+ visiblePositions: newVisiblePositions,
40444
40447
  client: client,
40445
40448
  fields: fields,
40446
40449
  products: Object.seal(getSimplifiedProducts(integrations === null || integrations === void 0 ? void 0 : integrations.stripe, updateFieldValues, client)),
@@ -40679,7 +40682,7 @@ function Form(_a) {
40679
40682
  // Only resets if value differs from default, minimizes unnecessary updates.
40680
40683
  var newFieldVals_1 = {};
40681
40684
  activeStep.servar_fields.forEach(function (sf) {
40682
- var key = getPositionKey(sf);
40685
+ var key = getPositionKey$1(sf);
40683
40686
  var flags = visiblePositions[key];
40684
40687
  var isRepeated = !!getRepeatedContainer(activeStep, sf);
40685
40688
  if (isRepeated) {
@@ -46305,9 +46308,9 @@ function init(sdkKey, options) {
46305
46308
  if (runningInClient()) {
46306
46309
  // Dynamically load libraries that must be client side
46307
46310
  global.scriptjsLoadPromise = Promise.resolve().then(function () { return require(
46308
- /* webpackChunkName: "scriptjs" */ './fthry_script.CngcPx_9.js'); }).then(function (n) { return n.script; });
46311
+ /* webpackChunkName: "scriptjs" */ './fthry_script.CcpqD6sz.js'); }).then(function (n) { return n.script; });
46309
46312
  global.webfontloaderPromise = Promise.resolve().then(function () { return require(
46310
- /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.BgZRGUoe.js'); }).then(function (n) { return n.webfontloader; });
46313
+ /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.DQj-dIFN.js'); }).then(function (n) { return n.webfontloader; });
46311
46314
  // Client-side tracking logic
46312
46315
  if (initState.userTracking === 'cookie') {
46313
46316
  var cookieKey = "feathery-user-id-".concat(sdkKey);
@@ -46453,7 +46456,7 @@ function getFieldValues() {
46453
46456
  return exports.__assign({}, exports.fieldValues);
46454
46457
  }
46455
46458
  function logFeatheryBadge() {
46456
- console.log('%c Feathery %c v' + "2.38.0" + ' ', // replaced with real version during build
46459
+ console.log('%c Feathery %c v' + "2.39.1" + ' ', // replaced with real version during build
46457
46460
  'background: #e2626e; color: white; padding: 2px 6px; border-radius: 3px 0 0 3px; font-weight: bold;', 'background: #fce7e9; color: #c5495a; padding: 2px 6px; border-radius: 0 3px 3px 0;');
46458
46461
  }
46459
46462
 
@@ -47966,40 +47969,124 @@ breakpoint) {
47966
47969
  return styles.getTarget('inner-container', undefined, viewport === 'mobile');
47967
47970
  };
47968
47971
 
47969
- var AddressLine1 = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "AddressField" */ './fthry_index.71p3lEGO.js'); }); });
47970
- var ButtonGroupField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.Bfi9gaRQ.js'); }); });
47971
- var CheckboxField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxField" */ './fthry_index.DVHeeCAd.js'); }); });
47972
- var CheckboxGroupField = React.lazy(function () {
47973
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.z4phbmML.js'); });
47974
- });
47975
- var ColorPickerField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ColorPickerField" */ './fthry_index.DVl7lCQ4.js'); }); });
47976
- var CustomField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CustomField" */ './fthry_index.CELRWX9K.js'); }); });
47977
- var DateSelectorField = React.lazy(function () {
47978
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "DateSelectorField" */ './fthry_index.DKbXGnnP.js'); });
47979
- });
47980
- var DropdownField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownField" */ './fthry_index.CE4Pt2Be.js'); }); });
47981
- var DropdownMultiField = React.lazy(function () {
47982
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.Bq69xc_i.js'); });
47983
- });
47984
- var FileUploadField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "FileUploadField" */ './fthry_index.Cl5vVnOu.js'); }); });
47985
- var MatrixField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "MatrixField" */ './fthry_index.Da2RxuWz.js'); }); });
47986
- var PasswordField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PasswordField" */ './fthry_index.8WMLSq-m.js'); }); });
47987
- var PaymentMethodField = React.lazy(function () {
47988
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.DBG_F2IV.js'); });
47989
- });
47990
- var PhoneField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PhoneField" */ './fthry_index.BHmognVe.js'); }); });
47991
- var PinInputField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PinInputField" */ './fthry_index.CcDlE6Qp.js'); }); });
47992
- var QRScanner = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "QRScanner" */ './fthry_index.DaWvIjDB.js'); }); });
47993
- var RadioButtonGroupField = React.lazy(function () {
47994
- return Promise.resolve().then(function () { return require(
47995
- /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.VY9IsOXx.js'); });
47996
- });
47997
- var RatingField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "RatingField" */ './fthry_index.DD6R-HZB.js'); }); });
47998
- var SignatureField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SignatureField" */ './fthry_index.DGQK0BX6.js'); }); });
47999
- var SliderField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SliderField" */ './fthry_index.DX0u8QrD.js'); }); });
48000
- var TextField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextField" */ './fthry_index.C1bGkjXK.js'); }); });
48001
- var TextArea = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextArea" */ './fthry_index.DEnbUjkR.js'); }); });
48002
- var Fields = {
47972
+ var fieldLoaders = {
47973
+ AddressLine1: function () {
47974
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "AddressField" */ './fthry_index.CBXhgNiq.js'); });
47975
+ },
47976
+ ButtonGroupField: function () {
47977
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.0uHTYf8v.js'); });
47978
+ },
47979
+ CheckboxField: function () {
47980
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxField" */ './fthry_index.BTKHmnww.js'); });
47981
+ },
47982
+ CheckboxGroupField: function () {
47983
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.C9MjO1_2.js'); });
47984
+ },
47985
+ ColorPickerField: function () {
47986
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "ColorPickerField" */ './fthry_index.ZWEzxCxs.js'); });
47987
+ },
47988
+ CustomField: function () {
47989
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "CustomField" */ './fthry_index.bd_dascE.js'); });
47990
+ },
47991
+ DateSelectorField: function () {
47992
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "DateSelectorField" */ './fthry_index.Bxvep-HH.js'); });
47993
+ },
47994
+ DropdownField: function () {
47995
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownField" */ './fthry_index.EDEcZRri.js'); });
47996
+ },
47997
+ DropdownMultiField: function () {
47998
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.C4fLOWzK.js'); });
47999
+ },
48000
+ FileUploadField: function () {
48001
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "FileUploadField" */ './fthry_index.2hec0Cyq.js'); });
48002
+ },
48003
+ MatrixField: function () {
48004
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "MatrixField" */ './fthry_index.SCbU_F4C.js'); });
48005
+ },
48006
+ PasswordField: function () {
48007
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "PasswordField" */ './fthry_index.BvEoZLvr.js'); });
48008
+ },
48009
+ PaymentMethodField: function () {
48010
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.BCfRfF5k.js'); });
48011
+ },
48012
+ PhoneField: function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PhoneField" */ './fthry_index.iOhM0yii.js'); }); },
48013
+ PinInputField: function () {
48014
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "PinInputField" */ './fthry_index.-lo4kt_U.js'); });
48015
+ },
48016
+ QRScanner: function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "QRScanner" */ './fthry_index.DpAKJ8nY.js'); }); },
48017
+ RadioButtonGroupField: function () {
48018
+ return Promise.resolve().then(function () { return require(
48019
+ /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.hZwAxt4e.js'); });
48020
+ },
48021
+ RatingField: function () {
48022
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "RatingField" */ './fthry_index.D92_iqxj.js'); });
48023
+ },
48024
+ SignatureField: function () {
48025
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "SignatureField" */ './fthry_index.KsIR58CL.js'); });
48026
+ },
48027
+ SliderField: function () {
48028
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "SliderField" */ './fthry_index.Cc253N4g.js'); });
48029
+ },
48030
+ TextField: function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextField" */ './fthry_index.DRJnbdgq.js'); }); },
48031
+ TextArea: function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextArea" */ './fthry_index.Bqr-JETA.js'); }); }
48032
+ };
48033
+ var getPositionKey = function (element) { var _a; return ((_a = element.position) === null || _a === void 0 ? void 0 : _a.join(',')) || 'root'; };
48034
+ // Share the resolved component between preload and render. A separate
48035
+ // React.lazy wrapper can still suspend on its first render even after an
48036
+ // external import() preload has resolved.
48037
+ var createPreloadableField = function (load) {
48038
+ var Component = null;
48039
+ var preloadPromise = null;
48040
+ var loadError = null;
48041
+ var preload = function () {
48042
+ if (!preloadPromise) {
48043
+ loadError = null;
48044
+ preloadPromise = load()
48045
+ .then(function (module) {
48046
+ Component = module.default;
48047
+ return module;
48048
+ })
48049
+ .catch(function (error) {
48050
+ preloadPromise = null;
48051
+ loadError = error;
48052
+ throw error;
48053
+ });
48054
+ }
48055
+ return preloadPromise;
48056
+ };
48057
+ var Field = function (props) {
48058
+ if (Component)
48059
+ return React.createElement(Component, props);
48060
+ if (loadError)
48061
+ throw loadError;
48062
+ throw preload();
48063
+ };
48064
+ Field.preload = preload;
48065
+ return Field;
48066
+ };
48067
+ var AddressLine1 = createPreloadableField(fieldLoaders.AddressLine1);
48068
+ var ButtonGroupField = createPreloadableField(fieldLoaders.ButtonGroupField);
48069
+ var CheckboxField = createPreloadableField(fieldLoaders.CheckboxField);
48070
+ var CheckboxGroupField = createPreloadableField(fieldLoaders.CheckboxGroupField);
48071
+ var ColorPickerField = createPreloadableField(fieldLoaders.ColorPickerField);
48072
+ var CustomField = createPreloadableField(fieldLoaders.CustomField);
48073
+ var DateSelectorField = createPreloadableField(fieldLoaders.DateSelectorField);
48074
+ var DropdownField = createPreloadableField(fieldLoaders.DropdownField);
48075
+ var DropdownMultiField = createPreloadableField(fieldLoaders.DropdownMultiField);
48076
+ var FileUploadField = createPreloadableField(fieldLoaders.FileUploadField);
48077
+ var MatrixField = createPreloadableField(fieldLoaders.MatrixField);
48078
+ var PasswordField = createPreloadableField(fieldLoaders.PasswordField);
48079
+ var PaymentMethodField = createPreloadableField(fieldLoaders.PaymentMethodField);
48080
+ var PhoneField = createPreloadableField(fieldLoaders.PhoneField);
48081
+ var PinInputField = createPreloadableField(fieldLoaders.PinInputField);
48082
+ var QRScanner = createPreloadableField(fieldLoaders.QRScanner);
48083
+ var RadioButtonGroupField = createPreloadableField(fieldLoaders.RadioButtonGroupField);
48084
+ var RatingField = createPreloadableField(fieldLoaders.RatingField);
48085
+ var SignatureField = createPreloadableField(fieldLoaders.SignatureField);
48086
+ var SliderField = createPreloadableField(fieldLoaders.SliderField);
48087
+ var TextField = createPreloadableField(fieldLoaders.TextField);
48088
+ var TextArea = createPreloadableField(fieldLoaders.TextArea);
48089
+ var preloadableFields = {
48003
48090
  AddressLine1: AddressLine1,
48004
48091
  ButtonGroupField: ButtonGroupField,
48005
48092
  CheckboxField: CheckboxField,
@@ -48023,6 +48110,71 @@ var Fields = {
48023
48110
  TextField: TextField,
48024
48111
  TextArea: TextArea
48025
48112
  };
48113
+ var getFieldComponentKey = function (servarType) {
48114
+ switch (servarType) {
48115
+ case 'matrix':
48116
+ return 'MatrixField';
48117
+ case 'date_selector':
48118
+ return 'DateSelectorField';
48119
+ case 'signature':
48120
+ return 'SignatureField';
48121
+ case 'qr_scanner':
48122
+ return 'QRScanner';
48123
+ case 'custom':
48124
+ return 'CustomField';
48125
+ case 'file_upload':
48126
+ return 'FileUploadField';
48127
+ case 'button_group':
48128
+ return 'ButtonGroupField';
48129
+ case 'checkbox':
48130
+ return 'CheckboxField';
48131
+ case 'dropdown':
48132
+ case 'gmap_state':
48133
+ case 'gmap_country':
48134
+ return 'DropdownField';
48135
+ case 'dropdown_multi':
48136
+ return 'DropdownMultiField';
48137
+ case 'pin_input':
48138
+ return 'PinInputField';
48139
+ case 'multiselect':
48140
+ return 'CheckboxGroupField';
48141
+ case 'select':
48142
+ return 'RadioButtonGroupField';
48143
+ case 'hex_color':
48144
+ return 'ColorPickerField';
48145
+ case 'slider':
48146
+ return 'SliderField';
48147
+ case 'rating':
48148
+ return 'RatingField';
48149
+ case 'password':
48150
+ return 'PasswordField';
48151
+ case 'text_area':
48152
+ return 'TextArea';
48153
+ case 'phone_number':
48154
+ return 'PhoneField';
48155
+ case 'gmap_line_1':
48156
+ case 'gmap_city':
48157
+ return 'AddressLine1';
48158
+ case 'payment_method':
48159
+ return 'PaymentMethodField';
48160
+ default:
48161
+ return 'TextField';
48162
+ }
48163
+ };
48164
+ var preloadStepFields = function (step, visiblePositions) {
48165
+ var fieldComponentKeys = new Set();
48166
+ step.servar_fields.forEach(function (element) {
48167
+ var _a;
48168
+ var visibleFlags = visiblePositions[getPositionKey(element)];
48169
+ if (visibleFlags === null || visibleFlags === void 0 ? void 0 : visibleFlags.some(Boolean)) {
48170
+ fieldComponentKeys.add(getFieldComponentKey((_a = element.servar) === null || _a === void 0 ? void 0 : _a.type));
48171
+ }
48172
+ });
48173
+ return Promise.all(Array.from(fieldComponentKeys).map(function (key) {
48174
+ return preloadableFields[key].preload();
48175
+ }));
48176
+ };
48177
+ var Fields = exports.__assign({}, preloadableFields);
48026
48178
  var justifyContentTextAlignMap = {
48027
48179
  'flex-start': 'left',
48028
48180
  center: 'center',
@@ -48386,6 +48538,15 @@ function applyImageStyles(element, responsiveStyles) {
48386
48538
  responsiveStyles.applyWidth('dimension');
48387
48539
  return responsiveStyles;
48388
48540
  }
48541
+ function getImmediateDocumentUrl(_a) {
48542
+ var editMode = _a.editMode, imageFieldSource = _a.imageFieldSource, sourceImage = _a.sourceImage;
48543
+ if (imageFieldSource && typeof imageFieldSource === 'string') {
48544
+ return imageFieldSource;
48545
+ }
48546
+ if (!imageFieldSource)
48547
+ return sourceImage || PLACEHOLDER_IMAGE;
48548
+ return editMode ? PLACEHOLDER_IMAGE : '';
48549
+ }
48389
48550
  function ImageElement(_a) {
48390
48551
  var _b, _c;
48391
48552
  var element = _a.element, responsiveStyles = _a.responsiveStyles, _d = _a.elementProps, elementProps = _d === void 0 ? {} : _d, editMode = _a.editMode, children = _a.children;
@@ -48394,29 +48555,26 @@ function ImageElement(_a) {
48394
48555
  if (Array.isArray(imageFieldSource)) {
48395
48556
  imageFieldSource = imageFieldSource[(_c = element.repeat) !== null && _c !== void 0 ? _c : 0];
48396
48557
  }
48397
- var hasSourceImage = !!element.properties.source_image && !imageFieldSource;
48398
- var _e = __read(React.useState(editMode && !hasSourceImage ? PLACEHOLDER_IMAGE : ''), 2), documentUrl = _e[0], setDocumentUrl = _e[1];
48399
- var _f = __read(React.useState(''), 2), documentType = _f[0], setDocumentType = _f[1];
48400
- var _g = __read(React.useState(true), 2), applyWidth = _g[0], setApplyWidth = _g[1];
48558
+ var shouldResolveImageSource = Boolean(imageFieldSource && typeof imageFieldSource !== 'string');
48559
+ var immediateDocumentUrl = getImmediateDocumentUrl({
48560
+ editMode: editMode,
48561
+ imageFieldSource: imageFieldSource,
48562
+ sourceImage: element.properties.source_image
48563
+ });
48564
+ var _e = __read(React.useState(null), 2), resolvedDocumentData = _e[0], setResolvedDocumentData = _e[1];
48565
+ var _f = __read(React.useState(true), 2), applyWidth = _f[0], setApplyWidth = _f[1];
48401
48566
  var styles = React.useMemo(function () { return applyImageStyles(element, responsiveStyles); }, [responsiveStyles]);
48402
48567
  React.useEffect(function () {
48403
- if (imageFieldSource) {
48404
- if (typeof imageFieldSource === 'string') {
48405
- setDocumentType('');
48406
- setDocumentUrl(imageFieldSource);
48407
- }
48408
- else {
48409
- getRenderData(imageFieldSource).then(function (data) {
48410
- setDocumentType(data.type);
48411
- setDocumentUrl(data.url);
48412
- });
48413
- }
48414
- }
48415
- else {
48416
- setDocumentUrl(element.properties.source_image || PLACEHOLDER_IMAGE);
48417
- setDocumentType('');
48418
- }
48419
- }, [imageFieldSource, element.properties.source_image]);
48568
+ if (!shouldResolveImageSource)
48569
+ return;
48570
+ getRenderData(imageFieldSource).then(setResolvedDocumentData);
48571
+ }, [imageFieldSource, shouldResolveImageSource]);
48572
+ var documentUrl = shouldResolveImageSource && resolvedDocumentData
48573
+ ? resolvedDocumentData.url
48574
+ : immediateDocumentUrl;
48575
+ var documentType = shouldResolveImageSource && resolvedDocumentData
48576
+ ? resolvedDocumentData.type
48577
+ : '';
48420
48578
  var displayPDF = documentUrl && documentType === 'application/pdf';
48421
48579
  return (jsxs("div", exports.__assign({ css: exports.__assign(exports.__assign({ width: '100%', height: '100%' }, styles.getTarget('imageContainer')), { maxHeight: '100%', position: 'relative', display: 'flex', alignItems: 'center' }) }, { children: [children, displayPDF ? (jsx$1("embed", exports.__assign({ type: 'application/pdf', width: '100%', height: '100%', alt: '', "aria-label": element.properties.aria_label, src: documentUrl + '#view=FitH', css: exports.__assign(exports.__assign({ border: 'none', objectFit: 'contain', width: '100%', maxWidth: '100%', height: '100%', maxHeight: '100%' }, styles.getTarget('image')), (applyWidth ? styles.getTarget('dimension') : {})), onLoad: function () { return setApplyWidth(false); } }, elementProps))) : (jsx$1("img", exports.__assign({ src: documentUrl || undefined, alt: '', "aria-label": element.properties.aria_label, css: exports.__assign(exports.__assign({ objectFit: 'contain', width: '100%', maxWidth: '100%', height: '100%', maxHeight: '100%' }, styles.getTarget('image')), (applyWidth ? styles.getTarget('dimension') : {})), onLoad: function () { return setApplyWidth(false); } }, elementProps)))] })));
48422
48580
  }
@@ -48728,33 +48886,121 @@ function ButtonElement(_a) {
48728
48886
 
48729
48887
  var formerProgress;
48730
48888
  function SmoothBar(_a) {
48731
- var styles = _a.styles, percent = _a.percent;
48732
- var _b = __read(React.useState(formerProgress), 2), curProgress = _b[0], setCurProgress = _b[1];
48889
+ var _b, _c;
48890
+ var styles = _a.styles, percent = _a.percent, _d = _a.vertical, vertical = _d === void 0 ? false : _d;
48891
+ var _e = __read(React.useState(formerProgress), 2), curProgress = _e[0], setCurProgress = _e[1];
48733
48892
  React.useEffect(function () {
48734
- // This allows the user to see a smooth progress bar animation from former progress amount to current amount
48735
48893
  if (percent !== curProgress) {
48736
48894
  setCurProgress(percent);
48737
48895
  formerProgress = percent;
48738
48896
  }
48739
48897
  }, [percent]);
48740
- return (jsx$1("div", exports.__assign({ css: exports.__assign({ height: '0.4rem', width: '100%', borderRadius: 0, display: 'flex', backgroundColor: '#e9ecef' }, styles.getTarget('barWrapper')) }, { children: jsx$1("div", { style: { width: "".concat(curProgress, "%") }, css: exports.__assign(exports.__assign({ transition: 'width 0.6s ease' }, styles.getTarget('barWrapper', true)), styles.getTarget('bar')) }) })));
48898
+ var mainDim = vertical ? 'height' : 'width';
48899
+ var crossDim = vertical ? 'width' : 'height';
48900
+ return (jsx$1("div", exports.__assign({ css: exports.__assign((_b = {}, _b[crossDim] = '0.4rem', _b[mainDim] = '100%', _b.flexDirection = vertical ? 'column-reverse' : undefined, _b.borderRadius = 0, _b.display = 'flex', _b.backgroundColor = '#e9ecef', _b), styles.getTarget('barWrapper')) }, { children: jsx$1("div", { style: (_c = {}, _c[mainDim] = "".concat(curProgress, "%"), _c), css: exports.__assign(exports.__assign({ transition: "".concat(mainDim, " 0.6s ease") }, styles.getTarget('barWrapper', true)), styles.getTarget('bar')) }) })));
48741
48901
  }
48742
48902
 
48743
48903
  function SegmentBar(_a) {
48744
- var styles = _a.styles, percent = _a.percent, numSegments = _a.numSegments;
48904
+ var _b, _c;
48905
+ var styles = _a.styles, percent = _a.percent, numSegments = _a.numSegments, _d = _a.vertical, vertical = _d === void 0 ? false : _d;
48906
+ var mainDim = vertical ? 'height' : 'width';
48907
+ var crossDim = vertical ? 'width' : 'height';
48908
+ var spacerProp = vertical ? 'marginBottom' : 'marginRight';
48745
48909
  var numFilled = Math.floor(percent / (100 / numSegments));
48746
48910
  var filledSegments = [];
48747
48911
  for (var i = 0; i < numFilled; i++) {
48748
48912
  var spacer = i === numSegments - 1 ? 0 : 5;
48749
- filledSegments.push(jsx$1("div", { css: exports.__assign(exports.__assign({ width: "calc(".concat(100 / numSegments, "% - ").concat(spacer, "px)"), marginRight: "".concat(spacer, "px"), borderRadius: '2px' }, styles.getTarget('barWrapper', true)), styles.getTarget('bar')) }, i));
48913
+ filledSegments.push(jsx$1("div", { css: exports.__assign(exports.__assign((_b = {}, _b[mainDim] = "calc(".concat(100 / numSegments, "% - ").concat(spacer, "px)"), _b[spacerProp] = "".concat(spacer, "px"), _b.borderRadius = '2px', _b), styles.getTarget('barWrapper', true)), styles.getTarget('bar')) }, i));
48750
48914
  }
48751
- return (jsx$1("div", exports.__assign({ style: {
48752
- height: '0.4rem',
48753
- width: '100%',
48754
- display: 'flex',
48755
- backgroundColor: '#e9ecef',
48756
- borderRadius: '2px'
48757
- } }, { children: filledSegments })));
48915
+ return (jsx$1("div", exports.__assign({ style: (_c = {},
48916
+ _c[crossDim] = '0.4rem',
48917
+ _c[mainDim] = '100%',
48918
+ _c.flexDirection = vertical ? 'column-reverse' : undefined,
48919
+ _c.display = 'flex',
48920
+ _c.backgroundColor = '#e9ecef',
48921
+ _c.borderRadius = '2px',
48922
+ _c) }, { children: filledSegments })));
48923
+ }
48924
+
48925
+ var CIRCLE_SIZE = 28;
48926
+ var CONNECTOR_GAP = 6;
48927
+ function StepperBar(_a) {
48928
+ var _b, _c;
48929
+ var styles = _a.styles, stepConfigs = _a.stepConfigs, stepKey = _a.stepKey, _d = _a.textPlacement, textPlacement = _d === void 0 ? 'bottom' : _d, onStepClick = _a.onStepClick, _e = _a.vertical, vertical = _e === void 0 ? false : _e, style = _a.style;
48930
+ var barStyles = styles.getTarget('bar');
48931
+ var showLabels = textPlacement !== 'none';
48932
+ var steps = stepConfigs.map(function (s) { return s.label; });
48933
+ var activeStep = stepKey
48934
+ ? Math.max(0, stepConfigs.findIndex(function (s) { return s.step_key === stepKey; }))
48935
+ : 0;
48936
+ var mainDim = vertical ? 'height' : 'width';
48937
+ var crossAlign = vertical ? 'alignItems' : 'justifyContent';
48938
+ var circleStyleFor = function (isCompleted, isActive) {
48939
+ if (isActive || isCompleted)
48940
+ return exports.__assign(exports.__assign({}, barStyles), { color: '#fff' });
48941
+ return { backgroundColor: '#e9ecef', color: '#888' };
48942
+ };
48943
+ var circleContent = function (isCompleted, index) {
48944
+ return isCompleted ? (jsx$1("svg", exports.__assign({ width: '14', height: '14', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '2.5', strokeLinecap: 'round', strokeLinejoin: 'round' }, { children: jsx$1("polyline", { points: '20 6 9 17 4 12' }) }))) : (index + 1);
48945
+ };
48946
+ var renderNodes = function () {
48947
+ return steps.map(function (_, index) {
48948
+ var _a;
48949
+ var isCompleted = index < activeStep;
48950
+ var isActive = index === activeStep;
48951
+ var isLast = index === steps.length - 1;
48952
+ var sKey = (_a = stepConfigs === null || stepConfigs === void 0 ? void 0 : stepConfigs[index]) === null || _a === void 0 ? void 0 : _a.step_key;
48953
+ var isClickable = isCompleted && !!onStepClick && !!sKey;
48954
+ var connectorStyle = vertical
48955
+ ? {
48956
+ width: '2px',
48957
+ flex: 1,
48958
+ marginTop: "".concat(CONNECTOR_GAP, "px"),
48959
+ marginBottom: "".concat(CONNECTOR_GAP, "px")
48960
+ }
48961
+ : {
48962
+ flex: 1,
48963
+ height: '2px',
48964
+ marginLeft: "".concat(CONNECTOR_GAP, "px"),
48965
+ marginRight: "".concat(CONNECTOR_GAP, "px")
48966
+ };
48967
+ return (jsxs(React.Fragment, { children: [jsx$1("div", exports.__assign({ css: exports.__assign({ width: "".concat(CIRCLE_SIZE, "px"), height: "".concat(CIRCLE_SIZE, "px"), borderRadius: '50%', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '13px', fontWeight: 600, flexShrink: 0, cursor: isClickable ? 'pointer' : 'default', transition: 'opacity 0.15s ease', '&:hover': isClickable ? { opacity: 0.7 } : {} }, circleStyleFor(isCompleted, isActive)), onClick: isClickable ? function () { return onStepClick(sKey); } : undefined }, { children: circleContent(isCompleted, index) })), !isLast && (jsx$1("div", { css: exports.__assign(exports.__assign({}, connectorStyle), (isCompleted ? barStyles : { backgroundColor: '#e9ecef' })) }))] }, index));
48968
+ });
48969
+ };
48970
+ var renderLabelItems = function () {
48971
+ return steps.map(function (label, index) {
48972
+ var _a;
48973
+ var isLast = index === steps.length - 1;
48974
+ return (jsxs(React.Fragment, { children: [jsx$1("div", exports.__assign({ style: (_a = {},
48975
+ _a[mainDim] = "".concat(CIRCLE_SIZE, "px"),
48976
+ _a.display = 'flex',
48977
+ _a[crossAlign] = 'center',
48978
+ _a.flexShrink = 0,
48979
+ _a) }, { children: jsx$1("span", exports.__assign({ css: exports.__assign(exports.__assign({ fontSize: '12px', whiteSpace: 'nowrap' }, (vertical ? {} : { textAlign: 'center' })), styles.getTarget('barContainer')) }, { children: label })) })), !isLast && (jsx$1("div", { style: exports.__assign({ flex: 1 }, (vertical
48980
+ ? {
48981
+ marginTop: "".concat(CONNECTOR_GAP, "px"),
48982
+ marginBottom: "".concat(CONNECTOR_GAP, "px")
48983
+ }
48984
+ : {
48985
+ marginLeft: "".concat(CONNECTOR_GAP, "px"),
48986
+ marginRight: "".concat(CONNECTOR_GAP, "px")
48987
+ })) }))] }, index));
48988
+ });
48989
+ };
48990
+ if (vertical) {
48991
+ // textPlacement 'bottom' → labels on left, 'top' → labels on right
48992
+ var labelsOnLeft = textPlacement === 'bottom';
48993
+ return (jsxs("div", exports.__assign({ style: exports.__assign({ display: 'flex', flexDirection: labelsOnLeft ? 'row-reverse' : 'row', height: '100%', gap: showLabels ? '10px' : '0' }, style) }, { children: [jsx$1("div", exports.__assign({ style: {
48994
+ display: 'flex',
48995
+ flexDirection: 'column',
48996
+ alignItems: 'center',
48997
+ width: "".concat(CIRCLE_SIZE, "px")
48998
+ } }, { children: renderNodes() })), showLabels && (jsx$1("div", exports.__assign({ style: { display: 'flex', flexDirection: 'column' } }, { children: renderLabelItems() })))] })));
48999
+ }
49000
+ // Horizontal layout
49001
+ var labelsOnTop = textPlacement === 'top';
49002
+ var marginProp = labelsOnTop ? 'marginBottom' : 'marginTop';
49003
+ return (jsxs("div", exports.__assign({ style: { display: 'flex', flexDirection: 'column', width: '100%' } }, { children: [showLabels && labelsOnTop && (jsx$1("div", exports.__assign({ style: (_b = { display: 'flex' }, _b[marginProp] = '6px', _b) }, { children: renderLabelItems() }))), jsx$1("div", exports.__assign({ style: { display: 'flex', alignItems: 'center' } }, { children: renderNodes() })), showLabels && !labelsOnTop && (jsx$1("div", exports.__assign({ style: (_c = { display: 'flex' }, _c[marginProp] = '6px', _c) }, { children: renderLabelItems() })))] })));
48758
49004
  }
48759
49005
 
48760
49006
  function applyProgressBarStyles(responsiveStyles) {
@@ -48773,9 +49019,14 @@ function applyProgressBarStyles(responsiveStyles) {
48773
49019
  return responsiveStyles;
48774
49020
  }
48775
49021
  function ProgressBarElement(_a) {
48776
- var _b, _c;
48777
- var element = _a.element, responsiveStyles = _a.responsiveStyles, progress = _a.progress, _d = _a.curDepth, curDepth = _d === void 0 ? 1 : _d, _e = _a.maxDepth, maxDepth = _e === void 0 ? 1 : _e, _f = _a.elementProps, elementProps = _f === void 0 ? {} : _f, children = _a.children;
49022
+ var _b, _c, _d, _e, _f;
49023
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, progress = _a.progress, _g = _a.curDepth, curDepth = _g === void 0 ? 1 : _g, _h = _a.maxDepth, maxDepth = _h === void 0 ? 1 : _h, stepKey = _a.stepKey, changeStep = _a.changeStep, _j = _a.elementProps, elementProps = _j === void 0 ? {} : _j, children = _a.children;
48778
49024
  var styles = React.useMemo(function () { return applyProgressBarStyles(responsiveStyles); }, [responsiveStyles]);
49025
+ var vertical = element.styles.bar_direction === 'vertical';
49026
+ var containerProps = exports.__assign({ css: exports.__assign(exports.__assign({ display: 'flex', flexDirection: 'column', position: 'relative', width: '100%' }, (vertical && { height: '100%' })), styles.getTarget('barContainer')) }, elementProps);
49027
+ if ((_b = element.properties) === null || _b === void 0 ? void 0 : _b.stepper) {
49028
+ return (jsxs("div", exports.__assign({}, containerProps, { children: [children, jsx$1(StepperBar, { styles: styles, stepConfigs: (_d = (_c = element.properties) === null || _c === void 0 ? void 0 : _c.stepper_steps) !== null && _d !== void 0 ? _d : [], stepKey: stepKey, textPlacement: element.styles.percent_text_layout, onStepClick: changeStep, vertical: vertical, style: vertical ? { flex: 1 } : undefined })] })));
49029
+ }
48779
49030
  var userProgress, userSegments;
48780
49031
  if (![null, undefined].includes(progress)) {
48781
49032
  if (typeof progress === 'number') {
@@ -48783,25 +49034,34 @@ function ProgressBarElement(_a) {
48783
49034
  }
48784
49035
  else {
48785
49036
  userProgress = progress.progress;
48786
- userSegments = (_b = progress.segments) !== null && _b !== void 0 ? _b : element.properties.num_segments;
49037
+ userSegments = (_e = progress.segments) !== null && _e !== void 0 ? _e : element.properties.num_segments;
48787
49038
  }
48788
49039
  }
48789
- userProgress = userProgress !== null && userProgress !== void 0 ? userProgress : (_c = element.properties) === null || _c === void 0 ? void 0 : _c.progress;
49040
+ userProgress = userProgress !== null && userProgress !== void 0 ? userProgress : (_f = element.properties) === null || _f === void 0 ? void 0 : _f.progress;
48790
49041
  var percent = isNum(userProgress)
48791
49042
  ? userProgress
48792
49043
  : Math.round((100 * (curDepth + 1)) / ((maxDepth || 1) + 1));
49044
+ var textPlacement = element.styles.percent_text_layout;
49045
+ var showText = textPlacement && textPlacement !== 'none';
48793
49046
  var BarComponent = userSegments ? SegmentBar : SmoothBar;
48794
49047
  var progressBarElements = [
48795
- jsx$1(BarComponent, { styles: styles, percent: percent, numSegments: userSegments }, 'progress')
49048
+ jsx$1(BarComponent, { styles: styles, percent: percent, numSegments: userSegments, vertical: vertical }, 'progress')
48796
49049
  ];
48797
- var completionPercentage = (jsx$1("div", exports.__assign({ style: { width: '100%', textAlign: 'center' } }, { children: "".concat(percent, "% completed") }), 'completionPercentage'));
48798
- if (element.styles.percent_text_layout === 'top') {
49050
+ var completionPercentage = vertical ? (jsx$1("div", exports.__assign({ style: {
49051
+ display: 'flex',
49052
+ alignItems: 'center',
49053
+ padding: '0 8px',
49054
+ whiteSpace: 'nowrap'
49055
+ } }, { children: "".concat(percent, "% completed") }), 'completionPercentage')) : (jsx$1("div", exports.__assign({ style: { width: '100%', textAlign: 'center' } }, { children: "".concat(percent, "% completed") }), 'completionPercentage'));
49056
+ if (textPlacement === 'top') {
48799
49057
  progressBarElements.unshift(completionPercentage);
48800
49058
  }
48801
- else if (element.styles.percent_text_layout === 'bottom') {
49059
+ else if (textPlacement === 'bottom') {
48802
49060
  progressBarElements.push(completionPercentage);
48803
49061
  }
48804
- return (jsxs("div", exports.__assign({ css: exports.__assign({ display: 'flex', flexDirection: 'column', position: 'relative', width: '100%' }, styles.getTarget('barContainer')) }, elementProps, { children: [children, progressBarElements] })));
49062
+ // When vertical with text beside the bar, switch to row layout
49063
+ var flexDirection = vertical && showText ? 'row' : 'column';
49064
+ return (jsxs("div", exports.__assign({}, containerProps, { css: exports.__assign(exports.__assign({}, containerProps.css), { flexDirection: flexDirection }) }, { children: [children, progressBarElements] })));
48805
49065
  }
48806
49066
 
48807
49067
  var shimmerFields = [
@@ -48948,7 +49208,7 @@ function ElementSkeleton(_a) {
48948
49208
  }
48949
49209
  var templateObject_1;
48950
49210
 
48951
- var TableElement = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TableElement" */ './fthry_index.B8RLVADy.js'); }); });
49211
+ var TableElement = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TableElement" */ './fthry_index.nVNuvtTk.js'); }); });
48952
49212
  var Basic = {
48953
49213
  ImageElement: ImageElement,
48954
49214
  VideoElement: VideoElement,