@feathery/react 2.43.0 → 2.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/cjs/Form/grid/Element/index.d.ts.map +1 -1
  2. package/cjs/Form/index.d.ts.map +1 -1
  3. package/cjs/assistant/AssistantChat.d.ts.map +1 -1
  4. package/cjs/assistant/AssistantClient.d.ts +30 -6
  5. package/cjs/assistant/AssistantClient.d.ts.map +1 -1
  6. package/cjs/assistant/ToolStatus.d.ts.map +1 -1
  7. package/cjs/assistant/tools/clickElement.d.ts +4 -3
  8. package/cjs/assistant/tools/clickElement.d.ts.map +1 -1
  9. package/cjs/assistant/tools/panelRuntime.d.ts +18 -1
  10. package/cjs/assistant/tools/panelRuntime.d.ts.map +1 -1
  11. package/cjs/assistant/tools/setFieldValue.d.ts +15 -23
  12. package/cjs/assistant/tools/setFieldValue.d.ts.map +1 -1
  13. package/cjs/assistant/tools/tableMutations.d.ts +36 -0
  14. package/cjs/assistant/tools/tableMutations.d.ts.map +1 -0
  15. package/cjs/assistant/tools/triggerTableAction.d.ts +17 -0
  16. package/cjs/assistant/tools/triggerTableAction.d.ts.map +1 -0
  17. package/cjs/assistant/tools/utils.d.ts +33 -0
  18. package/cjs/assistant/tools/utils.d.ts.map +1 -0
  19. package/cjs/assistant/utils.d.ts +0 -1
  20. package/cjs/assistant/utils.d.ts.map +1 -1
  21. package/cjs/elements/basic/TableElement/index.d.ts +1 -1
  22. package/cjs/elements/basic/TableElement/index.d.ts.map +1 -1
  23. package/cjs/{fthry_AssistantChat.Dc6irzAk.js → fthry_AssistantChat.DAuwndVq.js} +951 -327
  24. package/cjs/{fthry_FormControl.D_eydQlT.js → fthry_FormControl.BBY2Jye4.js} +1 -1
  25. package/cjs/{fthry_InlineTooltip.Km0nxBV3.js → fthry_InlineTooltip.HDk3cIr4.js} +2 -2
  26. package/cjs/{fthry_Overlay.ChABiy0m.js → fthry_Overlay.AOeUL6CY.js} +1 -1
  27. package/cjs/{fthry_PaymentMethodField.BMABompY.js → fthry_PaymentMethodField.CoyAoL1E.js} +4 -4
  28. package/cjs/{fthry_Placeholder.CnNGDD_K.js → fthry_Placeholder.B7ueqeue.js} +1 -1
  29. package/cjs/{fthry_ShowEyeIcon.Cozhh36m.js → fthry_ShowEyeIcon.BQYvZcHZ.js} +1 -1
  30. package/cjs/{fthry_auto-track.CzyR3umO.js → fthry_auto-track.D-HB881s.js} +2 -2
  31. package/cjs/{fthry_highlighted-body-TPN3WLV5.D8LjPUtI.js → fthry_highlighted-body-TPN3WLV5.B-UeFUOm.js} +3 -3
  32. package/cjs/{fthry_index.H4GgWRQ-.js → fthry_index.B0i-spOd.js} +1 -1
  33. package/cjs/{fthry_index.DcnmaMvN.js → fthry_index.B1B09obP.js} +2 -2
  34. package/cjs/{fthry_index.BYJ0Cjz1.js → fthry_index.B1Eop7YX.js} +1 -1
  35. package/cjs/{fthry_index.B76xVeoK.js → fthry_index.B490AqCR.js} +10 -10
  36. package/cjs/{fthry_index.BVLMhJHP.js → fthry_index.B4GgIpQf.js} +37 -20
  37. package/cjs/{fthry_index.WbKUUcdS.js → fthry_index.BYK-L6cT.js} +1 -1
  38. package/cjs/{fthry_index.5oiWIOUK.js → fthry_index.BkUaB2ep.js} +1 -1
  39. package/cjs/{fthry_index.B5TkPpn3.js → fthry_index.BlaJBDFt.js} +2 -2
  40. package/cjs/{fthry_index.CsV6zv_0.js → fthry_index.Bz8jOUz8.js} +5 -5
  41. package/cjs/{fthry_index.wTd_xpVX.js → fthry_index.C3_3Pwba.js} +4 -4
  42. package/cjs/{fthry_index.BNFRKqrl.js → fthry_index.CCAjA-GM.js} +5 -5
  43. package/cjs/{fthry_index.8ZkixEuX.js → fthry_index.CCnbb7qW.js} +2 -2
  44. package/cjs/{fthry_index.BPu5GDF3.js → fthry_index.CK7AyNj-.js} +5 -5
  45. package/cjs/{fthry_index.DfOk3_Vc.js → fthry_index.COUEU8oT.js} +1 -1
  46. package/cjs/{fthry_index.D7jBFEkz.js → fthry_index.CPY3r_AI.js} +1 -1
  47. package/cjs/{fthry_index._pqB5lCu.js → fthry_index.CX2hoNP2.js} +8 -8
  48. package/cjs/{fthry_index.B4qsX_2B.js → fthry_index.CZvkZw_L.js} +4 -4
  49. package/cjs/{fthry_index.Cj8NIIWS.js → fthry_index.CdveGKXm.js} +6 -6
  50. package/cjs/{fthry_index.DMmTH04s.js → fthry_index.CekatTq6.js} +2 -2
  51. package/cjs/{fthry_index.B7Slrn_2.js → fthry_index.Cyo-XM28.js} +1 -1
  52. package/cjs/{fthry_index.KMyCBmte.js → fthry_index.DMtFsERM.js} +1 -1
  53. package/cjs/{fthry_index.Crv5Oqdb.js → fthry_index.DWqC5u1r.js} +6 -6
  54. package/cjs/{fthry_index.B-QAg85r.js → fthry_index.DfW7mZvC.js} +6 -6
  55. package/cjs/{fthry_index.Cj3i1JIs.js → fthry_index.RhMho_qJ.js} +1 -1
  56. package/cjs/{fthry_index.Dn7k0XbZ.js → fthry_index.Y5sdcMuJ.js} +231 -160
  57. package/cjs/{fthry_index.x_Q9efXs.js → fthry_index.dJ1e0A0z.js} +2 -2
  58. package/cjs/{fthry_index.B79ksg_6.js → fthry_index.dpt4VGCO.js} +2 -2
  59. package/cjs/{fthry_index.D6PlFvY8.js → fthry_index.egNqBHHX.js} +5 -5
  60. package/cjs/{fthry_index.DoliEMOD.js → fthry_index.h6YgYU9U.js} +3 -3
  61. package/cjs/{fthry_index.CMRH7foG.js → fthry_index.mST6-9JW.js} +6 -6
  62. package/cjs/{fthry_index.ecHJPvgK.js → fthry_index.r4vMrBms.js} +3 -3
  63. package/cjs/{fthry_index.umd.lxnwBuEl.js → fthry_index.umd.DqxbfufN.js} +1 -1
  64. package/cjs/{fthry_input.DJaKnXqS.js → fthry_input.DVS9sAJL.js} +1 -1
  65. package/cjs/{fthry_mermaid-O7DHMXV3.CyaPsnki.js → fthry_mermaid-O7DHMXV3.DVvaFs3q.js} +3 -3
  66. package/cjs/{fthry_script.DrFnB8ud.js → fthry_script.tMNEKNS0.js} +1 -1
  67. package/cjs/{fthry_styles.qeOM9hPF.js → fthry_styles.CLnNcAaC.js} +1 -1
  68. package/cjs/{fthry_useElementSize.K1QGuhUj.js → fthry_useElementSize.WUoc10bB.js} +1 -1
  69. package/cjs/{fthry_useSalesforceSync.DQd2UZn6.js → fthry_useSalesforceSync.HL0c5o2I.js} +1 -1
  70. package/cjs/{fthry_webfontloader.D6aR0hiT.js → fthry_webfontloader.BccGkoV1.js} +1 -1
  71. package/cjs/index.d.ts +1 -1
  72. package/cjs/index.js +1 -1
  73. package/cjs/utils/button.d.ts +2 -0
  74. package/cjs/utils/button.d.ts.map +1 -0
  75. package/cjs/utils/formContext.d.ts +1 -1
  76. package/cjs/utils/formContext.d.ts.map +1 -1
  77. package/cjs/utils/hideAndRepeats.d.ts.map +1 -1
  78. package/cjs/utils/repeat.d.ts +5 -0
  79. package/cjs/utils/repeat.d.ts.map +1 -1
  80. package/dist/Form/grid/Element/index.d.ts.map +1 -1
  81. package/dist/Form/index.d.ts.map +1 -1
  82. package/dist/assistant/AssistantChat.d.ts.map +1 -1
  83. package/dist/assistant/AssistantClient.d.ts +30 -6
  84. package/dist/assistant/AssistantClient.d.ts.map +1 -1
  85. package/dist/assistant/ToolStatus.d.ts.map +1 -1
  86. package/dist/assistant/tools/clickElement.d.ts +4 -3
  87. package/dist/assistant/tools/clickElement.d.ts.map +1 -1
  88. package/dist/assistant/tools/panelRuntime.d.ts +18 -1
  89. package/dist/assistant/tools/panelRuntime.d.ts.map +1 -1
  90. package/dist/assistant/tools/setFieldValue.d.ts +15 -23
  91. package/dist/assistant/tools/setFieldValue.d.ts.map +1 -1
  92. package/dist/assistant/tools/tableMutations.d.ts +36 -0
  93. package/dist/assistant/tools/tableMutations.d.ts.map +1 -0
  94. package/dist/assistant/tools/triggerTableAction.d.ts +17 -0
  95. package/dist/assistant/tools/triggerTableAction.d.ts.map +1 -0
  96. package/dist/assistant/tools/utils.d.ts +33 -0
  97. package/dist/assistant/tools/utils.d.ts.map +1 -0
  98. package/dist/assistant/utils.d.ts +0 -1
  99. package/dist/assistant/utils.d.ts.map +1 -1
  100. package/dist/elements/basic/TableElement/index.d.ts +1 -1
  101. package/dist/elements/basic/TableElement/index.d.ts.map +1 -1
  102. package/dist/{fthry_AssistantChat.D2SjzX88.js → fthry_AssistantChat.B0rVOGHi.js} +951 -327
  103. package/dist/{fthry_FormControl.AWZ2hRhb.js → fthry_FormControl.BqvIXsOg.js} +1 -1
  104. package/dist/{fthry_InlineTooltip.DAaWNMEQ.js → fthry_InlineTooltip.DpFz4-7q.js} +2 -2
  105. package/dist/{fthry_Overlay.C500WG6U.js → fthry_Overlay.D9YOHNgQ.js} +1 -1
  106. package/dist/{fthry_PaymentMethodField.Bl2Ce36L.js → fthry_PaymentMethodField.BgiWNDi2.js} +4 -4
  107. package/dist/{fthry_Placeholder.DXrZi2ze.js → fthry_Placeholder.C5ezRBA4.js} +1 -1
  108. package/dist/{fthry_ShowEyeIcon.D3iEMZA7.js → fthry_ShowEyeIcon.CRfFKHIW.js} +1 -1
  109. package/dist/{fthry_auto-track.C9HCW4qJ.js → fthry_auto-track.Bo4ek9UM.js} +2 -2
  110. package/dist/{fthry_highlighted-body-TPN3WLV5.j0rrY2PD.js → fthry_highlighted-body-TPN3WLV5.aBNiR5uT.js} +3 -3
  111. package/dist/{fthry_index.BDtWG5y-.js → fthry_index.2-SVehmd.js} +5 -5
  112. package/dist/{fthry_index.CS604ePK.js → fthry_index.5I1jwuyV.js} +2 -2
  113. package/dist/{fthry_index.CB6eTYmX.js → fthry_index.B477V46H.js} +5 -5
  114. package/dist/{fthry_index.BHbPxMcy.js → fthry_index.BAwP5nZO.js} +2 -2
  115. package/dist/{fthry_index.DOGU2-kQ.js → fthry_index.BDb1Gbdx.js} +5 -5
  116. package/dist/{fthry_index.IaraEDTR.js → fthry_index.BJAfme_C.js} +1 -1
  117. package/dist/{fthry_index.Cd0JKkOc.js → fthry_index.BUJPgzS-.js} +8 -8
  118. package/dist/{fthry_index.DtHlcCDX.js → fthry_index.BZayCCtc.js} +1 -1
  119. package/dist/{fthry_index.C9P7Vo6r.js → fthry_index.Bf6OzsUG.js} +1 -1
  120. package/dist/{fthry_index.D3O1Qvm3.js → fthry_index.BgDe4mcu.js} +3 -3
  121. package/dist/{fthry_index.DzDuGB1B.js → fthry_index.Bl-5T-uf.js} +6 -6
  122. package/dist/{fthry_index.DA5HHbVe.js → fthry_index.BmyShbTY.js} +1 -1
  123. package/dist/{fthry_index.BlrVY1vE.js → fthry_index.BzD8ur9K.js} +6 -6
  124. package/dist/{fthry_index.Co2zkJCZ.js → fthry_index.C8884q_s.js} +1 -1
  125. package/dist/{fthry_index.DFZRIGNF.js → fthry_index.CEMzrwVK.js} +2 -2
  126. package/dist/{fthry_index.OgRdIE07.js → fthry_index.CMC6lbTE.js} +5 -5
  127. package/dist/{fthry_index.BALrl_Ek.js → fthry_index.Cgd-qpYl.js} +4 -4
  128. package/dist/{fthry_index.4rXsgo8n.js → fthry_index.CvV7-AsF.js} +6 -6
  129. package/dist/{fthry_index.DAdR6bYe.js → fthry_index.DT62a6WV.js} +2 -2
  130. package/dist/{fthry_index.BjZmdaIR.js → fthry_index.DZ8TqVOz.js} +2 -2
  131. package/dist/{fthry_index.Cn4kA2tn.js → fthry_index.DnucOK6E.js} +10 -10
  132. package/dist/{fthry_index.D8_hWgYx.js → fthry_index.DzSlJMlO.js} +1 -1
  133. package/dist/{fthry_index.D2-zTdBQ.js → fthry_index.GDe8zYB6.js} +1 -1
  134. package/dist/{fthry_index.0DlQOa4l.js → fthry_index.M1FS-2Qf.js} +1 -1
  135. package/dist/{fthry_index.C-Af9t8c.js → fthry_index.RlS2LjeY.js} +5 -5
  136. package/dist/{fthry_index.C8xVXq31.js → fthry_index.V6ue96dZ.js} +3 -3
  137. package/dist/{fthry_index.-lEiRiJ3.js → fthry_index.d6j0MJN7.js} +2 -2
  138. package/dist/{fthry_index.DZviU_0h.js → fthry_index.lm4XUzM9.js} +37 -20
  139. package/dist/{fthry_index.x_DcI6GR.js → fthry_index.o9ctQnbs.js} +4 -4
  140. package/dist/{fthry_index.D5dmTp6g.js → fthry_index.pBEjY7tP.js} +1 -1
  141. package/dist/{fthry_index.umd.BhHG1ThX.js → fthry_index.umd.C338HmM7.js} +1 -1
  142. package/dist/{fthry_index.BoXwpo3p.js → fthry_index.wB8tEXQD.js} +227 -161
  143. package/dist/{fthry_input.Y2HVhQeo.js → fthry_input.EFXGfxnr.js} +1 -1
  144. package/dist/{fthry_mermaid-O7DHMXV3._Ng2DeVi.js → fthry_mermaid-O7DHMXV3.sOtzPg8E.js} +3 -3
  145. package/dist/{fthry_script.4cQVioC4.js → fthry_script.CnpXNBMs.js} +1 -1
  146. package/dist/{fthry_styles.DX0NUnVP.js → fthry_styles.DzxChSu4.js} +1 -1
  147. package/dist/{fthry_useElementSize.BCbe9jZd.js → fthry_useElementSize.BftEHcYN.js} +1 -1
  148. package/dist/{fthry_useSalesforceSync.DJFGoBIG.js → fthry_useSalesforceSync.B04DdqRz.js} +1 -1
  149. package/dist/{fthry_webfontloader.4kqCCEG_.js → fthry_webfontloader.sk5QAqQz.js} +1 -1
  150. package/dist/index.d.ts +1 -1
  151. package/dist/index.js +1 -1
  152. package/dist/utils/button.d.ts +2 -0
  153. package/dist/utils/button.d.ts.map +1 -0
  154. package/dist/utils/formContext.d.ts +1 -1
  155. package/dist/utils/formContext.d.ts.map +1 -1
  156. package/dist/utils/hideAndRepeats.d.ts.map +1 -1
  157. package/dist/utils/repeat.d.ts +5 -0
  158. package/dist/utils/repeat.d.ts.map +1 -1
  159. package/package.json +2 -2
  160. package/umd/AssistantChat.685c311fcfd51a09112e.js +1 -0
  161. package/umd/{TableElement.fef6a362cfa150f0f38e.js → TableElement.e3da137819e9b84b3b82.js} +1 -1
  162. package/umd/index.js +1 -1
  163. package/umd/AssistantChat.879f86967feffba1cc6f.js +0 -1
