@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
@@ -6107,12 +6107,12 @@ function requireUtils () {
6107
6107
  return response;
6108
6108
  });
6109
6109
  }
6110
- function createHttpHelpers(sdkKey, formId, userId, getFieldValues, updateFieldData, offlineHandler) {
6110
+ function createHttpHelpers(sdkKey, entityId, userId, getFieldValues, updateFieldData, offlineHandler, entityType = 'form') {
6111
6111
  const helpers = {};
6112
6112
  ['get', 'patch', 'post', 'put', 'delete'].forEach((method) => (helpers[method] = async (url, data, headers) => {
6113
6113
  if (!url)
6114
6114
  return {};
6115
- const response = await (0, api_1.runCustomRequest)(sdkKey, formId, { method: method.toUpperCase(), url, data, headers }, userId, getFieldValues?.(), offlineHandler);
6115
+ const response = await (0, api_1.runCustomRequest)(sdkKey, entityId, { method: method.toUpperCase(), url, data, headers }, userId, getFieldValues?.(), offlineHandler, entityType);
6116
6116
  if (!response)
6117
6117
  return {};
6118
6118
  if (response.field_values && updateFieldData) {
@@ -6128,7 +6128,7 @@ function requireUtils () {
6128
6128
  helpers.connect = async (name, data, headers) => {
6129
6129
  if (!name)
6130
6130
  return {};
6131
- const response = await (0, api_1.runCustomRequest)(sdkKey, formId, { name, data, headers }, userId, getFieldValues?.(), offlineHandler);
6131
+ const response = await (0, api_1.runCustomRequest)(sdkKey, entityId, { name, data, headers }, userId, getFieldValues?.(), offlineHandler, entityType);
6132
6132
  if (!response)
6133
6133
  return {};
6134
6134
  if (response.field_values && updateFieldData) {
@@ -6215,7 +6215,7 @@ function requireApi () {
6215
6215
  let meetingUrl;
6216
6216
  let variantPerFile;
6217
6217
  let variantMode;
6218
- let confidenceScoresCompleted;
6218
+ let waitForConfidenceScores;
6219
6219
  if (typeof options === 'object') {
6220
6220
  runAsync = !options.waitForCompletion;
6221
6221
  pages = options.pages;
@@ -6223,7 +6223,7 @@ function requireApi () {
6223
6223
  meetingUrl = options.meetingUrl;
6224
6224
  variantPerFile = options.variantPerFile;
6225
6225
  variantMode = options.variantMode;
6226
- confidenceScoresCompleted = options.confidenceScoresCompleted;
6226
+ waitForConfidenceScores = options.waitForConfidenceScores;
6227
6227
  }
6228
6228
  else {
6229
6229
  // deprecated usage, options is runAsync
@@ -6247,7 +6247,7 @@ function requireApi () {
6247
6247
  body: JSON.stringify(data),
6248
6248
  });
6249
6249
  const response = await res?.json();
6250
- 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}`;
6250
+ 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}`;
6251
6251
  const CHECK_INTERVAL = pollCheckInterval ?? 2000;
6252
6252
  const MAX_TIME = pollMaxTime ?? 3 * 60 * 1000;
6253
6253
  if (runAsync) {
@@ -6360,10 +6360,9 @@ function requireApi () {
6360
6360
  };
6361
6361
  await (0, utils_1.apiFetch)(sdkKey, url, data);
6362
6362
  }
6363
- function runCustomRequest(sdkKey, formId, payload, userId, fieldValues, offlineHandler) {
6364
- const data = {
6363
+ function runCustomRequest(sdkKey, entityId, payload, userId, fieldValues, offlineHandler, entityType = 'form') {
6364
+ let data = {
6365
6365
  fuser_key: userId,
6366
- form_key: formId,
6367
6366
  name: payload.name,
6368
6367
  method: payload.method,
6369
6368
  url: payload.url,
@@ -6371,7 +6370,15 @@ function requireApi () {
6371
6370
  headers: payload.headers,
6372
6371
  field_values: fieldValues,
6373
6372
  };
6374
- const url = `${(0, utils_1.getStaticUrl)()}custom_request/`;
6373
+ let url;
6374
+ if (entityType === 'extraction') {
6375
+ data.extraction_id = entityId;
6376
+ url = `${(0, utils_1.getStaticUrl)()}ai/custom_request/`;
6377
+ }
6378
+ else {
6379
+ data.form_key = entityId;
6380
+ url = `${(0, utils_1.getStaticUrl)()}custom_request/`;
6381
+ }
6375
6382
  const options = {
6376
6383
  headers: { 'Content-Type': 'application/json' },
6377
6384
  method: 'POST',
@@ -16914,8 +16921,8 @@ function inRepeat(elementKey, parentKey, addCommaToElement) {
16914
16921
  */
16915
16922
  function getRepeatedContainer(step, element) {
16916
16923
  return getRepeatedContainers(step).find(function (subgrid) {
16917
- var elKey = getPositionKey(element);
16918
- var subgridKey = getPositionKey(subgrid);
16924
+ var elKey = getPositionKey$1(element);
16925
+ var subgridKey = getPositionKey$1(subgrid);
16919
16926
  return inRepeat(elKey, subgridKey);
16920
16927
  });
16921
16928
  }
@@ -16935,8 +16942,8 @@ function getRepeatedContainers(step) {
16935
16942
  */
16936
16943
  function getFieldsInRepeat(step, repeatContainer) {
16937
16944
  return step.servar_fields.filter(function (field) {
16938
- var positionKey = getPositionKey(field);
16939
- var repeatKey = getPositionKey(repeatContainer);
16945
+ var positionKey = getPositionKey$1(field);
16946
+ var repeatKey = getPositionKey$1(repeatContainer);
16940
16947
  return inRepeat(positionKey, repeatKey);
16941
16948
  });
16942
16949
  }
@@ -17012,7 +17019,7 @@ var getTextVariables = function (el) {
17012
17019
  };
17013
17020
  var repeatCountByTextVariables = function (step, repeatKey) {
17014
17021
  var textVariables = [];
17015
- __spreadArray(__spreadArray([], __read(step.buttons), false), __read(step.texts), false).filter(function (el) { return repeatKey && inRepeat(getPositionKey(el), repeatKey, true); })
17022
+ __spreadArray(__spreadArray([], __read(step.buttons), false), __read(step.texts), false).filter(function (el) { return repeatKey && inRepeat(getPositionKey$1(el), repeatKey, true); })
17016
17023
  .forEach(function (el) {
17017
17024
  textVariables = __spreadArray(__spreadArray([], __read(textVariables), false), __read(getTextVariables(el)), false);
17018
17025
  });
@@ -17028,7 +17035,7 @@ var repeatCountByFields = function (step, repeatKey) {
17028
17035
  var repeatableServars = step.servar_fields.filter(function (field) {
17029
17036
  return field.servar.repeated &&
17030
17037
  repeatKey &&
17031
- inRepeat(getPositionKey(field), repeatKey, true);
17038
+ inRepeat(getPositionKey$1(field), repeatKey, true);
17032
17039
  });
17033
17040
  var count = 0;
17034
17041
  repeatableServars.forEach(function (servar) {
@@ -17059,13 +17066,13 @@ var stepElementTypes = [
17059
17066
  'videos',
17060
17067
  'tables'
17061
17068
  ];
17062
- var getPositionKey = function (node) {
17069
+ var getPositionKey$1 = function (node) {
17063
17070
  if (!node.position)
17064
17071
  return null;
17065
17072
  return node.position.join(',') || 'root';
17066
17073
  };
17067
17074
  function _collectHideFlags(step, element, visiblePositions, hiddenPositions, repeatKeys, internalId) {
17068
- var elKey = getPositionKey(element);
17075
+ var elKey = getPositionKey$1(element);
17069
17076
  var repeatKey = repeatKeys.find(function (key) { return inRepeat(elKey, key, true); });
17070
17077
  var numRepeats = Math.max(repeatCountByFields(step, repeatKey), repeatCountByTextVariables(step, repeatKey), 1);
17071
17078
  var curRepeats = repeatKey ? numRepeats : 1;
@@ -17100,7 +17107,7 @@ function _collectHideFlags(step, element, visiblePositions, hiddenPositions, rep
17100
17107
  }
17101
17108
  function getVisiblePositions(step, internalId) {
17102
17109
  var repeatGrids = getRepeatedContainers(step);
17103
- var repeatKeys = repeatGrids.map(getPositionKey);
17110
+ var repeatKeys = repeatGrids.map(getPositionKey$1);
17104
17111
  var visiblePositions = {};
17105
17112
  // Efficient data structure for tracking hidden elements
17106
17113
  var hiddenPositions = {};
@@ -17129,7 +17136,7 @@ function getVisibleElements(step, visiblePositions, elementTypes, repeat) {
17129
17136
  return elementTypes.flatMap(function (type) {
17130
17137
  return step[type].flatMap(function (el) {
17131
17138
  var repeatGrid = getRepeatedContainer(step, el);
17132
- var elKey = getPositionKey(el);
17139
+ var elKey = getPositionKey$1(el);
17133
17140
  var elements = [];
17134
17141
  var flags = visiblePositions[elKey];
17135
17142
  flags.forEach(function (flag, index) {
@@ -21085,7 +21092,7 @@ var Element$1 = function (_a) {
21085
21092
  if (elementOnView && onViewElements.includes(fieldId))
21086
21093
  basicProps.onView = function (inView) { return elementOnView(fieldId, inView); };
21087
21094
  if (type === 'progress_bar')
21088
- return (jsx$1(Elements.ProgressBarElement, __assign({}, basicProps, { progress: userProgress, curDepth: curDepth, maxDepth: maxDepth })));
21095
+ return (jsx$1(Elements.ProgressBarElement, __assign({}, basicProps, { progress: userProgress, curDepth: curDepth, maxDepth: maxDepth, stepKey: activeStep === null || activeStep === void 0 ? void 0 : activeStep.key, changeStep: form.changeStep })));
21089
21096
  else if (type === 'image')
21090
21097
  return jsx$1(Elements.ImageElement, __assign({}, basicProps));
21091
21098
  else if (type === 'video')
@@ -22167,12 +22174,6 @@ var ShadowDomHtmlContent = function (_a) {
22167
22174
  } }));
22168
22175
  };
22169
22176
 
22170
- /**
22171
- * StyledContainer
22172
- * This component applies all of the style properties to "Containers" which are used
22173
- * around elements and other "Containers". This component is used by both hosted forms
22174
- * and the editor to render "Containers".
22175
- */
22176
22177
  var StyledContainer = forwardRef(function (_a, ref) {
22177
22178
  var _b, _c, _d, _e;
22178
22179
  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"]);
@@ -22944,7 +22945,7 @@ var Subgrid = function (_a) {
22944
22945
  var children = (node.children || []).map(function (child, i) {
22945
22946
  var _a, _b;
22946
22947
  var fieldKey = (_b = (_a = child.servar) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : '';
22947
- return (jsx$1(Subgrid, { tree: child, axis: node.axis, form: form, viewport: viewport }, getPositionKey(child) + ':' + i + ':' + fieldKey));
22948
+ return (jsx$1(Subgrid, { tree: child, axis: node.axis, form: form, viewport: viewport }, getPositionKey$1(child) + ':' + i + ':' + fieldKey));
22948
22949
  });
22949
22950
  if (props.embed_calendly && ((_c = form.calendly) === null || _c === void 0 ? void 0 : _c.api_key)) {
22950
22951
  children.push(jsx$1(CalendlyEmbed, { form: form, successStep: props.calendly_success_step }, 'calendly'));
@@ -22963,7 +22964,7 @@ var buildStepGrid = function (step, viewport, visiblePositions) {
22963
22964
  var map = buildGridMap(step);
22964
22965
  var repeatGrids = getRepeatedContainers(step);
22965
22966
  var repeatKeys = repeatGrids.map(function (repeatGrid) {
22966
- return getPositionKey(repeatGrid);
22967
+ return getPositionKey$1(repeatGrid);
22967
22968
  });
22968
22969
  var tree = buildGridTree(map, [], visiblePositions, repeatKeys, undefined, false);
22969
22970
  return { map: map, tree: tree };
@@ -23021,7 +23022,7 @@ var buildGridMap = function (step) {
23021
23022
  return (rootSubgrid = obj);
23022
23023
  }
23023
23024
  }
23024
- var previous = map[getPositionKey(obj)];
23025
+ var previous = map[getPositionKey$1(obj)];
23025
23026
  var prevObj = {};
23026
23027
  if (previous) {
23027
23028
  prevObj.width = previous.width;
@@ -23030,14 +23031,14 @@ var buildGridMap = function (step) {
23030
23031
  if (type !== 'subgrids') {
23031
23032
  prevObj.isElement = true;
23032
23033
  }
23033
- map[getPositionKey(obj)] = __assign(__assign({}, obj), prevObj);
23034
+ map[getPositionKey$1(obj)] = __assign(__assign({}, obj), prevObj);
23034
23035
  };
23035
23036
  stepElementTypes.forEach(function (type) { var _a; return (_a = step[type]) === null || _a === void 0 ? void 0 : _a.forEach(function (obj) { return addObjectsToMap(obj, type); }); });
23036
23037
  map.root = __assign({ step: step }, rootSubgrid);
23037
23038
  return map;
23038
23039
  };
23039
23040
  var buildGridTree = function (gridMap, position, visiblePositions, repeatKeys, repeatIndex, lastRepeat) {
23040
- var positionKey = getPositionKey({ position: position });
23041
+ var positionKey = getPositionKey$1({ position: position });
23041
23042
  var node = __assign({}, gridMap[positionKey]);
23042
23043
  if (!node)
23043
23044
  return;
@@ -23045,7 +23046,7 @@ var buildGridTree = function (gridMap, position, visiblePositions, repeatKeys, r
23045
23046
  node.lastRepeat = lastRepeat;
23046
23047
  var i = 0;
23047
23048
  var nextPos = __spreadArray(__spreadArray([], __read(position), false), [i], false);
23048
- var nextPosKey = getPositionKey({ position: nextPos });
23049
+ var nextPosKey = getPositionKey$1({ position: nextPos });
23049
23050
  var hasNextChild = gridMap[nextPosKey];
23050
23051
  if (hasNextChild)
23051
23052
  node.children = [];
@@ -23061,7 +23062,7 @@ var buildGridTree = function (gridMap, position, visiblePositions, repeatKeys, r
23061
23062
  }
23062
23063
  i = i + 1;
23063
23064
  nextPos = __spreadArray(__spreadArray([], __read(position), false), [i], false);
23064
- nextPosKey = getPositionKey({ position: nextPos });
23065
+ nextPosKey = getPositionKey$1({ position: nextPos });
23065
23066
  hasNextChild = gridMap[nextPosKey];
23066
23067
  };
23067
23068
  while (hasNextChild) {
@@ -39688,7 +39689,7 @@ function useTrackUserInteraction(formRef, activeStep, stepKey, formName) {
39688
39689
  }, [activeStep, stepKey, formName]);
39689
39690
  }
39690
39691
 
39691
- var LazyAssistantChat = lazy(function () { return import(/* webpackChunkName: "AssistantChat" */ './fthry_AssistantChat.BpIazy4D.js').then(function (n) { return n.A; }); });
39692
+ var LazyAssistantChat = lazy(function () { return import(/* webpackChunkName: "AssistantChat" */ './fthry_AssistantChat.D_blXDVn.js').then(function (n) { return n.A; }); });
39692
39693
  var AssistantChat = function (props) { return (jsx$1(Suspense, __assign({ fallback: null }, { children: jsx$1(LazyAssistantChat, __assign({}, props)) }))); };
39693
39694
 
39694
39695
  var AssistantClient = /** @class */ (function () {
@@ -40388,7 +40389,7 @@ function Form(_a) {
40388
40389
  return changed;
40389
40390
  };
40390
40391
  var getNewStep = function (newKey) { return __awaiter$2(_this, void 0, void 0, function () {
40391
- var newStep, nextStep, nextKey, fields, newHash, _a, curDepth, maxDepth, oldKey;
40392
+ var newStep, nextStep, nextKey, fields, newVisiblePositions, newHash, _a, curDepth, maxDepth, oldKey;
40392
40393
  var _this = this;
40393
40394
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
40394
40395
  return __generator(this, function (_o) {
@@ -40415,11 +40416,13 @@ function Form(_a) {
40415
40416
  fields = (_b = internalState[_internalId]) === null || _b === void 0 ? void 0 : _b.fields;
40416
40417
  if (!fields || !Object.isSealed(fields))
40417
40418
  fields = Object.seal(getAllFields(fieldKeys, Object.keys(hiddenFields), _internalId));
40419
+ newVisiblePositions = getVisiblePositions(newStep, _internalId);
40420
+ preloadStepFields(newStep, newVisiblePositions).catch(function () { });
40418
40421
  setFormInternalState(_internalId, {
40419
40422
  language: language !== null && language !== void 0 ? language : initState.language,
40420
40423
  currentStep: newStep,
40421
40424
  previousStepName: (_c = activeStep === null || activeStep === void 0 ? void 0 : activeStep.key) !== null && _c !== void 0 ? _c : '',
40422
- visiblePositions: getVisiblePositions(newStep, _internalId),
40425
+ visiblePositions: newVisiblePositions,
40423
40426
  client: client,
40424
40427
  fields: fields,
40425
40428
  products: Object.seal(getSimplifiedProducts(integrations === null || integrations === void 0 ? void 0 : integrations.stripe, updateFieldValues, client)),
@@ -40658,7 +40661,7 @@ function Form(_a) {
40658
40661
  // Only resets if value differs from default, minimizes unnecessary updates.
40659
40662
  var newFieldVals_1 = {};
40660
40663
  activeStep.servar_fields.forEach(function (sf) {
40661
- var key = getPositionKey(sf);
40664
+ var key = getPositionKey$1(sf);
40662
40665
  var flags = visiblePositions[key];
40663
40666
  var isRepeated = !!getRepeatedContainer(activeStep, sf);
40664
40667
  if (isRepeated) {
@@ -46284,9 +46287,9 @@ function init(sdkKey, options) {
46284
46287
  if (runningInClient()) {
46285
46288
  // Dynamically load libraries that must be client side
46286
46289
  global.scriptjsLoadPromise = import(
46287
- /* webpackChunkName: "scriptjs" */ './fthry_script.4UR41bnG.js').then(function (n) { return n.s; });
46290
+ /* webpackChunkName: "scriptjs" */ './fthry_script.CdqUz_xN.js').then(function (n) { return n.s; });
46288
46291
  global.webfontloaderPromise = import(
46289
- /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.n8GaR_jB.js').then(function (n) { return n.w; });
46292
+ /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.CUla19Cs.js').then(function (n) { return n.w; });
46290
46293
  // Client-side tracking logic
46291
46294
  if (initState.userTracking === 'cookie') {
46292
46295
  var cookieKey = "feathery-user-id-".concat(sdkKey);
@@ -46432,7 +46435,7 @@ function getFieldValues() {
46432
46435
  return __assign({}, fieldValues);
46433
46436
  }
46434
46437
  function logFeatheryBadge() {
46435
- console.log('%c Feathery %c v' + "2.38.0" + ' ', // replaced with real version during build
46438
+ console.log('%c Feathery %c v' + "2.39.1" + ' ', // replaced with real version during build
46436
46439
  '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;');
46437
46440
  }
46438
46441
 
@@ -47945,40 +47948,124 @@ breakpoint) {
47945
47948
  return styles.getTarget('inner-container', undefined, viewport === 'mobile');
47946
47949
  };
47947
47950
 
47948
- var AddressLine1 = lazy(function () { return import(/* webpackChunkName: "AddressField" */ './fthry_index.B020qTL1.js'); });
47949
- var ButtonGroupField = lazy(function () { return import(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.BZZHsN5a.js'); });
47950
- var CheckboxField = lazy(function () { return import(/* webpackChunkName: "CheckboxField" */ './fthry_index.-9Pe_RZJ.js'); });
47951
- var CheckboxGroupField = lazy(function () {
47952
- return import(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.BQlKGMSZ.js');
47953
- });
47954
- var ColorPickerField = lazy(function () { return import(/* webpackChunkName: "ColorPickerField" */ './fthry_index.BZuK2sQ5.js'); });
47955
- var CustomField = lazy(function () { return import(/* webpackChunkName: "CustomField" */ './fthry_index.DOOj6cJp.js'); });
47956
- var DateSelectorField = lazy(function () {
47957
- return import(/* webpackChunkName: "DateSelectorField" */ './fthry_index.B_AxehyW.js');
47958
- });
47959
- var DropdownField = lazy(function () { return import(/* webpackChunkName: "DropdownField" */ './fthry_index.CaQYjI5I.js'); });
47960
- var DropdownMultiField = lazy(function () {
47961
- return import(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.P0AejkY4.js');
47962
- });
47963
- var FileUploadField = lazy(function () { return import(/* webpackChunkName: "FileUploadField" */ './fthry_index.DHPFNhgl.js'); });
47964
- var MatrixField = lazy(function () { return import(/* webpackChunkName: "MatrixField" */ './fthry_index.DPAdqFeT.js'); });
47965
- var PasswordField = lazy(function () { return import(/* webpackChunkName: "PasswordField" */ './fthry_index.D7Lb5Krw.js'); });
47966
- var PaymentMethodField = lazy(function () {
47967
- return import(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.iCQc8h5O.js');
47968
- });
47969
- var PhoneField = lazy(function () { return import(/* webpackChunkName: "PhoneField" */ './fthry_index.08-lgbei.js'); });
47970
- var PinInputField = lazy(function () { return import(/* webpackChunkName: "PinInputField" */ './fthry_index.CQfKbwaC.js'); });
47971
- var QRScanner = lazy(function () { return import(/* webpackChunkName: "QRScanner" */ './fthry_index.BH5ZPwTL.js'); });
47972
- var RadioButtonGroupField = lazy(function () {
47973
- return import(
47974
- /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.mxecJ9_a.js');
47975
- });
47976
- var RatingField = lazy(function () { return import(/* webpackChunkName: "RatingField" */ './fthry_index.Ca770hPU.js'); });
47977
- var SignatureField = lazy(function () { return import(/* webpackChunkName: "SignatureField" */ './fthry_index.B2UzR5GS.js'); });
47978
- var SliderField = lazy(function () { return import(/* webpackChunkName: "SliderField" */ './fthry_index.DL46TGQr.js'); });
47979
- var TextField = lazy(function () { return import(/* webpackChunkName: "TextField" */ './fthry_index.BOItLjiR.js'); });
47980
- var TextArea = lazy(function () { return import(/* webpackChunkName: "TextArea" */ './fthry_index.DIIoaRob.js'); });
47981
- var Fields = {
47951
+ var fieldLoaders = {
47952
+ AddressLine1: function () {
47953
+ return import(/* webpackChunkName: "AddressField" */ './fthry_index.DGbZqMXK.js');
47954
+ },
47955
+ ButtonGroupField: function () {
47956
+ return import(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.BTgeVAmS.js');
47957
+ },
47958
+ CheckboxField: function () {
47959
+ return import(/* webpackChunkName: "CheckboxField" */ './fthry_index.DKKxZ5bF.js');
47960
+ },
47961
+ CheckboxGroupField: function () {
47962
+ return import(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.Bbc3lP0x.js');
47963
+ },
47964
+ ColorPickerField: function () {
47965
+ return import(/* webpackChunkName: "ColorPickerField" */ './fthry_index.C2RescJg.js');
47966
+ },
47967
+ CustomField: function () {
47968
+ return import(/* webpackChunkName: "CustomField" */ './fthry_index.CXcuEd6j.js');
47969
+ },
47970
+ DateSelectorField: function () {
47971
+ return import(/* webpackChunkName: "DateSelectorField" */ './fthry_index.2IgipsEM.js');
47972
+ },
47973
+ DropdownField: function () {
47974
+ return import(/* webpackChunkName: "DropdownField" */ './fthry_index.Bydv6C9o.js');
47975
+ },
47976
+ DropdownMultiField: function () {
47977
+ return import(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.B-nybZYJ.js');
47978
+ },
47979
+ FileUploadField: function () {
47980
+ return import(/* webpackChunkName: "FileUploadField" */ './fthry_index.CswL31zQ.js');
47981
+ },
47982
+ MatrixField: function () {
47983
+ return import(/* webpackChunkName: "MatrixField" */ './fthry_index.DVeINBpy.js');
47984
+ },
47985
+ PasswordField: function () {
47986
+ return import(/* webpackChunkName: "PasswordField" */ './fthry_index.YWqg41F5.js');
47987
+ },
47988
+ PaymentMethodField: function () {
47989
+ return import(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.DU5n1W6P.js');
47990
+ },
47991
+ PhoneField: function () { return import(/* webpackChunkName: "PhoneField" */ './fthry_index.CZ9WEIQj.js'); },
47992
+ PinInputField: function () {
47993
+ return import(/* webpackChunkName: "PinInputField" */ './fthry_index.BsBSZ5eS.js');
47994
+ },
47995
+ QRScanner: function () { return import(/* webpackChunkName: "QRScanner" */ './fthry_index.CXEINKN6.js'); },
47996
+ RadioButtonGroupField: function () {
47997
+ return import(
47998
+ /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.C7DKIdK3.js');
47999
+ },
48000
+ RatingField: function () {
48001
+ return import(/* webpackChunkName: "RatingField" */ './fthry_index.B9DIVIQU.js');
48002
+ },
48003
+ SignatureField: function () {
48004
+ return import(/* webpackChunkName: "SignatureField" */ './fthry_index.DxbE60cC.js');
48005
+ },
48006
+ SliderField: function () {
48007
+ return import(/* webpackChunkName: "SliderField" */ './fthry_index.BfNP3Kp1.js');
48008
+ },
48009
+ TextField: function () { return import(/* webpackChunkName: "TextField" */ './fthry_index.BM2ld3tG.js'); },
48010
+ TextArea: function () { return import(/* webpackChunkName: "TextArea" */ './fthry_index.mqd6gAHS.js'); }
48011
+ };
48012
+ var getPositionKey = function (element) { var _a; return ((_a = element.position) === null || _a === void 0 ? void 0 : _a.join(',')) || 'root'; };
48013
+ // Share the resolved component between preload and render. A separate
48014
+ // React.lazy wrapper can still suspend on its first render even after an
48015
+ // external import() preload has resolved.
48016
+ var createPreloadableField = function (load) {
48017
+ var Component = null;
48018
+ var preloadPromise = null;
48019
+ var loadError = null;
48020
+ var preload = function () {
48021
+ if (!preloadPromise) {
48022
+ loadError = null;
48023
+ preloadPromise = load()
48024
+ .then(function (module) {
48025
+ Component = module.default;
48026
+ return module;
48027
+ })
48028
+ .catch(function (error) {
48029
+ preloadPromise = null;
48030
+ loadError = error;
48031
+ throw error;
48032
+ });
48033
+ }
48034
+ return preloadPromise;
48035
+ };
48036
+ var Field = function (props) {
48037
+ if (Component)
48038
+ return React__default.createElement(Component, props);
48039
+ if (loadError)
48040
+ throw loadError;
48041
+ throw preload();
48042
+ };
48043
+ Field.preload = preload;
48044
+ return Field;
48045
+ };
48046
+ var AddressLine1 = createPreloadableField(fieldLoaders.AddressLine1);
48047
+ var ButtonGroupField = createPreloadableField(fieldLoaders.ButtonGroupField);
48048
+ var CheckboxField = createPreloadableField(fieldLoaders.CheckboxField);
48049
+ var CheckboxGroupField = createPreloadableField(fieldLoaders.CheckboxGroupField);
48050
+ var ColorPickerField = createPreloadableField(fieldLoaders.ColorPickerField);
48051
+ var CustomField = createPreloadableField(fieldLoaders.CustomField);
48052
+ var DateSelectorField = createPreloadableField(fieldLoaders.DateSelectorField);
48053
+ var DropdownField = createPreloadableField(fieldLoaders.DropdownField);
48054
+ var DropdownMultiField = createPreloadableField(fieldLoaders.DropdownMultiField);
48055
+ var FileUploadField = createPreloadableField(fieldLoaders.FileUploadField);
48056
+ var MatrixField = createPreloadableField(fieldLoaders.MatrixField);
48057
+ var PasswordField = createPreloadableField(fieldLoaders.PasswordField);
48058
+ var PaymentMethodField = createPreloadableField(fieldLoaders.PaymentMethodField);
48059
+ var PhoneField = createPreloadableField(fieldLoaders.PhoneField);
48060
+ var PinInputField = createPreloadableField(fieldLoaders.PinInputField);
48061
+ var QRScanner = createPreloadableField(fieldLoaders.QRScanner);
48062
+ var RadioButtonGroupField = createPreloadableField(fieldLoaders.RadioButtonGroupField);
48063
+ var RatingField = createPreloadableField(fieldLoaders.RatingField);
48064
+ var SignatureField = createPreloadableField(fieldLoaders.SignatureField);
48065
+ var SliderField = createPreloadableField(fieldLoaders.SliderField);
48066
+ var TextField = createPreloadableField(fieldLoaders.TextField);
48067
+ var TextArea = createPreloadableField(fieldLoaders.TextArea);
48068
+ var preloadableFields = {
47982
48069
  AddressLine1: AddressLine1,
47983
48070
  ButtonGroupField: ButtonGroupField,
47984
48071
  CheckboxField: CheckboxField,
@@ -48002,6 +48089,71 @@ var Fields = {
48002
48089
  TextField: TextField,
48003
48090
  TextArea: TextArea
48004
48091
  };
48092
+ var getFieldComponentKey = function (servarType) {
48093
+ switch (servarType) {
48094
+ case 'matrix':
48095
+ return 'MatrixField';
48096
+ case 'date_selector':
48097
+ return 'DateSelectorField';
48098
+ case 'signature':
48099
+ return 'SignatureField';
48100
+ case 'qr_scanner':
48101
+ return 'QRScanner';
48102
+ case 'custom':
48103
+ return 'CustomField';
48104
+ case 'file_upload':
48105
+ return 'FileUploadField';
48106
+ case 'button_group':
48107
+ return 'ButtonGroupField';
48108
+ case 'checkbox':
48109
+ return 'CheckboxField';
48110
+ case 'dropdown':
48111
+ case 'gmap_state':
48112
+ case 'gmap_country':
48113
+ return 'DropdownField';
48114
+ case 'dropdown_multi':
48115
+ return 'DropdownMultiField';
48116
+ case 'pin_input':
48117
+ return 'PinInputField';
48118
+ case 'multiselect':
48119
+ return 'CheckboxGroupField';
48120
+ case 'select':
48121
+ return 'RadioButtonGroupField';
48122
+ case 'hex_color':
48123
+ return 'ColorPickerField';
48124
+ case 'slider':
48125
+ return 'SliderField';
48126
+ case 'rating':
48127
+ return 'RatingField';
48128
+ case 'password':
48129
+ return 'PasswordField';
48130
+ case 'text_area':
48131
+ return 'TextArea';
48132
+ case 'phone_number':
48133
+ return 'PhoneField';
48134
+ case 'gmap_line_1':
48135
+ case 'gmap_city':
48136
+ return 'AddressLine1';
48137
+ case 'payment_method':
48138
+ return 'PaymentMethodField';
48139
+ default:
48140
+ return 'TextField';
48141
+ }
48142
+ };
48143
+ var preloadStepFields = function (step, visiblePositions) {
48144
+ var fieldComponentKeys = new Set();
48145
+ step.servar_fields.forEach(function (element) {
48146
+ var _a;
48147
+ var visibleFlags = visiblePositions[getPositionKey(element)];
48148
+ if (visibleFlags === null || visibleFlags === void 0 ? void 0 : visibleFlags.some(Boolean)) {
48149
+ fieldComponentKeys.add(getFieldComponentKey((_a = element.servar) === null || _a === void 0 ? void 0 : _a.type));
48150
+ }
48151
+ });
48152
+ return Promise.all(Array.from(fieldComponentKeys).map(function (key) {
48153
+ return preloadableFields[key].preload();
48154
+ }));
48155
+ };
48156
+ var Fields = __assign({}, preloadableFields);
48005
48157
  var justifyContentTextAlignMap = {
48006
48158
  'flex-start': 'left',
48007
48159
  center: 'center',
@@ -48365,6 +48517,15 @@ function applyImageStyles(element, responsiveStyles) {
48365
48517
  responsiveStyles.applyWidth('dimension');
48366
48518
  return responsiveStyles;
48367
48519
  }
48520
+ function getImmediateDocumentUrl(_a) {
48521
+ var editMode = _a.editMode, imageFieldSource = _a.imageFieldSource, sourceImage = _a.sourceImage;
48522
+ if (imageFieldSource && typeof imageFieldSource === 'string') {
48523
+ return imageFieldSource;
48524
+ }
48525
+ if (!imageFieldSource)
48526
+ return sourceImage || PLACEHOLDER_IMAGE;
48527
+ return editMode ? PLACEHOLDER_IMAGE : '';
48528
+ }
48368
48529
  function ImageElement(_a) {
48369
48530
  var _b, _c;
48370
48531
  var element = _a.element, responsiveStyles = _a.responsiveStyles, _d = _a.elementProps, elementProps = _d === void 0 ? {} : _d, editMode = _a.editMode, children = _a.children;
@@ -48373,29 +48534,26 @@ function ImageElement(_a) {
48373
48534
  if (Array.isArray(imageFieldSource)) {
48374
48535
  imageFieldSource = imageFieldSource[(_c = element.repeat) !== null && _c !== void 0 ? _c : 0];
48375
48536
  }
48376
- var hasSourceImage = !!element.properties.source_image && !imageFieldSource;
48377
- var _e = __read(useState(editMode && !hasSourceImage ? PLACEHOLDER_IMAGE : ''), 2), documentUrl = _e[0], setDocumentUrl = _e[1];
48378
- var _f = __read(useState(''), 2), documentType = _f[0], setDocumentType = _f[1];
48379
- var _g = __read(useState(true), 2), applyWidth = _g[0], setApplyWidth = _g[1];
48537
+ var shouldResolveImageSource = Boolean(imageFieldSource && typeof imageFieldSource !== 'string');
48538
+ var immediateDocumentUrl = getImmediateDocumentUrl({
48539
+ editMode: editMode,
48540
+ imageFieldSource: imageFieldSource,
48541
+ sourceImage: element.properties.source_image
48542
+ });
48543
+ var _e = __read(useState(null), 2), resolvedDocumentData = _e[0], setResolvedDocumentData = _e[1];
48544
+ var _f = __read(useState(true), 2), applyWidth = _f[0], setApplyWidth = _f[1];
48380
48545
  var styles = useMemo(function () { return applyImageStyles(element, responsiveStyles); }, [responsiveStyles]);
48381
48546
  useEffect(function () {
48382
- if (imageFieldSource) {
48383
- if (typeof imageFieldSource === 'string') {
48384
- setDocumentType('');
48385
- setDocumentUrl(imageFieldSource);
48386
- }
48387
- else {
48388
- getRenderData(imageFieldSource).then(function (data) {
48389
- setDocumentType(data.type);
48390
- setDocumentUrl(data.url);
48391
- });
48392
- }
48393
- }
48394
- else {
48395
- setDocumentUrl(element.properties.source_image || PLACEHOLDER_IMAGE);
48396
- setDocumentType('');
48397
- }
48398
- }, [imageFieldSource, element.properties.source_image]);
48547
+ if (!shouldResolveImageSource)
48548
+ return;
48549
+ getRenderData(imageFieldSource).then(setResolvedDocumentData);
48550
+ }, [imageFieldSource, shouldResolveImageSource]);
48551
+ var documentUrl = shouldResolveImageSource && resolvedDocumentData
48552
+ ? resolvedDocumentData.url
48553
+ : immediateDocumentUrl;
48554
+ var documentType = shouldResolveImageSource && resolvedDocumentData
48555
+ ? resolvedDocumentData.type
48556
+ : '';
48399
48557
  var displayPDF = documentUrl && documentType === 'application/pdf';
48400
48558
  return (jsxs("div", __assign({ css: __assign(__assign({ width: '100%', height: '100%' }, styles.getTarget('imageContainer')), { maxHeight: '100%', position: 'relative', display: 'flex', alignItems: 'center' }) }, { children: [children, displayPDF ? (jsx$1("embed", __assign({ type: 'application/pdf', width: '100%', height: '100%', alt: '', "aria-label": element.properties.aria_label, src: documentUrl + '#view=FitH', css: __assign(__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", __assign({ src: documentUrl || undefined, alt: '', "aria-label": element.properties.aria_label, css: __assign(__assign({ objectFit: 'contain', width: '100%', maxWidth: '100%', height: '100%', maxHeight: '100%' }, styles.getTarget('image')), (applyWidth ? styles.getTarget('dimension') : {})), onLoad: function () { return setApplyWidth(false); } }, elementProps)))] })));
48401
48559
  }
@@ -48707,33 +48865,121 @@ function ButtonElement(_a) {
48707
48865
 
48708
48866
  var formerProgress;
48709
48867
  function SmoothBar(_a) {
48710
- var styles = _a.styles, percent = _a.percent;
48711
- var _b = __read(useState(formerProgress), 2), curProgress = _b[0], setCurProgress = _b[1];
48868
+ var _b, _c;
48869
+ var styles = _a.styles, percent = _a.percent, _d = _a.vertical, vertical = _d === void 0 ? false : _d;
48870
+ var _e = __read(useState(formerProgress), 2), curProgress = _e[0], setCurProgress = _e[1];
48712
48871
  useEffect(function () {
48713
- // This allows the user to see a smooth progress bar animation from former progress amount to current amount
48714
48872
  if (percent !== curProgress) {
48715
48873
  setCurProgress(percent);
48716
48874
  formerProgress = percent;
48717
48875
  }
48718
48876
  }, [percent]);
48719
- return (jsx$1("div", __assign({ css: __assign({ height: '0.4rem', width: '100%', borderRadius: 0, display: 'flex', backgroundColor: '#e9ecef' }, styles.getTarget('barWrapper')) }, { children: jsx$1("div", { style: { width: "".concat(curProgress, "%") }, css: __assign(__assign({ transition: 'width 0.6s ease' }, styles.getTarget('barWrapper', true)), styles.getTarget('bar')) }) })));
48877
+ var mainDim = vertical ? 'height' : 'width';
48878
+ var crossDim = vertical ? 'width' : 'height';
48879
+ return (jsx$1("div", __assign({ css: __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: __assign(__assign({ transition: "".concat(mainDim, " 0.6s ease") }, styles.getTarget('barWrapper', true)), styles.getTarget('bar')) }) })));
48720
48880
  }
48721
48881
 
48722
48882
  function SegmentBar(_a) {
48723
- var styles = _a.styles, percent = _a.percent, numSegments = _a.numSegments;
48883
+ var _b, _c;
48884
+ var styles = _a.styles, percent = _a.percent, numSegments = _a.numSegments, _d = _a.vertical, vertical = _d === void 0 ? false : _d;
48885
+ var mainDim = vertical ? 'height' : 'width';
48886
+ var crossDim = vertical ? 'width' : 'height';
48887
+ var spacerProp = vertical ? 'marginBottom' : 'marginRight';
48724
48888
  var numFilled = Math.floor(percent / (100 / numSegments));
48725
48889
  var filledSegments = [];
48726
48890
  for (var i = 0; i < numFilled; i++) {
48727
48891
  var spacer = i === numSegments - 1 ? 0 : 5;
48728
- filledSegments.push(jsx$1("div", { css: __assign(__assign({ width: "calc(".concat(100 / numSegments, "% - ").concat(spacer, "px)"), marginRight: "".concat(spacer, "px"), borderRadius: '2px' }, styles.getTarget('barWrapper', true)), styles.getTarget('bar')) }, i));
48892
+ filledSegments.push(jsx$1("div", { css: __assign(__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));
48729
48893
  }
48730
- return (jsx$1("div", __assign({ style: {
48731
- height: '0.4rem',
48732
- width: '100%',
48733
- display: 'flex',
48734
- backgroundColor: '#e9ecef',
48735
- borderRadius: '2px'
48736
- } }, { children: filledSegments })));
48894
+ return (jsx$1("div", __assign({ style: (_c = {},
48895
+ _c[crossDim] = '0.4rem',
48896
+ _c[mainDim] = '100%',
48897
+ _c.flexDirection = vertical ? 'column-reverse' : undefined,
48898
+ _c.display = 'flex',
48899
+ _c.backgroundColor = '#e9ecef',
48900
+ _c.borderRadius = '2px',
48901
+ _c) }, { children: filledSegments })));
48902
+ }
48903
+
48904
+ var CIRCLE_SIZE = 28;
48905
+ var CONNECTOR_GAP = 6;
48906
+ function StepperBar(_a) {
48907
+ var _b, _c;
48908
+ 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;
48909
+ var barStyles = styles.getTarget('bar');
48910
+ var showLabels = textPlacement !== 'none';
48911
+ var steps = stepConfigs.map(function (s) { return s.label; });
48912
+ var activeStep = stepKey
48913
+ ? Math.max(0, stepConfigs.findIndex(function (s) { return s.step_key === stepKey; }))
48914
+ : 0;
48915
+ var mainDim = vertical ? 'height' : 'width';
48916
+ var crossAlign = vertical ? 'alignItems' : 'justifyContent';
48917
+ var circleStyleFor = function (isCompleted, isActive) {
48918
+ if (isActive || isCompleted)
48919
+ return __assign(__assign({}, barStyles), { color: '#fff' });
48920
+ return { backgroundColor: '#e9ecef', color: '#888' };
48921
+ };
48922
+ var circleContent = function (isCompleted, index) {
48923
+ return isCompleted ? (jsx$1("svg", __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);
48924
+ };
48925
+ var renderNodes = function () {
48926
+ return steps.map(function (_, index) {
48927
+ var _a;
48928
+ var isCompleted = index < activeStep;
48929
+ var isActive = index === activeStep;
48930
+ var isLast = index === steps.length - 1;
48931
+ var sKey = (_a = stepConfigs === null || stepConfigs === void 0 ? void 0 : stepConfigs[index]) === null || _a === void 0 ? void 0 : _a.step_key;
48932
+ var isClickable = isCompleted && !!onStepClick && !!sKey;
48933
+ var connectorStyle = vertical
48934
+ ? {
48935
+ width: '2px',
48936
+ flex: 1,
48937
+ marginTop: "".concat(CONNECTOR_GAP, "px"),
48938
+ marginBottom: "".concat(CONNECTOR_GAP, "px")
48939
+ }
48940
+ : {
48941
+ flex: 1,
48942
+ height: '2px',
48943
+ marginLeft: "".concat(CONNECTOR_GAP, "px"),
48944
+ marginRight: "".concat(CONNECTOR_GAP, "px")
48945
+ };
48946
+ return (jsxs(React__default.Fragment, { children: [jsx$1("div", __assign({ css: __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: __assign(__assign({}, connectorStyle), (isCompleted ? barStyles : { backgroundColor: '#e9ecef' })) }))] }, index));
48947
+ });
48948
+ };
48949
+ var renderLabelItems = function () {
48950
+ return steps.map(function (label, index) {
48951
+ var _a;
48952
+ var isLast = index === steps.length - 1;
48953
+ return (jsxs(React__default.Fragment, { children: [jsx$1("div", __assign({ style: (_a = {},
48954
+ _a[mainDim] = "".concat(CIRCLE_SIZE, "px"),
48955
+ _a.display = 'flex',
48956
+ _a[crossAlign] = 'center',
48957
+ _a.flexShrink = 0,
48958
+ _a) }, { children: jsx$1("span", __assign({ css: __assign(__assign({ fontSize: '12px', whiteSpace: 'nowrap' }, (vertical ? {} : { textAlign: 'center' })), styles.getTarget('barContainer')) }, { children: label })) })), !isLast && (jsx$1("div", { style: __assign({ flex: 1 }, (vertical
48959
+ ? {
48960
+ marginTop: "".concat(CONNECTOR_GAP, "px"),
48961
+ marginBottom: "".concat(CONNECTOR_GAP, "px")
48962
+ }
48963
+ : {
48964
+ marginLeft: "".concat(CONNECTOR_GAP, "px"),
48965
+ marginRight: "".concat(CONNECTOR_GAP, "px")
48966
+ })) }))] }, index));
48967
+ });
48968
+ };
48969
+ if (vertical) {
48970
+ // textPlacement 'bottom' → labels on left, 'top' → labels on right
48971
+ var labelsOnLeft = textPlacement === 'bottom';
48972
+ return (jsxs("div", __assign({ style: __assign({ display: 'flex', flexDirection: labelsOnLeft ? 'row-reverse' : 'row', height: '100%', gap: showLabels ? '10px' : '0' }, style) }, { children: [jsx$1("div", __assign({ style: {
48973
+ display: 'flex',
48974
+ flexDirection: 'column',
48975
+ alignItems: 'center',
48976
+ width: "".concat(CIRCLE_SIZE, "px")
48977
+ } }, { children: renderNodes() })), showLabels && (jsx$1("div", __assign({ style: { display: 'flex', flexDirection: 'column' } }, { children: renderLabelItems() })))] })));
48978
+ }
48979
+ // Horizontal layout
48980
+ var labelsOnTop = textPlacement === 'top';
48981
+ var marginProp = labelsOnTop ? 'marginBottom' : 'marginTop';
48982
+ return (jsxs("div", __assign({ style: { display: 'flex', flexDirection: 'column', width: '100%' } }, { children: [showLabels && labelsOnTop && (jsx$1("div", __assign({ style: (_b = { display: 'flex' }, _b[marginProp] = '6px', _b) }, { children: renderLabelItems() }))), jsx$1("div", __assign({ style: { display: 'flex', alignItems: 'center' } }, { children: renderNodes() })), showLabels && !labelsOnTop && (jsx$1("div", __assign({ style: (_c = { display: 'flex' }, _c[marginProp] = '6px', _c) }, { children: renderLabelItems() })))] })));
48737
48983
  }
48738
48984
 
48739
48985
  function applyProgressBarStyles(responsiveStyles) {
@@ -48752,9 +48998,14 @@ function applyProgressBarStyles(responsiveStyles) {
48752
48998
  return responsiveStyles;
48753
48999
  }
48754
49000
  function ProgressBarElement(_a) {
48755
- var _b, _c;
48756
- 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;
49001
+ var _b, _c, _d, _e, _f;
49002
+ 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;
48757
49003
  var styles = useMemo(function () { return applyProgressBarStyles(responsiveStyles); }, [responsiveStyles]);
49004
+ var vertical = element.styles.bar_direction === 'vertical';
49005
+ var containerProps = __assign({ css: __assign(__assign({ display: 'flex', flexDirection: 'column', position: 'relative', width: '100%' }, (vertical && { height: '100%' })), styles.getTarget('barContainer')) }, elementProps);
49006
+ if ((_b = element.properties) === null || _b === void 0 ? void 0 : _b.stepper) {
49007
+ return (jsxs("div", __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 })] })));
49008
+ }
48758
49009
  var userProgress, userSegments;
48759
49010
  if (![null, undefined].includes(progress)) {
48760
49011
  if (typeof progress === 'number') {
@@ -48762,25 +49013,34 @@ function ProgressBarElement(_a) {
48762
49013
  }
48763
49014
  else {
48764
49015
  userProgress = progress.progress;
48765
- userSegments = (_b = progress.segments) !== null && _b !== void 0 ? _b : element.properties.num_segments;
49016
+ userSegments = (_e = progress.segments) !== null && _e !== void 0 ? _e : element.properties.num_segments;
48766
49017
  }
48767
49018
  }
48768
- userProgress = userProgress !== null && userProgress !== void 0 ? userProgress : (_c = element.properties) === null || _c === void 0 ? void 0 : _c.progress;
49019
+ userProgress = userProgress !== null && userProgress !== void 0 ? userProgress : (_f = element.properties) === null || _f === void 0 ? void 0 : _f.progress;
48769
49020
  var percent = isNum(userProgress)
48770
49021
  ? userProgress
48771
49022
  : Math.round((100 * (curDepth + 1)) / ((maxDepth || 1) + 1));
49023
+ var textPlacement = element.styles.percent_text_layout;
49024
+ var showText = textPlacement && textPlacement !== 'none';
48772
49025
  var BarComponent = userSegments ? SegmentBar : SmoothBar;
48773
49026
  var progressBarElements = [
48774
- jsx$1(BarComponent, { styles: styles, percent: percent, numSegments: userSegments }, 'progress')
49027
+ jsx$1(BarComponent, { styles: styles, percent: percent, numSegments: userSegments, vertical: vertical }, 'progress')
48775
49028
  ];
48776
- var completionPercentage = (jsx$1("div", __assign({ style: { width: '100%', textAlign: 'center' } }, { children: "".concat(percent, "% completed") }), 'completionPercentage'));
48777
- if (element.styles.percent_text_layout === 'top') {
49029
+ var completionPercentage = vertical ? (jsx$1("div", __assign({ style: {
49030
+ display: 'flex',
49031
+ alignItems: 'center',
49032
+ padding: '0 8px',
49033
+ whiteSpace: 'nowrap'
49034
+ } }, { children: "".concat(percent, "% completed") }), 'completionPercentage')) : (jsx$1("div", __assign({ style: { width: '100%', textAlign: 'center' } }, { children: "".concat(percent, "% completed") }), 'completionPercentage'));
49035
+ if (textPlacement === 'top') {
48778
49036
  progressBarElements.unshift(completionPercentage);
48779
49037
  }
48780
- else if (element.styles.percent_text_layout === 'bottom') {
49038
+ else if (textPlacement === 'bottom') {
48781
49039
  progressBarElements.push(completionPercentage);
48782
49040
  }
48783
- return (jsxs("div", __assign({ css: __assign({ display: 'flex', flexDirection: 'column', position: 'relative', width: '100%' }, styles.getTarget('barContainer')) }, elementProps, { children: [children, progressBarElements] })));
49041
+ // When vertical with text beside the bar, switch to row layout
49042
+ var flexDirection = vertical && showText ? 'row' : 'column';
49043
+ return (jsxs("div", __assign({}, containerProps, { css: __assign(__assign({}, containerProps.css), { flexDirection: flexDirection }) }, { children: [children, progressBarElements] })));
48784
49044
  }
48785
49045
 
48786
49046
  var shimmerFields = [
@@ -48927,7 +49187,7 @@ function ElementSkeleton(_a) {
48927
49187
  }
48928
49188
  var templateObject_1;
48929
49189
 
48930
- var TableElement = lazy(function () { return import(/* webpackChunkName: "TableElement" */ './fthry_index.JhHnGxYn.js'); });
49190
+ var TableElement = lazy(function () { return import(/* webpackChunkName: "TableElement" */ './fthry_index.CsVcvrP3.js'); });
48931
49191
  var Basic = {
48932
49192
  ImageElement: ImageElement,
48933
49193
  VideoElement: VideoElement,