@feathery/react 2.21.0 → 2.22.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 (108) hide show
  1. package/cjs/Form/index.d.ts.map +1 -1
  2. package/cjs/Form/tests/testMocks.d.ts.map +1 -1
  3. package/cjs/elements/components/FormOff.d.ts +5 -4
  4. package/cjs/elements/components/FormOff.d.ts.map +1 -1
  5. package/cjs/{fthry_FormControl.DFkoNS7m.js → fthry_FormControl.DO1VrNhK.js} +1 -1
  6. package/cjs/{fthry_InlineTooltip.BqrUvYsf.js → fthry_InlineTooltip.By-RR6_f.js} +2 -2
  7. package/cjs/{fthry_Overlay.BogxM8_x.js → fthry_Overlay.DWYTsRft.js} +1 -1
  8. package/cjs/{fthry_PaymentMethodField.O7j1bFxf.js → fthry_PaymentMethodField.BK4kwCOK.js} +4 -4
  9. package/cjs/{fthry_Placeholder.CeDmXoEH.js → fthry_Placeholder.6RgPOXj2.js} +1 -1
  10. package/cjs/{fthry_ShowEyeIcon.DB6Y0oJU.js → fthry_ShowEyeIcon.Bn3FCzSJ.js} +1 -1
  11. package/cjs/{fthry_index.DpdkY1k7.js → fthry_index.B21E8fM3.js} +1 -1
  12. package/cjs/{fthry_index.Cy-T4HCz.js → fthry_index.BH6XhQdp.js} +8 -8
  13. package/cjs/{fthry_index.BA-WFjGc.js → fthry_index.BtybYc89.js} +6 -6
  14. package/cjs/{fthry_index.DUau2wvs.js → fthry_index.CCS0xFt5.js} +4 -4
  15. package/cjs/{fthry_index.B6dz6_D2.js → fthry_index.CQ1H9R8w.js} +238 -74
  16. package/cjs/{fthry_index.DRNB-tCT.js → fthry_index.CWdkg5Zm.js} +5 -5
  17. package/cjs/{fthry_index.Br3HlsO5.js → fthry_index.CeQp5dil.js} +1 -1
  18. package/cjs/{fthry_index.J8P_vp8o.js → fthry_index.Ctj468qV.js} +1 -1
  19. package/cjs/{fthry_index.v9OD_-hq.js → fthry_index.Cv6mZaeK.js} +3 -3
  20. package/cjs/{fthry_index.CrI80enn.js → fthry_index.D4smc8or.js} +5 -5
  21. package/cjs/{fthry_index.CiPmoBTf.js → fthry_index.DFwy8zPz.js} +4 -4
  22. package/cjs/{fthry_index.-2aBRBrW.js → fthry_index.DSSKVn_1.js} +1 -1
  23. package/cjs/{fthry_index.DRz5hODR.js → fthry_index.DfbrnR6k.js} +5 -5
  24. package/cjs/{fthry_index.CkiBXgLp.js → fthry_index.DyZ1R4Ss.js} +5 -5
  25. package/cjs/{fthry_index.DzXZ-Rb_.js → fthry_index.Dz3HdZ1B.js} +3 -3
  26. package/cjs/{fthry_index.C3o0YyvM.js → fthry_index.DzPmH3iY.js} +1 -1
  27. package/cjs/{fthry_index.C5Pj-Zfh.js → fthry_index.Gx6e2BxN.js} +6 -6
  28. package/cjs/{fthry_index.DMEipzfW.js → fthry_index.S71Qur9B.js} +1 -1
  29. package/cjs/{fthry_index.WqEOU2O1.js → fthry_index.SwhJFwYK.js} +4 -4
  30. package/cjs/{fthry_index.GU6DtzCY.js → fthry_index.VkoiOsK9.js} +2 -2
  31. package/cjs/{fthry_index.BVa6RVKk.js → fthry_index.Vzvb_jcV.js} +6 -6
  32. package/cjs/{fthry_index.D2zIjosg.js → fthry_index.Y9ysXndZ.js} +2 -2
  33. package/cjs/{fthry_index.DhqYB5dK.js → fthry_index.k_4_AZEy.js} +1 -1
  34. package/cjs/{fthry_index.BnndrG3W.js → fthry_index.yRyX68Km.js} +1 -1
  35. package/cjs/{fthry_input.CAh1dh3q.js → fthry_input.DrPPpTdq.js} +1 -1
  36. package/cjs/{fthry_script.BTrurqF7.js → fthry_script.BKkDPtX8.js} +1 -1
  37. package/cjs/{fthry_styles.BPdPCGs1.js → fthry_styles.D3wpqY9E.js} +1 -1
  38. package/cjs/{fthry_useElementSize.8u2TF8ax.js → fthry_useElementSize.DN3P3ek_.js} +1 -1
  39. package/cjs/{fthry_useSalesforceSync.DViFa05Y.js → fthry_useSalesforceSync.DsBDJDOJ.js} +1 -1
  40. package/cjs/{fthry_webfontloader.BUWRlWxA.js → fthry_webfontloader.DVRrUK76.js} +1 -1
  41. package/cjs/index.d.ts +6 -0
  42. package/cjs/index.d.ts.map +1 -1
  43. package/cjs/index.js +1 -1
  44. package/cjs/utils/featheryClient/index.d.ts +6 -0
  45. package/cjs/utils/featheryClient/index.d.ts.map +1 -1
  46. package/cjs/utils/featheryClient/integrationClient.d.ts.map +1 -1
  47. package/cjs/utils/featheryClient/utils.d.ts +1 -0
  48. package/cjs/utils/featheryClient/utils.d.ts.map +1 -1
  49. package/cjs/utils/formContext.d.ts +6 -0
  50. package/cjs/utils/formContext.d.ts.map +1 -1
  51. package/cjs/utils/init.d.ts +1 -0
  52. package/cjs/utils/init.d.ts.map +1 -1
  53. package/cjs/utils/offlineRequestHandler.d.ts.map +1 -1
  54. package/dist/Form/index.d.ts.map +1 -1
  55. package/dist/Form/tests/testMocks.d.ts.map +1 -1
  56. package/dist/elements/components/FormOff.d.ts +5 -4
  57. package/dist/elements/components/FormOff.d.ts.map +1 -1
  58. package/dist/{fthry_FormControl.DqD-t0-5.js → fthry_FormControl.BxUrokqK.js} +1 -1
  59. package/dist/{fthry_InlineTooltip.CiQE9axD.js → fthry_InlineTooltip.Ci5tV_wI.js} +2 -2
  60. package/dist/{fthry_Overlay.DJD2-5uG.js → fthry_Overlay.DerqCNin.js} +1 -1
  61. package/dist/{fthry_PaymentMethodField.DA4PTzPY.js → fthry_PaymentMethodField.7kpfN-kk.js} +4 -4
  62. package/dist/{fthry_Placeholder.CpBJo_eu.js → fthry_Placeholder.4DL4VrHk.js} +1 -1
  63. package/dist/{fthry_ShowEyeIcon.Czn5uNUy.js → fthry_ShowEyeIcon.B630O_g-.js} +1 -1
  64. package/dist/{fthry_index.DTuI9CtE.js → fthry_index.3MYBbcV6.js} +1 -1
  65. package/dist/{fthry_index.D_6kZUzg.js → fthry_index.5O3QvVEZ.js} +8 -8
  66. package/dist/{fthry_index.rW2ARWsn.js → fthry_index.9PP8aHAm.js} +5 -5
  67. package/dist/{fthry_index.BLZHG42F.js → fthry_index.9SEFAxVs.js} +1 -1
  68. package/dist/{fthry_index.B2IqSOfR.js → fthry_index.B4025Nic.js} +5 -5
  69. package/dist/{fthry_index.BVcwTwxi.js → fthry_index.B5P56Wdn.js} +1 -1
  70. package/dist/{fthry_index.VO6RxzHm.js → fthry_index.B7Uxlphu.js} +1 -1
  71. package/dist/{fthry_index.BoctyUX4.js → fthry_index.BAWUo-9K.js} +1 -1
  72. package/dist/{fthry_index.DmQO11yP.js → fthry_index.BDrpWWPf.js} +238 -74
  73. package/dist/{fthry_index.CIQ5zg4E.js → fthry_index.CKr9necb.js} +1 -1
  74. package/dist/{fthry_index.D7Bb8rb7.js → fthry_index.CYGDbYS_.js} +3 -3
  75. package/dist/{fthry_index.B2MXQT_J.js → fthry_index.CZq04f_l.js} +4 -4
  76. package/dist/{fthry_index.BmyvNxXV.js → fthry_index.CgmyiGp_.js} +6 -6
  77. package/dist/{fthry_index.BYgv3YMr.js → fthry_index.Co1N5Wm2.js} +4 -4
  78. package/dist/{fthry_index.eRbqPcOr.js → fthry_index.D7-zC56j.js} +2 -2
  79. package/dist/{fthry_index.CXHlEhQc.js → fthry_index.D8pad3ZV.js} +1 -1
  80. package/dist/{fthry_index.BrMeQ_Gw.js → fthry_index.DCoMERuc.js} +3 -3
  81. package/dist/{fthry_index.BWMAYNPO.js → fthry_index.DE5w1XVV.js} +5 -5
  82. package/dist/{fthry_index.Z1du2f7I.js → fthry_index.DQhNMB2b.js} +2 -2
  83. package/dist/{fthry_index.BSvRoTKl.js → fthry_index.DhUtbNbg.js} +4 -4
  84. package/dist/{fthry_index.CyYMckiX.js → fthry_index.Dt1cSACI.js} +6 -6
  85. package/dist/{fthry_index.BUaA4R_x.js → fthry_index.YlaxQQbB.js} +1 -1
  86. package/dist/{fthry_index.BJvOP75r.js → fthry_index.jH4iMUwU.js} +5 -5
  87. package/dist/{fthry_index.DYcFA0C9.js → fthry_index.xli19cfL.js} +6 -6
  88. package/dist/{fthry_input.nuQO1Hyv.js → fthry_input.Bzvv0Hez.js} +1 -1
  89. package/dist/{fthry_script.C5Ls40h5.js → fthry_script.Df3ctynl.js} +1 -1
  90. package/dist/{fthry_styles.BrNC9imC.js → fthry_styles.DBhQHgTf.js} +1 -1
  91. package/dist/{fthry_useElementSize.CSBdwiEQ.js → fthry_useElementSize.C9CvRCmV.js} +1 -1
  92. package/dist/{fthry_useSalesforceSync.02x1VaLB.js → fthry_useSalesforceSync.CFutmtD2.js} +1 -1
  93. package/dist/{fthry_webfontloader.DuXmFIW7.js → fthry_webfontloader.BX5mmtRG.js} +1 -1
  94. package/dist/index.d.ts +6 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +1 -1
  97. package/dist/utils/featheryClient/index.d.ts +6 -0
  98. package/dist/utils/featheryClient/index.d.ts.map +1 -1
  99. package/dist/utils/featheryClient/integrationClient.d.ts.map +1 -1
  100. package/dist/utils/featheryClient/utils.d.ts +1 -0
  101. package/dist/utils/featheryClient/utils.d.ts.map +1 -1
  102. package/dist/utils/formContext.d.ts +6 -0
  103. package/dist/utils/formContext.d.ts.map +1 -1
  104. package/dist/utils/init.d.ts +1 -0
  105. package/dist/utils/init.d.ts.map +1 -1
  106. package/dist/utils/offlineRequestHandler.d.ts.map +1 -1
  107. package/package.json +2 -2
  108. package/umd/index.js +1 -1