@@ -7349,7 +7349,7 @@ function requireApi () {
7349
7349
  api$1.generateQuikEnvelopes = generateQuikEnvelopes;
7350
7350
  const utils_1 = requireUtils();
7351
7351
  const error_1 = requireError();
7352
- async function dataHubAction(sdkKey, { hubId, operation, entryId, data }, formId) {
7352
+ async function dataHubAction(sdkKey, { hubId, operation, entryId, data, where }, formId) {
7353
7353
  const url = `${(0, utils_1.getApiUrl)()}hub/${hubId}/action/`;
7354
7354
  const res = await (0, utils_1.apiFetch)(sdkKey, url, {
7355
7355
  headers: { 'Content-Type': 'application/json' },
@@ -7358,6 +7358,8 @@ function requireApi () {
7358
7358
  operation,
7359
7359
  entry_id: entryId,
7360
7360
  data,
7361
+ // Map each condition to the backend's snake_case shape.
7362
+ where: where?.map((cond) => 'entryId' in cond ? { entry_id: cond.entryId } : { field_id: cond.fieldId, value: cond.value }),
7361
7363
  form_key: formId,
7362
7364
  }),
7363
7365
  }, false);
@@ -18198,6 +18200,21 @@ function getFieldsInRepeat(step, repeatContainer) {
18198
18200
  */
18199
18201
  function getContainerById(step, id) {
18200
18202
  return step.subgrids.find(function (subgrid) { return subgrid.id === id; });
18203
+ }
18204
+ /**
18205
+ * Number of rendered rows for a repeated field. If the trigger is 'set_value'
18206
+ * and the last row is not at default, the renderer shows an extra empty row.
18207
+ */
18208
+ function getServarRepeatNum(field, fieldValue) {
18209
+ var _a;
18210
+ if (!Array.isArray(fieldValue))
18211
+ return 0;
18212
+ var servar = (_a = field === null || field === void 0 ? void 0 : field.servar) !== null && _a !== void 0 ? _a : {};
18213
+ var hasDefaultLastValue = fieldValue.length > 0 &&
18214
+ fieldValue[fieldValue.length - 1] === getDefaultFieldValue(field);
18215
+ return servar.repeat_trigger === 'set_value' && !hasDefaultLastValue
18216
+ ? fieldValue.length + 1
18217
+ : fieldValue.length;
18201
18218
  }
18202
18219
 
18203
18220
  /**
@@ -18282,23 +18299,11 @@ var repeatCountByFields = function (step, repeatKey) {
18282
18299
  });
18283
18300
  var count = 0;
18284
18301
  repeatableServars.forEach(function (servar) {
18285
- count = Math.max(count, getServarRepeatNum(servar));
18302
+ var _a, _b;
18303
+ count = Math.max(count, getServarRepeatNum(servar, fieldValues[(_b = (_a = servar.servar) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : '']));
18286
18304
  });
18287
18305
  return count;
18288
18306
  };
18289
- // If the final value is still default, do not render another repeat
18290
- var getServarRepeatNum = function (node) {
18291
- var _a, _b;
18292
- var servar = (_a = node.servar) !== null && _a !== void 0 ? _a : {};
18293
- var fieldValue = fieldValues[(_b = servar.key) !== null && _b !== void 0 ? _b : ''];
18294
- if (!Array.isArray(fieldValue))
18295
- return 0;
18296
- var defaultValue = getDefaultFieldValue(node);
18297
- var hasDefaultLastValue = fieldValue[fieldValue.length - 1] === defaultValue;
18298
- return servar.repeat_trigger === 'set_value' && !hasDefaultLastValue
18299
- ? fieldValue.length + 1
18300
- : fieldValue.length;
18301
- };
18302
18307
  var stepElementTypes = [
18303
18308
  'subgrids',
18304
18309
  'texts',
@@ -22251,6 +22256,56 @@ function fieldAllowedFromList(allowLists, fieldKey) {
22251
22256
  return true;
22252
22257
  }
22253
22258
 
22259
+ function isButtonDisabled(button, activeStep, visiblePositions, readOnly) {
22260
+ var _a, _b, _c;
22261
+ var disabled = false;
22262
+ if ((_a = button === null || button === void 0 ? void 0 : button.properties) === null || _a === void 0 ? void 0 : _a.disable_if_fields_incomplete) {
22263
+ var fieldsMissingValue = getVisibleElements(activeStep, visiblePositions, ['servar_fields'], true).some(function (_a) {
22264
+ var element = _a.element, repeat = _a.repeat;
22265
+ if (isFieldActuallyRequired(element, activeStep)) {
22266
+ var servar = element.servar;
22267
+ var fieldVal = fieldValues[servar.key];
22268
+ if (servar.repeated)
22269
+ fieldVal = fieldVal[repeat];
22270
+ return isFieldValueEmpty(fieldVal, servar);
22271
+ }
22272
+ return false;
22273
+ });
22274
+ var storeElements = getVisibleElements(activeStep, visiblePositions, ['buttons', 'subgrids'], true)
22275
+ .map(function (_a) {
22276
+ var element = _a.element;
22277
+ return element;
22278
+ })
22279
+ .filter(function (_a) {
22280
+ var _b;
22281
+ var id = _a.id, properties = _a.properties;
22282
+ return id !== button.id &&
22283
+ ((_b = properties.actions) !== null && _b !== void 0 ? _b : []).some(function (action) {
22284
+ return action.type === ACTION_STORE_FIELD &&
22285
+ action.custom_store_field_key;
22286
+ });
22287
+ });
22288
+ var elementsHaveValues = storeElements.length === 0 ||
22289
+ storeElements.some(function (_a) {
22290
+ var _b;
22291
+ var properties = _a.properties;
22292
+ return ((_b = properties.actions) !== null && _b !== void 0 ? _b : []).some(function (action) {
22293
+ return action.type === ACTION_STORE_FIELD &&
22294
+ fieldValues[action.custom_store_field_key];
22295
+ });
22296
+ });
22297
+ disabled = fieldsMissingValue || !elementsHaveValues;
22298
+ }
22299
+ if (!disabled && readOnly) {
22300
+ var actions = (_c = (_b = button === null || button === void 0 ? void 0 : button.properties) === null || _b === void 0 ? void 0 : _b.actions) !== null && _c !== void 0 ? _c : [];
22301
+ var hasNav = actions.some(function (action) {
22302
+ return NAVIGATION_ACTIONS.includes(action.type);
22303
+ });
22304
+ disabled = !hasNav;
22305
+ }
22306
+ return disabled;
22307
+ }
22308
+
22254
22309
  var ADDRESS_FIELD_TYPES_MAP = new Set([
22255
22310
  'gmap_line_1',
22256
22311
  'gmap_line_2',
@@ -22326,10 +22381,10 @@ var getRelatedAddressValues = function (addressElement, activeStep, fieldValues,
22326
22381
  };
22327
22382
 
22328
22383
  var Element$1 = function (_a) {
22329
- var _b, _c, _d, _e, _f, _g;
22384
+ var _b, _c, _d, _e, _f;
22330
22385
  var el = _a.node, form = _a.form;
22331
22386
  var type = el.type;
22332
- var userProgress = form.userProgress, curDepth = form.curDepth, maxDepth = form.maxDepth, elementProps = form.elementProps, activeStep = form.activeStep, buttonLoaders = form.buttonLoaders, customClickSelectionState = form.customClickSelectionState, runElementActions = form.runElementActions, buttonOnClick = form.buttonOnClick, tableOnClick = form.tableOnClick, fieldOnChange = form.fieldOnChange, inlineErrors = form.inlineErrors, setInlineErrors = form.setInlineErrors, changeValue = form.changeValue, updateFieldValues = form.updateFieldValues, submitCustom = form.submitCustom, elementOnView = form.elementOnView, onViewElements = form.onViewElements, formSettings = form.formSettings, formRef = form.formRef, focusRef = form.focusRef, setCardElement = form.setCardElement, visiblePositions = form.visiblePositions, featheryContext = form.featheryContext;
22387
+ var userProgress = form.userProgress, curDepth = form.curDepth, maxDepth = form.maxDepth, elementProps = form.elementProps, activeStep = form.activeStep, buttonLoaders = form.buttonLoaders, customClickSelectionState = form.customClickSelectionState, runElementActions = form.runElementActions, buttonOnClick = form.buttonOnClick, tableOnClick = form.tableOnClick, fieldOnChange = form.fieldOnChange, inlineErrors = form.inlineErrors, setInlineErrors = form.setInlineErrors, changeValue = form.changeValue, updateFieldValues = form.updateFieldValues, submitCustom = form.submitCustom, elementOnView = form.elementOnView, onViewElements = form.onViewElements, formSettings = form.formSettings, formRef = form.formRef, focusRef = form.focusRef, setCardElement = form.setCardElement, visiblePositions = form.visiblePositions, featheryContext = form.featheryContext, assistantClient = form.assistantClient;
22333
22388
  var readOnly = formSettings.readOnly || initState.collaboratorReview === 'readOnly';
22334
22389
  var basicProps = {
22335
22390
  componentOnly: false,
@@ -22349,7 +22404,7 @@ var Element$1 = function (_a) {
22349
22404
  else if (type === 'video')
22350
22405
  return jsx$1(Elements.VideoElement, __assign({}, basicProps));
22351
22406
  else if (type === 'table')
22352
- return (jsx$1(Elements.TableElement, __assign({}, basicProps, { onClick: function (payload) { return tableOnClick(el, payload); }, updateFieldValues: updateFieldValues, submitCustom: submitCustom, buttonLoaders: buttonLoaders })));
22407
+ return (jsx$1(Elements.TableElement, __assign({}, basicProps, { onClick: function (payload) { return tableOnClick(el, payload); }, updateFieldValues: updateFieldValues, submitCustom: submitCustom, buttonLoaders: buttonLoaders, assistantClient: assistantClient })));
22353
22408
  else if (type === 'text')
22354
22409
  return (jsx$1(Elements.TextElement, __assign({ textSpanOnClick: function (textSpanStart, textSpanEnd) {
22355
22410
  var _a;
@@ -22362,53 +22417,7 @@ var Element$1 = function (_a) {
22362
22417
  });
22363
22418
  }, conditions: activeStep.next_conditions }, basicProps)));
22364
22419
  else if (type === 'button') {
22365
- var disabled = false;
22366
- if (el.properties.disable_if_fields_incomplete) {
22367
- var fieldsMissingValue = getVisibleElements(activeStep, visiblePositions, ['servar_fields'], true).some(function (_a) {
22368
- var element = _a.element, repeat = _a.repeat;
22369
- if (isFieldActuallyRequired(element, activeStep)) {
22370
- var servar = element.servar;
22371
- var fieldVal = fieldValues[servar.key];
22372
- if (servar.repeated)
22373
- fieldVal = fieldVal[repeat];
22374
- return isFieldValueEmpty(fieldVal, servar);
22375
- }
22376
- return false;
22377
- });
22378
- var storeElements = getVisibleElements(activeStep, visiblePositions, ['buttons', 'subgrids'], true)
22379
- .map(function (_a) {
22380
- var element = _a.element;
22381
- return element;
22382
- })
22383
- .filter(function (_a) {
22384
- var _b;
22385
- var id = _a.id, properties = _a.properties;
22386
- return id !== el.id &&
22387
- ((_b = properties.actions) !== null && _b !== void 0 ? _b : []).some(function (action) {
22388
- return action.type === ACTION_STORE_FIELD &&
22389
- action.custom_store_field_key;
22390
- });
22391
- });
22392
- var elementsHaveValues = storeElements.length === 0 || // Loose check via "some" since "requiredness" of click action
22393
- // elements can depend on use case
22394
- storeElements.some(function (_a) {
22395
- var _b;
22396
- var properties = _a.properties;
22397
- return ((_b = properties.actions) !== null && _b !== void 0 ? _b : []).some(function (action) {
22398
- return action.type === ACTION_STORE_FIELD &&
22399
- fieldValues[action.custom_store_field_key];
22400
- });
22401
- });
22402
- disabled = fieldsMissingValue || !elementsHaveValues;
22403
- }
22404
- if (!disabled && readOnly) {
22405
- var actions = (_d = el.properties.actions) !== null && _d !== void 0 ? _d : [];
22406
- var hasNav = actions.some(function (action) {
22407
- return NAVIGATION_ACTIONS.includes(action.type);
22408
- });
22409
- // Disable buttons not used for navigation
22410
- disabled = !hasNav;
22411
- }
22420
+ var disabled = isButtonDisabled(el, activeStep, visiblePositions, readOnly);
22412
22421
  var loaderData = buttonLoaders[el.id];
22413
22422
  if (isNum(loaderData === null || loaderData === void 0 ? void 0 : loaderData.repeat) && loaderData.repeat !== el.repeat)
22414
22423
  loaderData = null;
@@ -22420,7 +22429,7 @@ var Element$1 = function (_a) {
22420
22429
  }, disabled: disabled }, basicProps)));
22421
22430
  }
22422
22431
  else if (type === 'field') {
22423
- var index_1 = (_e = el.repeat) !== null && _e !== void 0 ? _e : null;
22432
+ var index_1 = (_d = el.repeat) !== null && _d !== void 0 ? _d : null;
22424
22433
  var servar_1 = el.servar;
22425
22434
  var fieldVal_1 = getFieldValue$1(el).value;
22426
22435
  var empty = !fieldVal_1 || fieldVal_1 === servar_1.metadata.default_value;
@@ -22604,7 +22613,7 @@ var Element$1 = function (_a) {
22604
22613
  if (field.servar.metadata.store_abbreviation)
22605
22614
  countryCode = value;
22606
22615
  else
22607
- countryCode = (_g = (_f = findCountryByID(value, 'name')) === null || _f === void 0 ? void 0 : _f.countryCode) !== null && _g !== void 0 ? _g : '';
22616
+ countryCode = (_f = (_e = findCountryByID(value, 'name')) === null || _e === void 0 ? void 0 : _e.countryCode) !== null && _f !== void 0 ? _f : '';
22608
22617
  }
22609
22618
  else
22610
22619
  countryCode = '';
@@ -24608,8 +24617,14 @@ var getFormContext = function (formUuid) {
24608
24617
  return formState.client.setCollaboratorAsCompleted(templateId);
24609
24618
  },
24610
24619
  dataHubAction: function (_a) {
24611
- var hubId = _a.hubId, operation = _a.operation, entryId = _a.entryId, data = _a.data;
24612
- return formState.client.dataHubAction({ hubId: hubId, operation: operation, entryId: entryId, data: data });
24620
+ var hubId = _a.hubId, operation = _a.operation, entryId = _a.entryId, data = _a.data, where = _a.where;
24621
+ return formState.client.dataHubAction({
24622
+ hubId: hubId,
24623
+ operation: operation,
24624
+ entryId: entryId,
24625
+ data: data,
24626
+ where: where
24627
+ });
24613
24628
  },
24614
24629
  generateDocuments: function (_a) {
24615
24630
  var documentIds = _a.documentIds, download = _a.download, merge = _a.merge, mergedFileName = _a.mergedFileName;
@@ -40990,19 +41005,56 @@ function useTrackUserInteraction(formRef, activeStep, stepKey, formName) {
40990
41005
  }, [activeStep, stepKey, formName]);
40991
41006
  }
40992
41007
 
40993
- var LazyAssistantChat = lazy(function () { return import(/* webpackChunkName: "AssistantChat" */ './fthry_AssistantChat.D2SjzX88.js').then(function (n) { return n.A; }); });
41008
+ var LazyAssistantChat = lazy(function () { return import(/* webpackChunkName: "AssistantChat" */ './fthry_AssistantChat.B0rVOGHi.js').then(function (n) { return n.A; }); });
40994
41009
  var AssistantChat = function (props) { return (jsx$1(Suspense, __assign({ fallback: null }, { children: jsx$1(LazyAssistantChat, __assign({}, props)) }))); };
40995
41010
 
40996
41011
  var AssistantClient = /** @class */ (function () {
40997
- function AssistantClient(args) {
40998
- this._buttonOnClick = args.buttonOnClick;
40999
- this._runElementActions = args.runElementActions;
41012
+ function AssistantClient(callbacks) {
41013
+ this._tables = new Map();
41014
+ this._callbacks = callbacks;
41000
41015
  }
41016
+ AssistantClient.prototype.updateCallbacks = function (callbacks) {
41017
+ this._callbacks = callbacks;
41018
+ };
41001
41019
  AssistantClient.prototype.click = function (button) {
41002
- return this._buttonOnClick(button);
41020
+ return this._callbacks.buttonOnClick(button);
41003
41021
  };
41004
41022
  AssistantClient.prototype.runActions = function (args) {
41005
- return this._runElementActions(args);
41023
+ return this._callbacks.runElementActions(args);
41024
+ };
41025
+ AssistantClient.prototype.changeValue = function (value, field, index) {
41026
+ if (index === void 0) { index = null; }
41027
+ this._callbacks.changeValue(value, field, index);
41028
+ };
41029
+ AssistantClient.prototype.runTableAction = function (args) {
41030
+ return this._callbacks.tableOnClick(args.table, args.payload);
41031
+ };
41032
+ AssistantClient.prototype.registerTable = function (tableId, handlers) {
41033
+ this._tables.set(tableId, handlers);
41034
+ };
41035
+ AssistantClient.prototype.unregisterTable = function (tableId) {
41036
+ this._tables.delete(tableId);
41037
+ };
41038
+ AssistantClient.prototype.editTableCell = function (tableId, rowIndex, fieldKey, value) {
41039
+ var t = this._tables.get(tableId);
41040
+ if (!t)
41041
+ return false;
41042
+ t.handleCellEdit(fieldKey, rowIndex, value);
41043
+ return true;
41044
+ };
41045
+ AssistantClient.prototype.addTableRow = function (tableId) {
41046
+ var t = this._tables.get(tableId);
41047
+ if (!t)
41048
+ return false;
41049
+ t.handleAddRow();
41050
+ return true;
41051
+ };
41052
+ AssistantClient.prototype.deleteTableRow = function (tableId, rowIndex) {
41053
+ var t = this._tables.get(tableId);
41054
+ if (!t)
41055
+ return false;
41056
+ t.handleDeleteRow(rowIndex);
41057
+ return true;
41006
41058
  };
41007
41059
  return AssistantClient;
41008
41060
  }());
@@ -41038,30 +41090,31 @@ function preOpenIOSWindows(actions) {
41038
41090
  }
41039
41091
  function Form(_a) {
41040
41092
  var _this = this;
41041
- var _b;
41042
- var _internalId = _a._internalId, _c = _a._isAuthLoading, _isAuthLoading = _c === void 0 ? false : _c, _d = _a._bypassCDN, _bypassCDN = _d === void 0 ? false : _d, _e = _a._draft, _draft = _e === void 0 ? false : _e, _f = _a._pollFuserData, _pollFuserData = _f === void 0 ? false : _f, formIdProp = _a.formId, // The 'live' env slug
41043
- _g = _a.onChange, // The 'live' env slug
41044
- onChange = _g === void 0 ? null : _g, _h = _a.onLoad, onLoad = _h === void 0 ? null : _h, _j = _a.onFormLoad, onFormLoad = _j === void 0 ? null : _j, _k = _a.onFormComplete, onFormComplete = _k === void 0 ? null : _k, _l = _a.onSubmit, onSubmit = _l === void 0 ? null : _l, _m = _a.onError, onError = _m === void 0 ? null : _m, _o = _a.onView, onView = _o === void 0 ? null : _o, _p = _a.onAction, onAction = _p === void 0 ? null : _p, _q = _a.onViewElements, onViewElements = _q === void 0 ? [] : _q, _r = _a.saveUrlParams, saveUrlParams = _r === void 0 ? false : _r, _s = _a.hideTestUI, hideTestUI = _s === void 0 ? false : _s, _t = _a.initialValues, initialValues = _t === void 0 ? {} : _t, _u = _a.initialStepId, initialStepId = _u === void 0 ? '' : _u, language = _a.language, initialLoader = _a.initialLoader, popupOptions = _a.popupOptions, _v = _a.elementProps, elementProps = _v === void 0 ? {} : _v, contextRef = _a.contextRef, _w = _a.formProps, formProps = _w === void 0 ? {} : _w, _x = _a.customComponents, customComponents = _x === void 0 ? {} : _x, _y = _a.style, style = _y === void 0 ? {} : _y, _z = _a.className, className = _z === void 0 ? '' : _z, children = _a.children, _0 = _a.readOnly, readOnly = _0 === void 0 ? false : _0, hashNavigation = _a.hashNavigation;
41045
- var _1 = __read(useState(''), 2), formName = _1[0], setFormName = _1[1];
41046
- var _2 = __read(useState(formIdProp), 2), formId = _2[0], setFormId = _2[1];
41093
+ var _b, _c;
41094
+ var _internalId = _a._internalId, _d = _a._isAuthLoading, _isAuthLoading = _d === void 0 ? false : _d, _e = _a._bypassCDN, _bypassCDN = _e === void 0 ? false : _e, _f = _a._draft, _draft = _f === void 0 ? false : _f, _g = _a._pollFuserData, _pollFuserData = _g === void 0 ? false : _g, formIdProp = _a.formId, // The 'live' env slug
41095
+ _h = _a.onChange, // The 'live' env slug
41096
+ onChange = _h === void 0 ? null : _h, _j = _a.onLoad, onLoad = _j === void 0 ? null : _j, _k = _a.onFormLoad, onFormLoad = _k === void 0 ? null : _k, _l = _a.onFormComplete, onFormComplete = _l === void 0 ? null : _l, _m = _a.onSubmit, onSubmit = _m === void 0 ? null : _m, _o = _a.onError, onError = _o === void 0 ? null : _o, _p = _a.onView, onView = _p === void 0 ? null : _p, _q = _a.onAction, onAction = _q === void 0 ? null : _q, _r = _a.onViewElements, onViewElements = _r === void 0 ? [] : _r, _s = _a.saveUrlParams, saveUrlParams = _s === void 0 ? false : _s, _t = _a.hideTestUI, hideTestUI = _t === void 0 ? false : _t, _u = _a.initialValues, initialValues = _u === void 0 ? {} : _u, _v = _a.initialStepId, initialStepId = _v === void 0 ? '' : _v, language = _a.language, initialLoader = _a.initialLoader, popupOptions = _a.popupOptions, _w = _a.elementProps, elementProps = _w === void 0 ? {} : _w, contextRef = _a.contextRef, _x = _a.formProps, formProps = _x === void 0 ? {} : _x, _y = _a.customComponents, customComponents = _y === void 0 ? {} : _y, _z = _a.style, style = _z === void 0 ? {} : _z, _0 = _a.className, className = _0 === void 0 ? '' : _0, children = _a.children, _1 = _a.readOnly, readOnly = _1 === void 0 ? false : _1, hashNavigation = _a.hashNavigation;
41097
+ var _2 = __read(useState(''), 2), formName = _2[0], setFormName = _2[1];
41098
+ var _3 = __read(useState(formIdProp), 2), formId = _3[0], setFormId = _3[1];
41047
41099
  var clientRef = useRef(undefined);
41048
41100
  var client = clientRef.current;
41101
+ var assistantClientRef = useRef(undefined);
41049
41102
  var navigate = useNavigate();
41050
41103
  var location = useLocation();
41051
41104
  var session = initState.formSessions[formId];
41052
- var _3 = __read(useState(false), 2), autoValidate = _3[0], setAutoValidate = _3[1];
41053
- var _4 = __read(useState({}), 2), steps = _4[0], setSteps = _4[1];
41054
- var _5 = __read(useState(null), 2), activeStep = _5[0], setActiveStep = _5[1];
41055
- var _6 = __read(useState(''), 2), stepKey = _6[0], setStepKey = _6[1];
41056
- var _7 = __read(useState(false), 2), shouldScrollToTop = _7[0], setShouldScrollToTop = _7[1];
41105
+ var _4 = __read(useState(false), 2), autoValidate = _4[0], setAutoValidate = _4[1];
41106
+ var _5 = __read(useState({}), 2), steps = _5[0], setSteps = _5[1];
41107
+ var _6 = __read(useState(null), 2), activeStep = _6[0], setActiveStep = _6[1];
41108
+ var _7 = __read(useState(''), 2), stepKey = _7[0], setStepKey = _7[1];
41109
+ var _8 = __read(useState(false), 2), shouldScrollToTop = _8[0], setShouldScrollToTop = _8[1];
41057
41110
  var pendingScrollRef = useRef(null);
41058
- var _8 = __read(useState(false), 2), finished = _8[0], setFinished = _8[1];
41059
- var _9 = __read(useState(null), 2), userProgress = _9[0], setUserProgress = _9[1];
41060
- var _10 = __read(useState(0), 2), curDepth = _10[0], setCurDepth = _10[1];
41061
- var _11 = __read(useState(0), 2), maxDepth = _11[0], setMaxDepth = _11[1];
41111
+ var _9 = __read(useState(false), 2), finished = _9[0], setFinished = _9[1];
41112
+ var _10 = __read(useState(null), 2), userProgress = _10[0], setUserProgress = _10[1];
41113
+ var _11 = __read(useState(0), 2), curDepth = _11[0], setCurDepth = _11[1];
41114
+ var _12 = __read(useState(0), 2), maxDepth = _12[0], setMaxDepth = _12[1];
41062
41115
  // No state since off reason is set in two locations almost simultaneously
41063
41116
  var formOffReason = useRef('');
41064
- var _12 = __read(useState({
41117
+ var _13 = __read(useState({
41065
41118
  readOnly: readOnly,
41066
41119
  errorType: 'html5',
41067
41120
  autocomplete: 'on',
@@ -41080,21 +41133,21 @@ function Form(_a) {
41080
41133
  assistantEnabled: false,
41081
41134
  assistantColor: '#6b7280',
41082
41135
  assistantWorkflowActions: []
41083
- }), 2), formSettings = _12[0], setFormSettings = _12[1];
41136
+ }), 2), formSettings = _13[0], setFormSettings = _13[1];
41084
41137
  var trackHashes = useRef(false);
41085
41138
  var curLanguage = useRef(undefined);
41086
- var _13 = __read(useState([]), 2), fieldKeys = _13[0], setFieldKeys = _13[1];
41087
- var _14 = __read(useState({}), 2), hiddenFields = _14[0], setHiddenFields = _14[1];
41139
+ var _14 = __read(useState([]), 2), fieldKeys = _14[0], setFieldKeys = _14[1];
41140
+ var _15 = __read(useState({}), 2), hiddenFields = _15[0], setHiddenFields = _15[1];
41088
41141
  // Array of 2 elements. First is field whitelist, second is field blacklist
41089
- var _15 = __read(useState([null, null]), 2), allowLists = _15[0], setAllowLists = _15[1];
41090
- var _16 = __read(useState(), 2), connectorFields = _16[0], setConnectorFields = _16[1];
41091
- var _17 = __read(useState([]), 2), logicRules = _17[0], setLogicRules = _17[1];
41092
- var _18 = __read(useState([]), 2), sharedCodes = _18[0], setSharedCodes = _18[1];
41093
- var _19 = __read(useState({}), 2), inlineErrors = _19[0], setInlineErrors = _19[1];
41094
- var _20 = __read(useState(false), 2), setRepeatChanged = _20[1];
41095
- var _21 = __read(useState(null), 2), integrations = _21[0], setIntegrations = _21[1];
41142
+ var _16 = __read(useState([null, null]), 2), allowLists = _16[0], setAllowLists = _16[1];
41143
+ var _17 = __read(useState(), 2), connectorFields = _17[0], setConnectorFields = _17[1];
41144
+ var _18 = __read(useState([]), 2), logicRules = _18[0], setLogicRules = _18[1];
41145
+ var _19 = __read(useState([]), 2), sharedCodes = _19[0], setSharedCodes = _19[1];
41146
+ var _20 = __read(useState({}), 2), inlineErrors = _20[0], setInlineErrors = _20[1];
41147
+ var _21 = __read(useState(false), 2), setRepeatChanged = _21[1];
41148
+ var _22 = __read(useState(null), 2), integrations = _22[0], setIntegrations = _22[1];
41096
41149
  var flowCompleted = useRef(false);
41097
- var _22 = __read(useState(''), 2), requiredStepAction = _22[0], setRequiredStepAction = _22[1];
41150
+ var _23 = __read(useState(''), 2), requiredStepAction = _23[0], setRequiredStepAction = _23[1];
41098
41151
  var formLoadRan = useRef(false);
41099
41152
  // Lookup utility to find a servar (server field definition) by its key.
41100
41153
  // Needed because servars are nested within steps and may be across multiple steps,
@@ -41155,25 +41208,25 @@ function Form(_a) {
41155
41208
  ? 'Some file uploads are still pending. Please check your connection and try again.'
41156
41209
  : 'A file upload is still pending. Please check your connection and try again.');
41157
41210
  };
41158
- var _23 = __read(useState(function () {
41211
+ var _24 = __read(useState(function () {
41159
41212
  return getViewport(formSettings.mobileBreakpoint);
41160
- }), 2), viewport = _23[0], setViewport = _23[1];
41213
+ }), 2), viewport = _24[0], setViewport = _24[1];
41161
41214
  var prevAuthId = usePrevious(authState.authId);
41162
41215
  var prevStepKey = usePrevious(stepKey);
41163
41216
  // Set to trigger conditional renders on field value updates, no need to use the value itself
41164
- var _24 = __read(useState({ v: 1 }), 2), render = _24[0], setRender = _24[1];
41165
- var _25 = __read(useState(false), 2), showQuikFormViewer = _25[0], setShowQuikFormViewer = _25[1];
41166
- var _26 = __read(useState(''), 2), quikHTMLPayload = _26[0], setQuikHTMLPayload = _26[1];
41167
- var _27 = useFlinksConnect(), openFlinksConnect = _27.openFlinksConnect, flinksFrame = _27.flinksFrame;
41217
+ var _25 = __read(useState({ v: 1 }), 2), render = _25[0], setRender = _25[1];
41218
+ var _26 = __read(useState(false), 2), showQuikFormViewer = _26[0], setShowQuikFormViewer = _26[1];
41219
+ var _27 = __read(useState(''), 2), quikHTMLPayload = _27[0], setQuikHTMLPayload = _27[1];
41220
+ var _28 = useFlinksConnect(), openFlinksConnect = _28.openFlinksConnect, flinksFrame = _28.flinksFrame;
41168
41221
  // When the active step changes, recalculate the dimensions of the new step
41169
41222
  var stepCSS = useMemo(function () { return calculateStepCSS(activeStep); }, [activeStep]);
41170
- var _28 = __read(useState({
41223
+ var _29 = __read(useState({
41171
41224
  mode: 'current',
41172
41225
  isOpen: false,
41173
41226
  side: null,
41174
41227
  width: 0,
41175
41228
  isResizing: false
41176
- }), 2), assistantLayout = _28[0], setAssistantLayout = _28[1];
41229
+ }), 2), assistantLayout = _29[0], setAssistantLayout = _29[1];
41177
41230
  var handleAssistantLayoutChange = useCallback(function (state) { return setAssistantLayout(state); }, []);
41178
41231
  var assistantOffsetCSS = useMemo(function () {
41179
41232
  var _a;
@@ -41207,17 +41260,17 @@ function Form(_a) {
41207
41260
  client: client,
41208
41261
  _internalId: _internalId
41209
41262
  });
41210
- var _29 = __read(useState({}), 2), backNavMap = _29[0], setBackNavMap = _29[1];
41263
+ var _30 = __read(useState({}), 2), backNavMap = _30[0], setBackNavMap = _30[1];
41211
41264
  var updateBackNavMap = function (newNavs) {
41212
41265
  return newNavs && setBackNavMap(__assign(__assign({}, backNavMap), newNavs));
41213
41266
  };
41214
41267
  var formRef = useRef(null);
41215
- var _30 = useLoader({
41268
+ var _31 = useLoader({
41216
41269
  initialLoader: initialLoader,
41217
41270
  _isAuthLoading: _isAuthLoading,
41218
41271
  loaderBackgroundColor: stepCSS === null || stepCSS === void 0 ? void 0 : stepCSS.backgroundColor,
41219
41272
  formRef: formRef
41220
- }), clearLoaders = _30.clearLoaders, stepLoader = _30.stepLoader, buttonLoaders = _30.buttonLoaders, setLoaders = _30.setLoaders;
41273
+ }), clearLoaders = _31.clearLoaders, stepLoader = _31.stepLoader, buttonLoaders = _31.buttonLoaders, setLoaders = _31.setLoaders;
41221
41274
  // Completion loader helpers: keep the temporary completion loader scoped, reuse
41222
41275
  // designer-provided button loaders when present, and clear only our entry.
41223
41276
  var COMPLETION_LOADER_KEY = 'completionLoader';
@@ -41261,10 +41314,10 @@ function Form(_a) {
41261
41314
  return nextLoaders;
41262
41315
  });
41263
41316
  }, [setLoaders]);