@@ -5870,6 +5870,35 @@ var api$1 = {};
5870
5870
 
5871
5871
  var utils = {};
5872
5872
 
5873
+ var cookies = {};
5874
+
5875
+ var hasRequiredCookies;
5876
+
5877
+ function requireCookies () {
5878
+ if (hasRequiredCookies) return cookies;
5879
+ hasRequiredCookies = 1;
5880
+ Object.defineProperty(cookies, "__esModule", { value: true });
5881
+ cookies.getCookie = getCookie;
5882
+ /**
5883
+ * Get a cookie value
5884
+ *
5885
+ * @param name - The name of the cookie to retrieve
5886
+ * @returns The cookie value or null if not found or no browser
5887
+ */
5888
+ function getCookie(name) {
5889
+ if (typeof document === 'undefined')
5890
+ return null;
5891
+ const value = `; ${document.cookie}`;
5892
+ const parts = value.split(`; ${name}=`);
5893
+ if (parts.length === 2) {
5894
+ const cookieValue = parts.pop()?.split(';').shift();
5895
+ return cookieValue || null;
5896
+ }
5897
+ return null;
5898
+ }
5899
+ return cookies;
5900
+ }
5901
+
5873
5902
  var error = {};
5874
5903
 
5875
5904
  var hasRequiredError;