41264
- var _31 = useAIExtractionToast(), currentActionExtractions = _31.currentActionExtractions, initializeActionExtractions = _31.initializeActionExtractions, updateExtractionInAction = _31.updateExtractionInAction, handleExtractionStatusUpdate = _31.handleExtractionStatusUpdate;
41265
- var _32 = useEnvelopeGenerationToast(), currentEnvelopeGeneration = _32.currentEnvelopeGeneration, initializeEnvelopeGeneration = _32.initializeEnvelopeGeneration, updateEnvelopeGeneration = _32.updateEnvelopeGeneration;
41317
+ var _32 = useAIExtractionToast(), currentActionExtractions = _32.currentActionExtractions, initializeActionExtractions = _32.initializeActionExtractions, updateExtractionInAction = _32.updateExtractionInAction, handleExtractionStatusUpdate = _32.handleExtractionStatusUpdate;
41318
+ var _33 = useEnvelopeGenerationToast(), currentEnvelopeGeneration = _33.currentEnvelopeGeneration, initializeEnvelopeGeneration = _33.initializeEnvelopeGeneration, updateEnvelopeGeneration = _33.updateEnvelopeGeneration;
41266
41319
  // Track ActionToast height for positioning WorkflowChat above it
41267
- var _33 = __read(useState(0), 2), actionToastHeight = _33[0], setActionToastHeight = _33[1];
41320
+ var _34 = __read(useState(0), 2), actionToastHeight = _34[0], setActionToastHeight = _34[1];
41268
41321
  var actionToastRef = useRef(null);
41269
41322
  var actionToastObserverRef = useRef(null);
41270
41323
  // Reset height when toast data becomes empty
@@ -41362,7 +41415,7 @@ function Form(_a) {
41362
41415
  setRequiredStepAction(requiredStepAction);
41363
41416
  }, [activeStep === null || activeStep === void 0 ? void 0 : activeStep.id]);
41364
41417
  // viewElements state
41365
- var _34 = __read(useState([]), 2), viewElements = _34[0], setViewElements = _34[1];
41418
+ var _35 = __read(useState([]), 2), viewElements = _35[0], setViewElements = _35[1];
41366
41419
  useEffect(function () {
41367
41420
  setViewElements(onViewElements);
41368
41421
  }, [onViewElements.length]);
@@ -41514,7 +41567,7 @@ function Form(_a) {
41514
41567
  return true;
41515
41568
  };
41516
41569
  // For audio AI only right now
41517
- var _35 = __read(useState(_pollFuserData), 2), pollFuserData = _35[0], setPollFuserData = _35[1];
41570
+ var _36 = __read(useState(_pollFuserData), 2), pollFuserData = _36[0], setPollFuserData = _36[1];
41518
41571
  usePollFuserData(pollFuserData, client, updateFieldValues);
41519
41572
  var eventCallbackMap = {
41520
41573
  change: onChange,
@@ -41669,12 +41722,6 @@ function Form(_a) {
41669
41722
  return runUserLogic('error', function () { return (__assign(__assign({}, props1), props2)); });
41670
41723
  };
41671
41724
  };