@@ -5878,7 +5907,7 @@ function requireError () {
5878
5907
  if (hasRequiredError) return error;
5879
5908
  hasRequiredError = 1;
5880
5909
  Object.defineProperty(error, "__esModule", { value: true });
5881
- error.ValidationError = error.SDKKeyError = error.FormConflictError = error.FetchError = void 0;
5910
+ error.ValidationError = error.FormAuthenticationError = error.SDKKeyError = error.FormConflictError = error.FetchError = void 0;
5882
5911
  error.parseAPIError = parseAPIError;
5883
5912
  class FetchError extends Error {
5884
5913
  constructor(message, payload = null) {
@@ -5902,6 +5931,13 @@ function requireError () {
5902
5931
  }
5903
5932
  }
5904
5933
  error.SDKKeyError = SDKKeyError;
5934
+ class FormAuthenticationError extends Error {
5935
+ constructor(message = 'User does not have access to this form') {
5936
+ super(message);
5937
+ this.name = 'FormAuthenticationError';
5938
+ }
5939
+ }
5940
+ error.FormAuthenticationError = FormAuthenticationError;
5905
5941
  class ValidationError extends Error {
5906
5942
  constructor(message) {
5907
5943
  super(message);
@@ -6009,6 +6045,7 @@ function requireUtils () {
6009
6045
  utils.apiFetch = apiFetch;
6010
6046
  utils.createHttpHelpers = createHttpHelpers;
6011
6047
  const api_1 = requireApi();
6048
+ const cookies_1 = requireCookies();
6012
6049
  const error_1 = requireError();
6013
6050
  const setup_1 = requireSetup();
6014
6051
  function getApiUrl() {
@@ -6047,6 +6084,10 @@ function requireUtils () {
6047
6084
  throw new error_1.FetchError(payload.toString());
6048
6085
  case 401:
6049
6086
  throw new error_1.SDKKeyError();
6087
+ case 403:
6088
+ payload = await response.clone().json();
6089
+ const message = (0, error_1.parseAPIError)(payload);
6090
+ throw new error_1.FormAuthenticationError(message);
6050
6091
  case 404:
6051
6092
  throw new error_1.FetchError("Can't find object");
6052
6093
  case 409:
@@ -6060,14 +6101,21 @@ function requireUtils () {
6060
6101
  async function apiFetch(sdkKey, url, options, parseResponse = true) {
6061
6102
  options = options ?? {};
6062
6103
  const { headers, ...otherOptions } = options;
6104
+ // Read JWT from cookie
6105
+ const sessionJwt = (0, cookies_1.getCookie)('feathery_session_token');
6106
+ const requestHeaders = {
6107
+ Authorization: 'Token ' + sdkKey,
6108
+ ...headers,
6109
+ };
6110
+ // Add session JWT if available
6111
+ if (sessionJwt) {
6112
+ requestHeaders['X-Feathery-Session'] = sessionJwt;
6113
+ }
6063
6114
  options = {
6064
6115
  cache: 'no-store',
6065
6116
  // write requests must succeed so data is tracked
6066
6117
  keepalive: ['POST', 'PATCH', 'PUT'].includes(options.method),
6067
- headers: {
6068
- Authorization: 'Token ' + sdkKey,
6069
- ...headers,
6070
- },
6118
+ headers: requestHeaders,
6071
6119
  ...otherOptions,
6072
6120
  };
6073
6121
  const { internalSecretKey } = (0, setup_1.getEnvironment)();
@@ -6410,7 +6458,7 @@ function requireDist$2 () {
6410
6458
  hasRequiredDist$2 = 1;
6411
6459
  (function (exports$1) {
6412
6460
  Object.defineProperty(exports$1, "__esModule", { value: true });
6413
- exports$1.setEnvironment = exports$1.parseAPIError = exports$1.FormConflictError = exports$1.SDKKeyError = exports$1.FetchError = exports$1.getS3Url = exports$1.getCdnUrl = exports$1.getStaticUrl = exports$1.getApiUrl = exports$1.createHttpHelpers = exports$1.checkResponseSuccess = exports$1.apiFetch = exports$1.sendEmail = exports$1.pollForCompletion = exports$1.inviteFormCollaborator = exports$1.getQuikAccountForms = exports$1.getQuikForms = exports$1.getQuikFormRoles = exports$1.generateQuikEnvelopes = exports$1.generateFormDocuments = exports$1.forwardInboxEmail = exports$1.extractAIDocument = exports$1.customRolloutAction = void 0;
6461
+ exports$1.setEnvironment = exports$1.parseAPIError = exports$1.FormConflictError = exports$1.FormAuthenticationError = exports$1.SDKKeyError = exports$1.FetchError = exports$1.getS3Url = exports$1.getCdnUrl = exports$1.getStaticUrl = exports$1.getApiUrl = exports$1.createHttpHelpers = exports$1.checkResponseSuccess = exports$1.apiFetch = exports$1.sendEmail = exports$1.pollForCompletion = exports$1.inviteFormCollaborator = exports$1.getQuikAccountForms = exports$1.getQuikForms = exports$1.getQuikFormRoles = exports$1.generateQuikEnvelopes = exports$1.generateFormDocuments = exports$1.forwardInboxEmail = exports$1.extractAIDocument = exports$1.customRolloutAction = void 0;
6414
6462
  var api_1 = requireApi();
6415
6463
  Object.defineProperty(exports$1, "customRolloutAction", { enumerable: true, get: function () { return api_1.customRolloutAction; } });
6416
6464
  Object.defineProperty(exports$1, "extractAIDocument", { enumerable: true, get: function () { return api_1.extractAIDocument; } });
@@ -6434,6 +6482,7 @@ function requireDist$2 () {
6434
6482
  var error_1 = requireError();
6435
6483
  Object.defineProperty(exports$1, "FetchError", { enumerable: true, get: function () { return error_1.FetchError; } });
6436
6484
  Object.defineProperty(exports$1, "SDKKeyError", { enumerable: true, get: function () { return error_1.SDKKeyError; } });
6485
+ Object.defineProperty(exports$1, "FormAuthenticationError", { enumerable: true, get: function () { return error_1.FormAuthenticationError; } });
6437
6486
  Object.defineProperty(exports$1, "FormConflictError", { enumerable: true, get: function () { return error_1.FormConflictError; } });
6438
6487
  Object.defineProperty(exports$1, "parseAPIError", { enumerable: true, get: function () { return error_1.parseAPIError; } });
6439
6488
  var setup_1 = requireSetup();
@@ -6453,6 +6502,16 @@ function handleFormConflict() {
6453
6502
  untrackUnload(true);
6454
6503
  featheryWindow().alert('This form has been updated. Please fill it out again.');
6455
6504
  location.reload();
6505
+ }
6506
+ function handleFormAuthenticationError(errorMessage) {
6507
+ untrackUnload(true);
6508
+ // Store the authentication error in initState so Form component can show FormOff
6509
+ initState.authenticationError =
6510
+ errorMessage || 'Access to this form is restricted';
6511
+ // Trigger a re-render by updating remount callbacks
6512
+ Object.values(initState.remountCallbacks).forEach(function (callback) {
6513
+ callback === null || callback === void 0 ? void 0 : callback();
6514
+ });
6456
6515
  }
6457
6516
 
6458
6517
  // Constants for the IndexedDB database
@@ -6952,9 +7011,9 @@ var OfflineRequestHandler = /** @class */ (function () {
6952
7011
  };
6953
7012
  var attemptRequest = function () { return __awaiter$2(_this, void 0, void 0, function () {
6954
7013
  var attempts, response, error_2, nextDelay;
6955
- var _a, _b, _c, _d, _e;
6956
- return __generator(this, function (_f) {
6957
- switch (_f.label) {
7014
+ var _a, _b, _c, _d, _e, _f;
7015
+ return __generator(this, function (_g) {
7016
+ switch (_g.label) {
6958
7017
  case 0:
6959
7018
  attempts = (_a = request.retryAttempts) !== null && _a !== void 0 ? _a : 0;
6960
7019
  // Ensure exhausted retries are marked as failed before being skipped
@@ -6962,54 +7021,58 @@ var OfflineRequestHandler = /** @class */ (function () {
6962
7021
  markFileUploadRetryFailure((_b = request.metadata) === null || _b === void 0 ? void 0 : _b.fieldKey);
6963
7022
  return [2 /*return*/];
6964
7023
  }
6965
- _f.label = 1;
7024
+ _g.label = 1;
6966
7025
  case 1:
6967
- if (!(attempts < this.maxRetryAttempts)) return [3 /*break*/, 13];
6968
- _f.label = 2;
7026
+ if (!(attempts < this.maxRetryAttempts)) return [3 /*break*/, 15];
7027
+ _g.label = 2;
6969
7028
  case 2:
6970
- _f.trys.push([2, 6, , 12]);
7029
+ _g.trys.push([2, 6, , 14]);
6971
7030
  return [4 /*yield*/, fetch(url, fetchOptions)];
6972
7031
  case 3:
6973
- response = _f.sent();
7032
+ response = _g.sent();
6974
7033
  return [4 /*yield*/, distExports$2.checkResponseSuccess(response)];
6975
7034
  case 4:
6976
- _f.sent();
7035
+ _g.sent();
6977
7036
  markFileUploadRetrySuccess((_c = request.metadata) === null || _c === void 0 ? void 0 : _c.fieldKey);
6978
7037
  return [4 /*yield*/, this.removeRequest(key)];
6979
7038
  case 5:
6980
- _f.sent();
7039
+ _g.sent();
6981
7040
  return [2 /*return*/];
6982
7041
  case 6:
6983
- error_2 = _f.sent();
6984
- if (error_2 instanceof distExports$2.FormConflictError) {
6985
- handleFormConflict();
6986
- return [2 /*return*/];
6987
- }
7042
+ error_2 = _g.sent();
7043
+ if (!(error_2 instanceof distExports$2.FormConflictError)) return [3 /*break*/, 8];
7044
+ handleFormConflict();
7045
+ markFileUploadRetrySuccess((_d = request.metadata) === null || _d === void 0 ? void 0 : _d.fieldKey);
7046
+ return [4 /*yield*/, this.removeRequest(key)];
7047
+ case 7:
7048
+ _g.sent();
7049
+ return [2 /*return*/];
7050
+ case 8:
6988
7051
  attempts++;
6989
7052
  return [4 /*yield*/, this.updateRetryAttempts(key, attempts)];
6990
- case 7:
6991
- _f.sent();
6992
- if (!navigator.onLine) return [3 /*break*/, 9];
7053
+ case 9:
7054
+ _g.sent();
7055
+ if (!navigator.onLine) return [3 /*break*/, 11];
6993
7056
  nextDelay = this.getExponentialDelay(attempts);
6994
7057
  if (attempts >= this.maxRetryAttempts) {
6995
7058
  // Skip alerting when a specific field upload already surfaces its own retry error
6996
- if (this.errorCallback && !((_d = request.metadata) === null || _d === void 0 ? void 0 : _d.fieldKey)) {
7059
+ if (this.errorCallback && !((_e = request.metadata) === null || _e === void 0 ? void 0 : _e.fieldKey)) {
6997
7060
  this.errorCallback("Failed to submit after ".concat(this.maxRetryAttempts, " attempts. Please check your connection and try again."));
6998
7061
  }
6999
- markFileUploadRetryFailure((_e = request.metadata) === null || _e === void 0 ? void 0 : _e.fieldKey);
7062
+ markFileUploadRetryFailure((_f = request.metadata) === null || _f === void 0 ? void 0 : _f.fieldKey);
7000
7063
  return [2 /*return*/];
7001
7064
  }
7002
7065
  return [4 /*yield*/, this.delay(nextDelay)];
7003
- case 8:
7004
- _f.sent();
7005
- return [3 /*break*/, 11];
7006
- case 9: return [4 /*yield*/, this.onlineAndReplayed()];
7007
7066
  case 10:
7008
- _f.sent();
7067
+ _g.sent();
7068
+ return [3 /*break*/, 13];
7069
+ case 11: return [4 /*yield*/, this.onlineAndReplayed()];
7070
+ case 12:
7071
+ _g.sent();
7009
7072
  return [2 /*return*/];
7010
- case 11: return [3 /*break*/, 12];
7011
- case 12: return [3 /*break*/, 1];
7012
- case 13: return [2 /*return*/];
7073
+ case 13: return [3 /*break*/, 14];
7074
+ case 14: return [3 /*break*/, 1];
7075
+ case 15: return [2 /*return*/];
7013
7076
  }
7014
7077
  });
7015
7078
  }); };
@@ -7380,12 +7443,20 @@ var IntegrationClient = /** @class */ (function () {
7380
7443
  if (parseResponse === void 0) { parseResponse = true; }
7381
7444
  if (propagateNetworkErrors === void 0) { propagateNetworkErrors = false; }
7382
7445
  var sdkKey = initInfo().sdkKey;
7446
+ // Stop making requests if authentication error has occurred
7447
+ if (initState.authenticationError) {
7448
+ return Promise.resolve(undefined);
7449
+ }
7383
7450
  return distExports$2.apiFetch(sdkKey, url, options, parseResponse).catch(function (e) {
7384
7451
  var _a;
7385
7452
  if (e instanceof distExports$2.FormConflictError) {
7386
7453
  handleFormConflict();
7387
7454
  return;
7388
7455
  }
7456
+ if (e instanceof distExports$2.FormAuthenticationError) {
7457
+ handleFormAuthenticationError(e.message);
7458
+ return;
7459
+ }
7389
7460
  // Ignore TypeErrors if form has redirected because `fetch` in
7390
7461
  // Safari will error after redirect
7391
7462
  var ignore = ((_a = _this.ignoreNetworkErrors) === null || _a === void 0 ? void 0 : _a.current) ||
@@ -20222,7 +20293,7 @@ var messages = (_a = {},
20222
20293
  _a[NO_BUSINESS_EMAIL] = 'Activate forms by adding an email from a company domain to your Feathery account',
20223
20294
  _a);
20224
20295
  function FormOff(_a) {
20225
- var _b = _a.width, width = _b === void 0 ? 400 : _b, _c = _a.reason, reason = _c === void 0 ? CLOSED : _c, _d = _a.showCTA, showCTA = _d === void 0 ? true : _d;
20296
+ var _b = _a.width, width = _b === void 0 ? 400 : _b, _c = _a.reason, reason = _c === void 0 ? CLOSED : _c, _d = _a.showCTA, showCTA = _d === void 0 ? true : _d, message = _a.message;
20226
20297
  return (jsxs("div", exports.__assign({ css: {
20227
20298
  width: '100%',
20228
20299
  height: '100%',
@@ -20239,7 +20310,7 @@ function FormOff(_a) {
20239
20310
  lineHeight: '32px',
20240
20311
  textAlign: 'center',
20241
20312
  margin: '50px 0'
20242
- } }, { children: messages[reason] })), showCTA && (jsx$1("button", exports.__assign({ css: {
20313
+ } }, { children: message || messages[reason] })), showCTA && (jsx$1("button", exports.__assign({ css: {
20243
20314
  border: '1px solid #e2626e',
20244
20315
  color: '#e2626e',
20245
20316
  outline: 'none',
@@ -22718,6 +22789,10 @@ var getFormContext = function (formUuid) {
22718
22789
  setCollaboratorAsCompleted: function (templateId) {
22719
22790
  return formState.client.setCollaboratorAsCompleted(templateId);
22720
22791
  },
22792
+ dataHubAction: function (_a) {
22793
+ var hubId = _a.hubId, operation = _a.operation, entryId = _a.entryId, data = _a.data;
22794
+ return formState.client.dataHubAction({ hubId: hubId, operation: operation, entryId: entryId, data: data });
22795
+ },
22721
22796
  generateDocuments: function (_a) {
22722
22797
  var documentIds = _a.documentIds, download = _a.download, merge = _a.merge;
22723
22798
  return formState.client.generateDocuments({ documentIds: documentIds, download: download, merge: merge });
@@ -39028,6 +39103,26 @@ var getSubmissionErrorMessage = function (error) {
39028
39103
  }
39029
39104
  return 'Submission failed. Please try again.';
39030
39105
  };
39106
+ function closePreOpenedWindows(windows) {
39107
+ windows.forEach(function (win) { return win === null || win === void 0 ? void 0 : win.close(); });
39108
+ }
39109
+ // Pre-open windows synchronously within the user-gesture call stack on iOS.
39110
+ // iOS Safari blocks window.open() after any await breaks the gesture chain.
39111
+ function preOpenIOSWindows(actions) {
39112
+ var windows = new Map();
39113
+ if (isIOS()) {
39114
+ actions.forEach(function (action, idx) {
39115
+ if (action.type === ACTION_URL && action.open_tab) {
39116
+ var win = featheryWindow().open('about:blank', '_blank');
39117
+ if (win) {
39118
+ win.opener = null;
39119
+ windows.set(idx, win);
39120
+ }
39121
+ }
39122
+ });
39123
+ }
39124
+ return windows;
39125
+ }
39031
39126
  function Form(_a) {
39032
39127
  var _this = this;
39033
39128
  var _b;
@@ -40562,7 +40657,7 @@ function Form(_a) {
40562
40657
  };
40563
40658
  var _35 = useCheckButtonAction(setButtonLoader, clearLoaders), isButtonActionRunning = _35.isButtonActionRunning, updateButtonActionState = _35.updateButtonActionState, clearButtonActionState = _35.clearButtonActionState, setUserLogicRunning = _35.setUserLogicRunning;
40564
40659
  var buttonOnClick = function (button) { return __awaiter$2(_this, void 0, void 0, function () {
40565
- var setButtonError, invalid, running, e_5;
40660
+ var setButtonError, actions, preOpenedWindows, invalid, running, e_5;
40566
40661
  var _a;
40567
40662
  return __generator(this, function (_b) {
40568
40663
  switch (_b.label) {
@@ -40589,6 +40684,8 @@ function Form(_a) {
40589
40684
  });
40590
40685
  }, 10);
40591
40686
  };
40687
+ actions = prioritizeActions((_a = button.properties.actions) !== null && _a !== void 0 ? _a : []);
40688
+ preOpenedWindows = preOpenIOSWindows(actions);
40592
40689
  _b.label = 3;
40593
40690
  case 3:
40594
40691
  _b.trys.push([3, 7, , 8]);
@@ -40597,17 +40694,19 @@ function Form(_a) {
40597
40694
  case 4:
40598
40695
  invalid = _b.sent();
40599
40696
  if (invalid) {
40697
+ closePreOpenedWindows(preOpenedWindows);
40600
40698
  setButtonError("You didn't pass CAPTCHA verification");
40601
40699
  return [2 /*return*/];
40602
40700
  }
40603
40701
  _b.label = 5;
40604
40702
  case 5: return [4 /*yield*/, runElementActions({
40605
- actions: (_a = button.properties.actions) !== null && _a !== void 0 ? _a : [],
40703
+ actions: actions,
40606
40704
  element: button,
40607
40705
  elementType: 'button',
40608
40706
  submit: button.properties.submit,
40609
40707
  setElementError: setButtonError,
40610
- onAsyncEnd: function () { return clearLoaders(); }
40708
+ onAsyncEnd: function () { return clearLoaders(); },
40709
+ preOpenedWindows: preOpenedWindows
40611
40710
  })];
40612
40711
  case 6:
40613
40712
  running = _b.sent();
@@ -40617,6 +40716,7 @@ function Form(_a) {
40617
40716
  return [3 /*break*/, 8];
40618
40717
  case 7:
40619
40718
  e_5 = _b.sent();
40719
+ closePreOpenedWindows(preOpenedWindows);
40620
40720
  // Clear the click lock so user can retry
40621
40721
  if (button.id) {
40622
40722
  elementClicks[button.id] = false;
@@ -40674,21 +40774,25 @@ function Form(_a) {
40674
40774
  // Some actions (Persona, Plaid, etc) require special handling: they pause execution and
40675
40775
  // provide a callback for continuing to the next action once they complete.
40676
40776
  var runElementActions = function (_a) {
40677
- var actions = _a.actions, element = _a.element, elementType = _a.elementType, _b = _a.submit, submit = _b === void 0 ? false : _b, _c = _a.setElementError, setElementError = _c === void 0 ? function () { } : _c, _d = _a.onAsyncEnd, onAsyncEnd = _d === void 0 ? function () { } : _d, textSpanStart = _a.textSpanStart, textSpanEnd = _a.textSpanEnd, triggerPayload = _a.triggerPayload;
40777
+ var actions = _a.actions, element = _a.element, elementType = _a.elementType, _b = _a.submit, submit = _b === void 0 ? false : _b, _c = _a.setElementError, setElementError = _c === void 0 ? function () { } : _c, _d = _a.onAsyncEnd, onAsyncEnd = _d === void 0 ? function () { } : _d, textSpanStart = _a.textSpanStart, textSpanEnd = _a.textSpanEnd, triggerPayload = _a.triggerPayload, externalPreOpenedWindows = _a.preOpenedWindows;
40678
40778
  return __awaiter$2(_this, void 0, void 0, function () {
40679
- var id, metadata, trigger, submitPromise, pendingFileKeys, invalid, hasNext, submissionResult, error_3, _e, stepPromise, flowOnSuccess, actionTypes, runAction, i, hasExtractions, hasEnvelopeGeneration, _loop_1, state_1;
40779
+ var id, preOpenedWindows, metadata, trigger, submitPromise, pendingFileKeys, invalid, hasNext, submissionResult, error_3, _e, stepPromise, flowOnSuccess, actionTypes, runAction, i, hasExtractions, hasEnvelopeGeneration, _loop_1, state_1;
40680
40780
  var _this = this;
40681
40781
  var _f, _g, _h, _j, _k;
40682
40782
  return __generator(this, function (_l) {
40683
40783
  switch (_l.label) {
40684
40784
  case 0:
40685
40785
  id = (_f = element.id) !== null && _f !== void 0 ? _f : '';
40786
+ preOpenedWindows = externalPreOpenedWindows !== null && externalPreOpenedWindows !== void 0 ? externalPreOpenedWindows : new Map();
40686
40787
  // Prevent rapid re-clicks on the same element during async operations (file uploads, API calls)
40687
- if (id && elementClicks[id])
40788
+ if (id && elementClicks[id]) {
40789
+ closePreOpenedWindows(preOpenedWindows);
40688
40790
  return [2 /*return*/];
40791
+ }
40689
40792
  elementClicks[id] = true;
40690
40793
  if (isButtonActionRunning()) {
40691
40794
  elementClicks[id] = false;
40795
+ closePreOpenedWindows(preOpenedWindows);
40692
40796
  return [2 /*return*/, true];
40693
40797
  }
40694
40798
  updateButtonActionState(elementType, element, triggerPayload);
@@ -40708,6 +40812,7 @@ function Form(_a) {
40708
40812
  setElementError(REQUIRED_FLOW_ACTIONS[requiredStepAction]);
40709
40813
  elementClicks[id] = false;
40710
40814
  clearButtonActionState();
40815
+ closePreOpenedWindows(preOpenedWindows);
40711
40816
  return [2 /*return*/];
40712
40817
  }
40713
40818
  pendingFileKeys = getPendingFileUploadKeys();
@@ -40743,6 +40848,7 @@ function Form(_a) {
40743
40848
  setAutoValidate(true);
40744
40849
  elementClicks[id] = false;
40745
40850
  clearButtonActionState();
40851
+ closePreOpenedWindows(preOpenedWindows);
40746
40852
  return [2 /*return*/];
40747
40853
  }
40748
40854
  hasNext = actions.some(function (action) { return action.type === ACTION_NEXT; }) &&
@@ -40763,6 +40869,7 @@ function Form(_a) {
40763
40869
  if (!submissionResult) {
40764
40870
  elementClicks[id] = false;
40765
40871
  clearButtonActionState();
40872
+ closePreOpenedWindows(preOpenedWindows);
40766
40873
  return [2 /*return*/];
40767
40874
  }
40768
40875
  _e = __read(submissionResult, 1), stepPromise = _e[0];
@@ -40780,9 +40887,14 @@ function Form(_a) {
40780
40887
  submitPromise.catch(function () { });
40781
40888
  _l.label = 7;
40782
40889
  case 7:
40783
- // Adjust action order to prioritize certain actions and
40784
- // to ensure all actions are run as expected
40785
- actions = prioritizeActions(actions);
40890
+ if (!externalPreOpenedWindows)
40891
+ actions = prioritizeActions(actions);
40892
+ // Guards text/container callers if an async onAction or action logic rule breaks the gesture chain
40893
+ if (!externalPreOpenedWindows) {
40894
+ preOpenIOSWindows(actions).forEach(function (win, idx) {
40895
+ return preOpenedWindows.set(idx, win);
40896
+ });
40897
+ }
40786
40898
  flowOnSuccess = function (index) { return function () { return __awaiter$2(_this, void 0, void 0, function () {
40787
40899
  var running;
40788
40900
  return __generator(this, function (_a) {
@@ -40834,7 +40946,7 @@ function Form(_a) {
40834
40946
  initializeEnvelopeGeneration(actions);
40835
40947
  }
40836
40948
  _loop_1 = function () {
40837
- var action, type, container, container, personaMeta, url, eventData, phoneNum, e_6, phoneNum, e_7, emailAddress, e_8, pinKey, pin, params, hasErr_1, prom, email, e_9, auth, loginStep, actionSuccess, val, valid, val, invitees, res, collabKey, newVals, e_10, e_11, extractions, _loop_2, state_2, data, errorEntry, e_12, envelopeId, data, envAction, url, eventData, files, newValues, e_13, payload, e_14, key_1, val, servar_1, hiddenFieldType, destVal, setToDefaultValue, curIndex, defaultVal, i_1, newValues, phoneNum, silentVeriResult, key, newValues, e_15, phoneNum, phoneType, key, newValues, e_16, phoneNum, e_17, pinKey, pin, pinMatch, e_18;
40949
+ var action, type, container, container, personaMeta, url, preOpened, eventData, phoneNum, e_6, phoneNum, e_7, emailAddress, e_8, pinKey, pin, params, hasErr_1, prom, email, e_9, auth, loginStep, actionSuccess, val, valid, val, invitees, res, collabKey, newVals, e_10, e_11, extractions, _loop_2, state_2, data, errorEntry, e_12, envelopeId, data, envAction, url, eventData, files, newValues, e_13, payload, e_14, key_1, val, servar_1, hiddenFieldType, destVal, setToDefaultValue, curIndex, defaultVal, i_1, newValues, phoneNum, silentVeriResult, key, newValues, e_15, phoneNum, phoneType, key, newValues, e_16, phoneNum, e_17, pinKey, pin, pinMatch, e_18;
40838
40950
  var _m, _o, _p, _q, _r, _s, _t;
40839
40951
  return __generator(this, function (_u) {
40840
40952
  switch (_u.label) {
@@ -40911,8 +41023,16 @@ function Form(_a) {
40911
41023
  if (url) {
40912
41024
  if (!url.includes(':'))
40913
41025
  url = 'https://' + url;
40914
- if (action.open_tab)
40915
- openTab(url);
41026
+ if (action.open_tab) {
41027
+ preOpened = preOpenedWindows.get(i);
41028
+ if (preOpened) {
41029
+ preOpened.location.href = url;
41030
+ preOpenedWindows.delete(i);
41031
+ }
41032
+ else {
41033
+ openTab(url);
41034
+ }
41035
+ }
40916
41036
  }
40917
41037
  if (!!action.open_tab) return [3 /*break*/, 21];
40918
41038
  eventData = {
@@ -41490,6 +41610,7 @@ function Form(_a) {
41490
41610
  i++;
41491
41611
  return [3 /*break*/, 9];
41492
41612
  case 12:
41613
+ closePreOpenedWindows(preOpenedWindows);
41493
41614
  if (i < actions.length) {
41494
41615
  elementClicks[id] = false;
41495
41616
  clearButtonActionState();
@@ -41611,6 +41732,10 @@ function Form(_a) {
41611
41732
  };
41612
41733
  handleFormComplete().then(redirectForm);
41613
41734
  }, [anyFinished]);
41735
+ // Form authentication error (403)
41736
+ if (initState.authenticationError) {
41737
+ return (jsx$1(FormOff, { reason: CLOSED, message: initState.authenticationError, showCTA: false }));
41738
+ }
41614
41739
  // Form is turned off
41615
41740
  if (formOffReason.current === CLOSED)
41616
41741
  return jsx$1(FormOff, { showCTA: formSettings.showBrand });
@@ -45691,6 +45816,43 @@ var FeatheryClient = /** @class */ (function (_super) {
45691
45816
  });
45692
45817
  });
45693
45818
  };
45819
+ FeatheryClient.prototype.dataHubAction = function (_a) {
45820
+ var hubId = _a.hubId, operation = _a.operation, entryId = _a.entryId, data = _a.data;
45821
+ return __awaiter$2(this, void 0, void 0, function () {
45822
+ var baseUrl, url, response, _b, _c;
45823
+ return __generator(this, function (_d) {
45824
+ switch (_d.label) {
45825
+ case 0:
45826
+ baseUrl = new URL(distExports$2.getApiUrl()).origin;
45827
+ url = "".concat(baseUrl, "/api/hub/").concat(hubId, "/action/");
45828
+ return [4 /*yield*/, this._fetch(url, {
45829
+ headers: { 'Content-Type': 'application/json' },
45830
+ method: 'POST',
45831
+ body: JSON.stringify({
45832
+ operation: operation,
45833
+ entry_id: entryId,
45834
+ data: data,
45835
+ form_key: this.formKey
45836
+ })
45837
+ }, false)];
45838
+ case 1:
45839
+ response = _d.sent();
45840
+ if (!response) return [3 /*break*/, 5];
45841
+ if (response.status === 204)
45842
+ return [2 /*return*/, null];
45843
+ if (!response.ok) return [3 /*break*/, 3];
45844
+ return [4 /*yield*/, response.json()];
45845
+ case 2: return [2 /*return*/, _d.sent()];
45846
+ case 3:
45847
+ _b = Error;
45848
+ _c = distExports$2.parseAPIError;
45849
+ return [4 /*yield*/, response.json()];
45850
+ case 4: throw _b.apply(void 0, [_c.apply(void 0, [_d.sent()])]);
45851
+ case 5: return [2 /*return*/];
45852
+ }
45853
+ });
45854
+ });
45855
+ };
45694
45856
  return FeatheryClient;
45695
45857
  }(IntegrationClient));
45696
45858
 
@@ -45742,6 +45904,8 @@ function init(sdkKey, options) {
45742
45904
  return Promise.resolve((_a = initState.userId) !== null && _a !== void 0 ? _a : ''); // can only be initialized one time per load
45743
45905
  logFeatheryBadge();
45744
45906
  initState.initialized = true;
45907
+ // Clear any previous authentication errors on new initialization
45908
+ initState.authenticationError = undefined;
45745
45909
  initState.sdkKey = sdkKey;
45746
45910
  if (options._enterpriseRegion)
45747
45911
  initState.region = options._enterpriseRegion.toLowerCase();
@@ -45768,9 +45932,9 @@ function init(sdkKey, options) {
45768
45932
  if (runningInClient()) {
45769
45933
  // Dynamically load libraries that must be client side
45770
45934
  global.scriptjsLoadPromise = Promise.resolve().then(function () { return require(
45771
- /* webpackChunkName: "scriptjs" */ './fthry_script.BTrurqF7.js'); }).then(function (n) { return n.script; });
45935
+ /* webpackChunkName: "scriptjs" */ './fthry_script.BKkDPtX8.js'); }).then(function (n) { return n.script; });
45772
45936
  global.webfontloaderPromise = Promise.resolve().then(function () { return require(
45773
- /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.BUWRlWxA.js'); }).then(function (n) { return n.webfontloader; });
45937
+ /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.DVRrUK76.js'); }).then(function (n) { return n.webfontloader; });
45774
45938
  // Client-side tracking logic
45775
45939
  if (initState.userTracking === 'cookie') {
45776
45940
  var cookieKey = "feathery-user-id-".concat(sdkKey);
@@ -45916,7 +46080,7 @@ function getFieldValues() {
45916
46080
  return exports.__assign({}, exports.fieldValues);
45917
46081
  }
45918
46082
  function logFeatheryBadge() {
45919
- console.log('%c Feathery %c v' + "2.21.0" + ' ', // replaced with real version during build
46083
+ console.log('%c Feathery %c v' + "2.22.1" + ' ', // replaced with real version during build
45920
46084
  '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;');
45921
46085
  }
45922
46086
 
@@ -47344,39 +47508,39 @@ breakpoint) {
47344
47508
  return styles.getTarget('inner-container', undefined, viewport === 'mobile');
47345
47509
  };
47346
47510
 
47347
- var AddressLine1 = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "AddressField" */ './fthry_index.CrI80enn.js'); }); });
47348
- var ButtonGroupField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.DUau2wvs.js'); }); });
47349
- var CheckboxField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxField" */ './fthry_index.BnndrG3W.js'); }); });
47511
+ var AddressLine1 = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "AddressField" */ './fthry_index.D4smc8or.js'); }); });
47512
+ var ButtonGroupField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.CCS0xFt5.js'); }); });
47513
+ var CheckboxField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxField" */ './fthry_index.yRyX68Km.js'); }); });
47350
47514
  var CheckboxGroupField = React.lazy(function () {
47351
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.C5Pj-Zfh.js'); });
47515
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.Gx6e2BxN.js'); });
47352
47516
  });
47353
- var ColorPickerField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ColorPickerField" */ './fthry_index.C3o0YyvM.js'); }); });
47354
- var CustomField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CustomField" */ './fthry_index.DMEipzfW.js'); }); });
47517
+ var ColorPickerField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "ColorPickerField" */ './fthry_index.DzPmH3iY.js'); }); });
47518
+ var CustomField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "CustomField" */ './fthry_index.S71Qur9B.js'); }); });
47355
47519
  var DateSelectorField = React.lazy(function () {
47356
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "DateSelectorField" */ './fthry_index.BVa6RVKk.js'); });
47520
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "DateSelectorField" */ './fthry_index.Vzvb_jcV.js'); });
47357
47521
  });
47358
- var DropdownField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownField" */ './fthry_index.CiPmoBTf.js'); }); });
47522
+ var DropdownField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownField" */ './fthry_index.DFwy8zPz.js'); }); });
47359
47523
  var DropdownMultiField = React.lazy(function () {
47360
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.DRNB-tCT.js'); });
47524
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.CWdkg5Zm.js'); });
47361
47525
  });
47362
- var FileUploadField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "FileUploadField" */ './fthry_index.Br3HlsO5.js'); }); });
47363
- var MatrixField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "MatrixField" */ './fthry_index.v9OD_-hq.js'); }); });
47364
- var PasswordField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PasswordField" */ './fthry_index.CkiBXgLp.js'); }); });
47526
+ var FileUploadField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "FileUploadField" */ './fthry_index.CeQp5dil.js'); }); });
47527
+ var MatrixField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "MatrixField" */ './fthry_index.Cv6mZaeK.js'); }); });
47528
+ var PasswordField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PasswordField" */ './fthry_index.DyZ1R4Ss.js'); }); });
47365
47529
  var PaymentMethodField = React.lazy(function () {
47366
- return Promise.resolve().then(function () { return require(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.O7j1bFxf.js'); });
47530
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.BK4kwCOK.js'); });
47367
47531
  });
47368
- var PhoneField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PhoneField" */ './fthry_index.DRz5hODR.js'); }); });
47369
- var PinInputField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PinInputField" */ './fthry_index.-2aBRBrW.js'); }); });
47370
- var QRScanner = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "QRScanner" */ './fthry_index.GU6DtzCY.js'); }); });
47532
+ var PhoneField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PhoneField" */ './fthry_index.DfbrnR6k.js'); }); });
47533
+ var PinInputField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "PinInputField" */ './fthry_index.DSSKVn_1.js'); }); });
47534
+ var QRScanner = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "QRScanner" */ './fthry_index.VkoiOsK9.js'); }); });
47371
47535
  var RadioButtonGroupField = React.lazy(function () {
47372
47536
  return Promise.resolve().then(function () { return require(
47373
- /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.BA-WFjGc.js'); });
47537
+ /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.BtybYc89.js'); });
47374
47538
  });
47375
- var RatingField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "RatingField" */ './fthry_index.DhqYB5dK.js'); }); });
47376
- var SignatureField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SignatureField" */ './fthry_index.DzXZ-Rb_.js'); }); });
47377
- var SliderField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SliderField" */ './fthry_index.D2zIjosg.js'); }); });
47378
- var TextField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextField" */ './fthry_index.Cy-T4HCz.js'); }); });
47379
- var TextArea = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextArea" */ './fthry_index.WqEOU2O1.js'); }); });
47539
+ var RatingField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "RatingField" */ './fthry_index.k_4_AZEy.js'); }); });
47540
+ var SignatureField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SignatureField" */ './fthry_index.Dz3HdZ1B.js'); }); });
47541
+ var SliderField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "SliderField" */ './fthry_index.Y9ysXndZ.js'); }); });
47542
+ var TextField = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextField" */ './fthry_index.BH6XhQdp.js'); }); });
47543
+ var TextArea = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TextArea" */ './fthry_index.SwhJFwYK.js'); }); });
47380
47544
  var Fields = {
47381
47545
  AddressLine1: AddressLine1,
47382
47546
  ButtonGroupField: ButtonGroupField,
@@ -48316,7 +48480,7 @@ function ElementSkeleton(_a) {
48316
48480
  }
48317
48481
  var templateObject_1;
48318
48482
 
48319
- var TableElement = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TableElement" */ './fthry_index.J8P_vp8o.js'); }); });
48483
+ var TableElement = React.lazy(function () { return Promise.resolve().then(function () { return require(/* webpackChunkName: "TableElement" */ './fthry_index.Ctj468qV.js'); }); });
48320
48484
  var Basic = {
48321
48485
  ImageElement: ImageElement,
48322
48486
  VideoElement: VideoElement,
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var index$1 = require('./fthry_index.B6dz6_D2.js');
3
+ var index$1 = require('./fthry_index.CQ1H9R8w.js');
4
4
  var React = require('react');
5
- var InlineTooltip = require('./fthry_InlineTooltip.BqrUvYsf.js');
6
- var Placeholder$2 = require('./fthry_Placeholder.CeDmXoEH.js');
7
- var useSalesforceSync = require('./fthry_useSalesforceSync.DViFa05Y.js');
8
- var Overlay = require('./fthry_Overlay.BogxM8_x.js');
5
+ var InlineTooltip = require('./fthry_InlineTooltip.By-RR6_f.js');
6
+ var Placeholder$2 = require('./fthry_Placeholder.6RgPOXj2.js');
7
+ var useSalesforceSync = require('./fthry_useSalesforceSync.DsBDJDOJ.js');
8
+ var Overlay = require('./fthry_Overlay.DWYTsRft.js');
9
9
  var ReactDOM = require('react-dom');
10
10
  require('react/jsx-runtime');
11
11
  require('react-dom/client');