41672
- // keep internalState fresh
41673
- if (internalState[_internalId]) {
41674
- internalState[_internalId].setInlineErrors = setInlineErrors;
41675
- internalState[_internalId].inlineErrors = inlineErrors;
41676
- internalState[_internalId].logicRules = logicRules;
41677
- }
41678
41725
  var changeFormStep = function (newKey, oldKey, load) {
41679
41726
  var _a;
41680
41727
  var changed = changeStep(newKey, oldKey, steps, setStepKey, navigate, client, trackHashes.current);
@@ -41993,6 +42040,15 @@ function Form(_a) {
41993
42040
  }
41994
42041
  return visiblePositions;
41995
42042
  }, [activeStep, render, formSettings]);
42043
+ // keep internalState fresh
42044
+ if (internalState[_internalId]) {
42045
+ internalState[_internalId].setInlineErrors = setInlineErrors;
42046
+ internalState[_internalId].inlineErrors = inlineErrors;
42047
+ internalState[_internalId].logicRules = logicRules;
42048
+ if (visiblePositions) {
42049
+ internalState[_internalId].visiblePositions = visiblePositions;
42050
+ }
42051
+ }
41996
42052
  useEffect(function () {
41997
42053
  if (clientRef.current)
41998
42054
  return;
@@ -42329,7 +42385,7 @@ function Form(_a) {
42329
42385
  });
42330
42386
  }); };
42331
42387
  // usePayments (Stripe)
42332
- var _36 = __read(usePayments(), 2), getCardElement = _36[0], setCardElement = _36[1];
42388
+ var _37 = __read(usePayments(), 2), getCardElement = _37[0], setCardElement = _37[1];
42333
42389
  function setupStepPaymentMethod(formattedFields) {
42334
42390
  return __awaiter$2(this, void 0, void 0, function () {
42335
42391
  var i, field, integrationData, actionData, actionResult;
@@ -42664,7 +42720,7 @@ function Form(_a) {
42664
42720
  }
42665
42721
  return state;
42666
42722
  };
42667
- var _37 = useCheckButtonAction(setButtonLoader, clearLoaders), isButtonActionRunning = _37.isButtonActionRunning, updateButtonActionState = _37.updateButtonActionState, clearButtonActionState = _37.clearButtonActionState, setUserLogicRunning = _37.setUserLogicRunning;
42723
+ var _38 = useCheckButtonAction(setButtonLoader, clearLoaders), isButtonActionRunning = _38.isButtonActionRunning, updateButtonActionState = _38.updateButtonActionState, clearButtonActionState = _38.clearButtonActionState, setUserLogicRunning = _38.setUserLogicRunning;
42668
42724
  var buttonOnClick = function (button) { return __awaiter$2(_this, void 0, void 0, function () {
42669
42725
  var setButtonError, actions, preOpenedWindows, invalid, running, e_5;
42670
42726
  var _a;
@@ -43700,6 +43756,21 @@ function Form(_a) {
43700
43756
  }); }));
43701
43757
  }
43702
43758
  : undefined;
43759
+ if (internalState[_internalId]) {
43760
+ var callbacks = {
43761
+ buttonOnClick: buttonOnClick,
43762
+ runElementActions: runElementActions,
43763
+ tableOnClick: tableOnClick,
43764
+ changeValue: changeValue
43765
+ };
43766
+ if (assistantClientRef.current) {
43767
+ assistantClientRef.current.updateCallbacks(callbacks);
43768
+ }
43769
+ else {
43770
+ assistantClientRef.current = new AssistantClient(callbacks);
43771
+ internalState[_internalId].assistantClient = assistantClientRef.current;
43772
+ }
43773
+ }
43703
43774
  var form = {
43704
43775
  userProgress: userProgress,
43705
43776
  curDepth: curDepth,
@@ -43731,14 +43802,9 @@ function Form(_a) {
43731
43802
  setCardElement: setCardElement,
43732
43803
  visiblePositions: visiblePositions,
43733
43804
  calendly: (_b = integrations === null || integrations === void 0 ? void 0 : integrations.calendly) === null || _b === void 0 ? void 0 : _b.metadata,
43734
- featheryContext: getFormContext(_internalId)
43805
+ featheryContext: getFormContext(_internalId),
43806
+ assistantClient: (_c = internalState[_internalId]) === null || _c === void 0 ? void 0 : _c.assistantClient
43735
43807
  };
43736
- if (internalState[_internalId]) {
43737
- internalState[_internalId].assistantClient = new AssistantClient({
43738
- buttonOnClick: buttonOnClick,
43739
- runElementActions: runElementActions
43740
- });
43741
- }
43742
43808
  // If form was completed in a previous session and edits are disabled,
43743
43809
  // consider the form finished
43744
43810
  var anyFinished = finished || ((session === null || session === void 0 ? void 0 : session.form_completed) && !formSettings.allowEdits);
@@ -44980,7 +45046,7 @@ function loadSegment(segmentConfig, queue) {
44980
45046
  case 0:
44981
45047
  _a.trys.push([0, 2, , 3]);
44982
45048
  return [4 /*yield*/, import(
44983
- /* webpackChunkName: "segment" */ './fthry_index.Cn4kA2tn.js').then(function (n) { return n.q; })];
45049
+ /* webpackChunkName: "segment" */ './fthry_index.DnucOK6E.js').then(function (n) { return n.q; })];
44984
45050
  case 1:
44985
45051
  (AnalyticsBrowserClass = (_a.sent()).AnalyticsBrowser);
44986
45052
  return [3 /*break*/, 3];
@@ -47615,9 +47681,9 @@ function init(sdkKey, options) {
47615
47681
  if (runningInClient()) {
47616
47682
  // Dynamically load libraries that must be client side
47617
47683
  global.scriptjsLoadPromise = import(
47618
- /* webpackChunkName: "scriptjs" */ './fthry_script.4cQVioC4.js').then(function (n) { return n.s; });
47684
+ /* webpackChunkName: "scriptjs" */ './fthry_script.CnpXNBMs.js').then(function (n) { return n.s; });
47619
47685
  global.webfontloaderPromise = import(
47620
- /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.4kqCCEG_.js').then(function (n) { return n.w; });
47686
+ /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.sk5QAqQz.js').then(function (n) { return n.w; });
47621
47687
  // Client-side tracking logic
47622
47688
  if (initState.userTracking === 'cookie') {
47623
47689
  var cookieKey = "feathery-user-id-".concat(sdkKey);
@@ -47804,7 +47870,7 @@ function loadCompletedSteps(client) {
47804
47870
  });
47805
47871
  }
47806
47872
  function logFeatheryBadge() {
47807
- console.log('%c Feathery %c v' + "2.43.0" + ' ', // replaced with real version during build
47873
+ console.log('%c Feathery %c v' + "2.45.0" + ' ', // replaced with real version during build
47808
47874
  '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;');
47809
47875
  }
47810
47876
 
@@ -49319,64 +49385,64 @@ breakpoint) {
49319
49385
 
49320
49386
  var fieldLoaders = {
49321
49387
  AddressLine1: function () {
49322
- return import(/* webpackChunkName: "AddressField" */ './fthry_index.BDtWG5y-.js');
49388
+ return import(/* webpackChunkName: "AddressField" */ './fthry_index.2-SVehmd.js');
49323
49389
  },
49324
49390
  ButtonGroupField: function () {
49325
- return import(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.BALrl_Ek.js');
49391
+ return import(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.Cgd-qpYl.js');
49326
49392
  },
49327
49393
  CheckboxField: function () {
49328
- return import(/* webpackChunkName: "CheckboxField" */ './fthry_index.D2-zTdBQ.js');
49394
+ return import(/* webpackChunkName: "CheckboxField" */ './fthry_index.GDe8zYB6.js');
49329
49395
  },
49330
49396
  CheckboxGroupField: function () {
49331
- return import(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.4rXsgo8n.js');
49397
+ return import(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.CvV7-AsF.js');
49332
49398
  },
49333
49399
  ColorPickerField: function () {
49334
- return import(/* webpackChunkName: "ColorPickerField" */ './fthry_index.IaraEDTR.js');
49400
+ return import(/* webpackChunkName: "ColorPickerField" */ './fthry_index.BJAfme_C.js');
49335
49401
  },
49336
49402
  CustomField: function () {
49337
- return import(/* webpackChunkName: "CustomField" */ './fthry_index.C9P7Vo6r.js');
49403
+ return import(/* webpackChunkName: "CustomField" */ './fthry_index.Bf6OzsUG.js');
49338
49404
  },
49339
49405
  DateSelectorField: function () {
49340
- return import(/* webpackChunkName: "DateSelectorField" */ './fthry_index.BlrVY1vE.js');
49406
+ return import(/* webpackChunkName: "DateSelectorField" */ './fthry_index.BzD8ur9K.js');
49341
49407
  },
49342
49408
  DropdownField: function () {
49343
- return import(/* webpackChunkName: "DropdownField" */ './fthry_index.OgRdIE07.js');
49409
+ return import(/* webpackChunkName: "DropdownField" */ './fthry_index.CMC6lbTE.js');
49344
49410
  },
49345
49411
  DropdownMultiField: function () {
49346
- return import(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.DOGU2-kQ.js');
49412
+ return import(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.BDb1Gbdx.js');
49347
49413
  },
49348
49414
  FileUploadField: function () {
49349
- return import(/* webpackChunkName: "FileUploadField" */ './fthry_index.DtHlcCDX.js');
49415
+ return import(/* webpackChunkName: "FileUploadField" */ './fthry_index.BZayCCtc.js');
49350
49416
  },
49351
49417
  MatrixField: function () {
49352
- return import(/* webpackChunkName: "MatrixField" */ './fthry_index.C8xVXq31.js');
49418
+ return import(/* webpackChunkName: "MatrixField" */ './fthry_index.V6ue96dZ.js');
49353
49419
  },
49354
49420
  PasswordField: function () {
49355
- return import(/* webpackChunkName: "PasswordField" */ './fthry_index.CB6eTYmX.js');
49421
+ return import(/* webpackChunkName: "PasswordField" */ './fthry_index.B477V46H.js');
49356
49422
  },
49357
49423
  PaymentMethodField: function () {
49358
- return import(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.Bl2Ce36L.js');
49424
+ return import(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.BgiWNDi2.js');
49359
49425
  },
49360
- PhoneField: function () { return import(/* webpackChunkName: "PhoneField" */ './fthry_index.C-Af9t8c.js'); },
49426
+ PhoneField: function () { return import(/* webpackChunkName: "PhoneField" */ './fthry_index.RlS2LjeY.js'); },
49361
49427
  PinInputField: function () {
49362
- return import(/* webpackChunkName: "PinInputField" */ './fthry_index.0DlQOa4l.js');
49428
+ return import(/* webpackChunkName: "PinInputField" */ './fthry_index.M1FS-2Qf.js');
49363
49429
  },
49364
- QRScanner: function () { return import(/* webpackChunkName: "QRScanner" */ './fthry_index.CS604ePK.js'); },
49430
+ QRScanner: function () { return import(/* webpackChunkName: "QRScanner" */ './fthry_index.5I1jwuyV.js'); },
49365
49431
  RadioButtonGroupField: function () {
49366
49432
  return import(
49367
- /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.DzDuGB1B.js');
49433
+ /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.Bl-5T-uf.js');
49368
49434
  },
49369
49435
  RatingField: function () {
49370
- return import(/* webpackChunkName: "RatingField" */ './fthry_index.D8_hWgYx.js');
49436
+ return import(/* webpackChunkName: "RatingField" */ './fthry_index.DzSlJMlO.js');
49371
49437
  },
49372
49438
  SignatureField: function () {
49373
- return import(/* webpackChunkName: "SignatureField" */ './fthry_index.D3O1Qvm3.js');
49439
+ return import(/* webpackChunkName: "SignatureField" */ './fthry_index.BgDe4mcu.js');
49374
49440
  },
49375
49441
  SliderField: function () {
49376
- return import(/* webpackChunkName: "SliderField" */ './fthry_index.DFZRIGNF.js');
49442
+ return import(/* webpackChunkName: "SliderField" */ './fthry_index.CEMzrwVK.js');
49377
49443
  },
49378
- TextField: function () { return import(/* webpackChunkName: "TextField" */ './fthry_index.Cd0JKkOc.js'); },
49379
- TextArea: function () { return import(/* webpackChunkName: "TextArea" */ './fthry_index.x_DcI6GR.js'); }
49444
+ TextField: function () { return import(/* webpackChunkName: "TextField" */ './fthry_index.BUJPgzS-.js'); },
49445
+ TextArea: function () { return import(/* webpackChunkName: "TextArea" */ './fthry_index.o9ctQnbs.js'); }
49380
49446
  };
49381
49447
  var getPositionKey = function (element) { var _a; return ((_a = element.position) === null || _a === void 0 ? void 0 : _a.join(',')) || 'root'; };
49382
49448
  // Share the resolved component between preload and render. A separate
@@ -50624,7 +50690,7 @@ function ElementSkeleton(_a) {
50624
50690
  }
50625
50691
  var templateObject_1;
50626
50692
 
50627
- var TableElement = lazy(function () { return import(/* webpackChunkName: "TableElement" */ './fthry_index.DZviU_0h.js'); });
50693
+ var TableElement = lazy(function () { return import(/* webpackChunkName: "TableElement" */ './fthry_index.lm4XUzM9.js'); });
50628
50694
  var Basic = {
50629
50695
  ImageElement: ImageElement,
50630
50696
  VideoElement: VideoElement,
@@ -50921,4 +50987,4 @@ var Feathery = {
50921
50987
  renderAt: renderAt
50922
50988
  };
50923
50989
 
50924
- export { MODAL_Z_INDEX as $, emailPatternStr as A, replaceTextVariables as B, getDefaultExportFromCjs as C, DROPDOWN_Z_INDEX as D, ErrorInput as E, FORM_Z_INDEX as F, Global as G, debounce as H, isEmptyArray as I, toList as J, useThumbnailData as K, __spreadArray as L, downloadFile as M, CloseIcon as N, justRemove as O, isNum as P, phoneLib as Q, authState as R, firebaseSMSCountries as S, phoneLibPromise as T, __values as U, loadQRScanner as V, throttle as W, qrPromise as X, devicePixelRatio as Y, toBase64 as Z, __assign as _, jsx$1 as a, dataURLToFile as a0, stringify$2 as a1, rulesheet as a2, COMMENT as a3, middleware as a4, RULESET as a5, combine as a6, match as a7, serialize as a8, copy as a9, initInfo as aA, getCookie as aB, v4$1 as aC, ReactForm as aD, Elements as aE, init as aF, updateUserId as aG, updateTheme as aH, getFieldValues as aI, renderAt as aJ, LoginForm as aK, useAuthClient as aL, AssistantChat as aM, Feathery as aN, StyledContainer as aO, replace as aa, WEBKIT as ab, MOZ as ac, MS as ad, KEYFRAMES as ae, DECLARATION as af, dealloc as ag, alloc as ah, hash as ai, charat as aj, strlen as ak, indexof as al, next as am, token as an, from as ao, peek as ap, delimit as aq, slice as ar, position as as, compile as at, __extends as au, formatDateString as av, internalState as aw, initState as ax, setFieldValues as ay, loadPhoneValidator as az, iosScrollOnFocus as b, __read as c, countryData as d, css as e, fieldValues as f, __makeTemplateObject as g, hoverStylesGuard as h, imgMaxSizeStyles as i, jsxs as j, __rest$1 as k, __awaiter$2 as l, __generator as m, noTextSelectStyles as n, FeatheryClient as o, featheryWindow as p, Fragment as q, resetStyles as r, isMobile as s, featheryDoc as t, useBorder as u, getStripe as v, filterKeys as w, ERROR_COLOR as x, getFieldValue$1 as y, stringifyWithNull as z };
50990
+ export { MODAL_Z_INDEX as $, emailPatternStr as A, replaceTextVariables as B, getDefaultExportFromCjs as C, DROPDOWN_Z_INDEX as D, ErrorInput as E, FORM_Z_INDEX as F, Global as G, debounce as H, isEmptyArray as I, toList as J, useThumbnailData as K, __spreadArray as L, downloadFile as M, CloseIcon as N, justRemove as O, isNum as P, phoneLib as Q, authState as R, firebaseSMSCountries as S, phoneLibPromise as T, __values as U, loadQRScanner as V, throttle as W, qrPromise as X, devicePixelRatio as Y, toBase64 as Z, __assign as _, jsx$1 as a, dataURLToFile as a0, stringify$2 as a1, rulesheet as a2, COMMENT as a3, middleware as a4, RULESET as a5, combine as a6, match as a7, serialize as a8, copy as a9, getRepeatedContainer as aA, getDefaultFieldValue as aB, isButtonDisabled as aC, loadPhoneValidator as aD, initInfo as aE, getCookie as aF, v4$1 as aG, ReactForm as aH, Elements as aI, init as aJ, updateUserId as aK, updateTheme as aL, setFieldValues as aM, getFieldValues as aN, renderAt as aO, LoginForm as aP, useAuthClient as aQ, AssistantChat as aR, Feathery as aS, StyledContainer as aT, replace as aa, WEBKIT as ab, MOZ as ac, MS as ad, KEYFRAMES as ae, DECLARATION as af, dealloc as ag, alloc as ah, hash as ai, charat as aj, strlen as ak, indexof as al, next as am, token as an, from as ao, peek as ap, delimit as aq, slice as ar, position as as, compile as at, __extends as au, formatDateString as av, internalState as aw, getPositionKey$1 as ax, initState as ay, getRepeatedContainers as az, iosScrollOnFocus as b, __read as c, countryData as d, css as e, fieldValues as f, __makeTemplateObject as g, hoverStylesGuard as h, imgMaxSizeStyles as i, jsxs as j, __rest$1 as k, __awaiter$2 as l, __generator as m, noTextSelectStyles as n, FeatheryClient as o, featheryWindow as p, Fragment as q, resetStyles as r, isMobile as s, featheryDoc as t, useBorder as u, getStripe as v, filterKeys as w, ERROR_COLOR as x, getFieldValue$1 as y, stringifyWithNull as z };