@feathery/react 2.20.0 → 2.22.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 (110) hide show
  1. package/cjs/Form/grid/StyledContainer/index.d.ts.map +1 -1
  2. package/cjs/Form/grid/index.d.ts.map +1 -1
  3. package/cjs/Form/index.d.ts.map +1 -1
  4. package/cjs/elements/components/FormOff.d.ts +5 -4
  5. package/cjs/elements/components/FormOff.d.ts.map +1 -1
  6. package/cjs/{fthry_FormControl.BlF1MzAT.js → fthry_FormControl.C6RfrG4j.js} +1 -1
  7. package/cjs/{fthry_InlineTooltip.ZMNeql52.js → fthry_InlineTooltip.DXjYqPtD.js} +2 -2
  8. package/cjs/{fthry_Overlay.D1Dl_rYV.js → fthry_Overlay.C4w6Cb6j.js} +1 -1
  9. package/cjs/{fthry_PaymentMethodField.B8o3hJZc.js → fthry_PaymentMethodField.D05feokK.js} +4 -4
  10. package/cjs/{fthry_Placeholder.CJwsAENg.js → fthry_Placeholder.D7Yh7mU2.js} +1 -1
  11. package/cjs/{fthry_ShowEyeIcon.CfY-8UpD.js → fthry_ShowEyeIcon.CiLTfgAK.js} +1 -1
  12. package/cjs/{fthry_index.CCemnwsu.js → fthry_index.2sunYeoj.js} +1 -1
  13. package/cjs/{fthry_index.CPO_3E6l.js → fthry_index.6gJGxnEh.js} +1 -1
  14. package/cjs/{fthry_index.BPhGm93v.js → fthry_index.B7fwm2Qq.js} +1 -1
  15. package/cjs/{fthry_index.BAvCMZms.js → fthry_index.BJT2EG9q.js} +3 -3
  16. package/cjs/{fthry_index.M9hqHrBw.js → fthry_index.BNdR1Zvy.js} +3 -3
  17. package/cjs/{fthry_index.CVRwl5e8.js → fthry_index.BO3AY9qR.js} +6 -6
  18. package/cjs/{fthry_index.CF_5aTpr.js → fthry_index.BoacvsbM.js} +6 -6
  19. package/cjs/{fthry_index.D0u2xH_C.js → fthry_index.BqZlc7T3.js} +5 -5
  20. package/cjs/{fthry_index.BsK-G-o1.js → fthry_index.C-ANSPxY.js} +8 -8
  21. package/cjs/{fthry_index.Zr0Zf4vN.js → fthry_index.C7ja1s3P.js} +1 -1
  22. package/cjs/{fthry_index.DBh1LYie.js → fthry_index.CIxKm2W7.js} +6 -6
  23. package/cjs/{fthry_index.CL0Og4Dc.js → fthry_index.CRdtsgYY.js} +4 -4
  24. package/cjs/{fthry_index.CAPznQPm.js → fthry_index.CofrHdeg.js} +2 -2
  25. package/cjs/{fthry_index.CTvJpKMD.js → fthry_index.CvLykMCw.js} +5 -5
  26. package/cjs/{fthry_index.C7wFi7y1.js → fthry_index.Cy80QFQZ.js} +2 -2
  27. package/cjs/{fthry_index.DiWVgvmp.js → fthry_index.D3t9MrC8.js} +1 -1
  28. package/cjs/{fthry_index.DuuOe7wg.js → fthry_index.D9UgyAK0.js} +5 -5
  29. package/cjs/{fthry_index.CyFPPgis.js → fthry_index.DBJtTx9s.js} +5 -5
  30. package/cjs/{fthry_index.BM5SEWS3.js → fthry_index.DiSY7Ac7.js} +1 -1
  31. package/cjs/{fthry_index.oBstjM0Y.js → fthry_index.DjWVnEr6.js} +4 -4
  32. package/cjs/{fthry_index.BAFB4RHg.js → fthry_index.Dl8zGsAp.js} +1 -1
  33. package/cjs/{fthry_index.p7Cu-nM0.js → fthry_index.avrbgACA.js} +1 -1
  34. package/cjs/{fthry_index.Dnzf38f1.js → fthry_index.dpVLfqGZ.js} +4 -4
  35. package/cjs/{fthry_index.DbmqQgFK.js → fthry_index.lrVIrRLc.js} +211 -74
  36. package/cjs/{fthry_input.NIWw-1nq.js → fthry_input.CHp_Jap5.js} +1 -1
  37. package/cjs/{fthry_script.bHvj52W8.js → fthry_script.C2pt_bUm.js} +1 -1
  38. package/cjs/{fthry_styles.D2wHG088.js → fthry_styles.DFm8HxDr.js} +1 -1
  39. package/cjs/{fthry_useElementSize.B1YQZQeL.js → fthry_useElementSize.BroSkGyG.js} +1 -1
  40. package/cjs/{fthry_useSalesforceSync.CGrJMMq8.js → fthry_useSalesforceSync.DiWBOGl_.js} +1 -1
  41. package/cjs/{fthry_webfontloader.CtGFRK-R.js → fthry_webfontloader.Du37duiu.js} +1 -1
  42. package/cjs/index.d.ts +6 -0
  43. package/cjs/index.d.ts.map +1 -1
  44. package/cjs/index.js +1 -1
  45. package/cjs/utils/featheryClient/index.d.ts +6 -0
  46. package/cjs/utils/featheryClient/index.d.ts.map +1 -1
  47. package/cjs/utils/featheryClient/integrationClient.d.ts.map +1 -1
  48. package/cjs/utils/featheryClient/utils.d.ts +1 -0
  49. package/cjs/utils/featheryClient/utils.d.ts.map +1 -1
  50. package/cjs/utils/formContext.d.ts +6 -0
  51. package/cjs/utils/formContext.d.ts.map +1 -1
  52. package/cjs/utils/init.d.ts +1 -0
  53. package/cjs/utils/init.d.ts.map +1 -1
  54. package/cjs/utils/offlineRequestHandler.d.ts.map +1 -1
  55. package/dist/Form/grid/StyledContainer/index.d.ts.map +1 -1
  56. package/dist/Form/grid/index.d.ts.map +1 -1
  57. package/dist/Form/index.d.ts.map +1 -1
  58. package/dist/elements/components/FormOff.d.ts +5 -4
  59. package/dist/elements/components/FormOff.d.ts.map +1 -1
  60. package/dist/{fthry_FormControl.1a1P4UlW.js → fthry_FormControl.BR7z833q.js} +1 -1
  61. package/dist/{fthry_InlineTooltip.DtrTD1lJ.js → fthry_InlineTooltip.D5rXgJxn.js} +2 -2
  62. package/dist/{fthry_Overlay.CncQxaYG.js → fthry_Overlay.C0T4Ihiz.js} +1 -1
  63. package/dist/{fthry_PaymentMethodField.25ynnr4a.js → fthry_PaymentMethodField.BnHykb0-.js} +4 -4
  64. package/dist/{fthry_Placeholder.DihcDpfg.js → fthry_Placeholder.OebdDszh.js} +1 -1
  65. package/dist/{fthry_ShowEyeIcon.C_om2PTd.js → fthry_ShowEyeIcon.5ZGg8TFI.js} +1 -1
  66. package/dist/{fthry_index.D8nG9qvV.js → fthry_index.B-HK4FAf.js} +5 -5
  67. package/dist/{fthry_index.BRiDM4kl.js → fthry_index.BVBupEyX.js} +4 -4
  68. package/dist/{fthry_index.CjVOeUO7.js → fthry_index.Bg6jDqRN.js} +1 -1
  69. package/dist/{fthry_index.BnLk-Mgr.js → fthry_index.BkvB1fWy.js} +1 -1
  70. package/dist/{fthry_index.C-pG0RNO.js → fthry_index.Bsx6VyJi.js} +2 -2
  71. package/dist/{fthry_index.6j3H5Jsd.js → fthry_index.CAO_boB_.js} +6 -6
  72. package/dist/{fthry_index.gTJ9T5iG.js → fthry_index.CDRQrd84.js} +211 -74
  73. package/dist/{fthry_index.BO9Rqj_Y.js → fthry_index.CLjO1Hq8.js} +1 -1
  74. package/dist/{fthry_index.Bpk_PYMh.js → fthry_index.CQIPge2V.js} +2 -2
  75. package/dist/{fthry_index.AwddDMaC.js → fthry_index.CZr2zxPE.js} +1 -1
  76. package/dist/{fthry_index.TDe1P2Bp.js → fthry_index.Ca6YzvQ4.js} +3 -3
  77. package/dist/{fthry_index.CY50AQx5.js → fthry_index.CbNESu0U.js} +5 -5
  78. package/dist/{fthry_index.B7TfCWWq.js → fthry_index.CbxKTwce.js} +3 -3
  79. package/dist/{fthry_index.DZB6jwWj.js → fthry_index.CenbmeTZ.js} +4 -4
  80. package/dist/{fthry_index.JGhr5Dls.js → fthry_index.Cjz0TFbJ.js} +8 -8
  81. package/dist/{fthry_index.7qjj8Bg8.js → fthry_index.Cog2BDNb.js} +1 -1
  82. package/dist/{fthry_index.Dnqjv4st.js → fthry_index.D33p0Cu9.js} +5 -5
  83. package/dist/{fthry_index.D3MIP4ZK.js → fthry_index.D91kaNEu.js} +1 -1
  84. package/dist/{fthry_index.vzZGXQtx.js → fthry_index.DSXLISe1.js} +1 -1
  85. package/dist/{fthry_index.DrDR16uH.js → fthry_index.DSpMogdQ.js} +6 -6
  86. package/dist/{fthry_index.F5q5xnZz.js → fthry_index.DgH--mO0.js} +1 -1
  87. package/dist/{fthry_index.Cy8swXZF.js → fthry_index.DomytyFl.js} +4 -4
  88. package/dist/{fthry_index.Dcf59nAI.js → fthry_index.NZiAUoKR.js} +5 -5
  89. package/dist/{fthry_index.BrKBOwpw.js → fthry_index.VasUvj87.js} +6 -6
  90. package/dist/{fthry_input.CmmeZAuB.js → fthry_input.mf5Eisx1.js} +1 -1
  91. package/dist/{fthry_script.CXkwR9fy.js → fthry_script.DYkmIi0j.js} +1 -1
  92. package/dist/{fthry_styles.CMRZqD1r.js → fthry_styles.DctHU6BX.js} +1 -1
  93. package/dist/{fthry_useElementSize.CxlyPsCi.js → fthry_useElementSize.B_En_KWY.js} +1 -1
  94. package/dist/{fthry_useSalesforceSync.Bj7FNIT_.js → fthry_useSalesforceSync.wfhYAUgy.js} +1 -1
  95. package/dist/{fthry_webfontloader.DfY0lK30.js → fthry_webfontloader.sudLWRnv.js} +1 -1
  96. package/dist/index.d.ts +6 -0
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +1 -1
  99. package/dist/utils/featheryClient/index.d.ts +6 -0
  100. package/dist/utils/featheryClient/index.d.ts.map +1 -1
  101. package/dist/utils/featheryClient/integrationClient.d.ts.map +1 -1
  102. package/dist/utils/featheryClient/utils.d.ts +1 -0
  103. package/dist/utils/featheryClient/utils.d.ts.map +1 -1
  104. package/dist/utils/formContext.d.ts +6 -0
  105. package/dist/utils/formContext.d.ts.map +1 -1
  106. package/dist/utils/init.d.ts +1 -0
  107. package/dist/utils/init.d.ts.map +1 -1
  108. package/dist/utils/offlineRequestHandler.d.ts.map +1 -1
  109. package/package.json +2 -2
  110. package/umd/index.js +1 -1
@@ -5849,6 +5849,35 @@ var api$1 = {};
5849
5849
 
5850
5850
  var utils = {};
5851
5851
 
5852
+ var cookies = {};
5853
+
5854
+ var hasRequiredCookies;
5855
+
5856
+ function requireCookies () {
5857
+ if (hasRequiredCookies) return cookies;
5858
+ hasRequiredCookies = 1;
5859
+ Object.defineProperty(cookies, "__esModule", { value: true });
5860
+ cookies.getCookie = getCookie;
5861
+ /**
5862
+ * Get a cookie value
5863
+ *
5864
+ * @param name - The name of the cookie to retrieve
5865
+ * @returns The cookie value or null if not found or no browser
5866
+ */
5867
+ function getCookie(name) {
5868
+ if (typeof document === 'undefined')
5869
+ return null;
5870
+ const value = `; ${document.cookie}`;
5871
+ const parts = value.split(`; ${name}=`);
5872
+ if (parts.length === 2) {
5873
+ const cookieValue = parts.pop()?.split(';').shift();
5874
+ return cookieValue || null;
5875
+ }
5876
+ return null;
5877
+ }
5878
+ return cookies;
5879
+ }
5880
+
5852
5881
  var error = {};
5853
5882
 
5854
5883
  var hasRequiredError;
@@ -5857,7 +5886,7 @@ function requireError () {
5857
5886
  if (hasRequiredError) return error;
5858
5887
  hasRequiredError = 1;
5859
5888
  Object.defineProperty(error, "__esModule", { value: true });
5860
- error.ValidationError = error.SDKKeyError = error.FormConflictError = error.FetchError = void 0;
5889
+ error.ValidationError = error.FormAuthenticationError = error.SDKKeyError = error.FormConflictError = error.FetchError = void 0;
5861
5890
  error.parseAPIError = parseAPIError;
5862
5891
  class FetchError extends Error {
5863
5892
  constructor(message, payload = null) {
@@ -5881,6 +5910,13 @@ function requireError () {
5881
5910
  }
5882
5911
  }
5883
5912
  error.SDKKeyError = SDKKeyError;
5913
+ class FormAuthenticationError extends Error {
5914
+ constructor(message = 'User does not have access to this form') {
5915
+ super(message);
5916
+ this.name = 'FormAuthenticationError';
5917
+ }
5918
+ }
5919
+ error.FormAuthenticationError = FormAuthenticationError;
5884
5920
  class ValidationError extends Error {
5885
5921
  constructor(message) {
5886
5922
  super(message);
@@ -5988,6 +6024,7 @@ function requireUtils () {
5988
6024
  utils.apiFetch = apiFetch;
5989
6025
  utils.createHttpHelpers = createHttpHelpers;
5990
6026
  const api_1 = requireApi();
6027
+ const cookies_1 = requireCookies();
5991
6028
  const error_1 = requireError();
5992
6029
  const setup_1 = requireSetup();
5993
6030
  function getApiUrl() {
@@ -6026,6 +6063,10 @@ function requireUtils () {
6026
6063
  throw new error_1.FetchError(payload.toString());
6027
6064
  case 401:
6028
6065
  throw new error_1.SDKKeyError();
6066
+ case 403:
6067
+ payload = await response.clone().json();
6068
+ const message = (0, error_1.parseAPIError)(payload);
6069
+ throw new error_1.FormAuthenticationError(message);
6029
6070
  case 404:
6030
6071
  throw new error_1.FetchError("Can't find object");
6031
6072
  case 409:
@@ -6039,14 +6080,21 @@ function requireUtils () {
6039
6080
  async function apiFetch(sdkKey, url, options, parseResponse = true) {
6040
6081
  options = options ?? {};
6041
6082
  const { headers, ...otherOptions } = options;
6083
+ // Read JWT from cookie
6084
+ const sessionJwt = (0, cookies_1.getCookie)('feathery_session_token');
6085
+ const requestHeaders = {
6086
+ Authorization: 'Token ' + sdkKey,
6087
+ ...headers,
6088
+ };
6089
+ // Add session JWT if available
6090
+ if (sessionJwt) {
6091
+ requestHeaders['X-Feathery-Session'] = sessionJwt;
6092
+ }
6042
6093
  options = {
6043
6094
  cache: 'no-store',
6044
6095
  // write requests must succeed so data is tracked
6045
6096
  keepalive: ['POST', 'PATCH', 'PUT'].includes(options.method),
6046
- headers: {
6047
- Authorization: 'Token ' + sdkKey,
6048
- ...headers,
6049
- },
6097
+ headers: requestHeaders,
6050
6098
  ...otherOptions,
6051
6099
  };
6052
6100
  const { internalSecretKey } = (0, setup_1.getEnvironment)();
@@ -6389,7 +6437,7 @@ function requireDist$2 () {
6389
6437
  hasRequiredDist$2 = 1;
6390
6438
  (function (exports$1) {
6391
6439
  Object.defineProperty(exports$1, "__esModule", { value: true });
6392
- 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;
6440
+ 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;
6393
6441
  var api_1 = requireApi();
6394
6442
  Object.defineProperty(exports$1, "customRolloutAction", { enumerable: true, get: function () { return api_1.customRolloutAction; } });
6395
6443
  Object.defineProperty(exports$1, "extractAIDocument", { enumerable: true, get: function () { return api_1.extractAIDocument; } });
@@ -6413,6 +6461,7 @@ function requireDist$2 () {
6413
6461
  var error_1 = requireError();
6414
6462
  Object.defineProperty(exports$1, "FetchError", { enumerable: true, get: function () { return error_1.FetchError; } });
6415
6463
  Object.defineProperty(exports$1, "SDKKeyError", { enumerable: true, get: function () { return error_1.SDKKeyError; } });
6464
+ Object.defineProperty(exports$1, "FormAuthenticationError", { enumerable: true, get: function () { return error_1.FormAuthenticationError; } });
6416
6465
  Object.defineProperty(exports$1, "FormConflictError", { enumerable: true, get: function () { return error_1.FormConflictError; } });
6417
6466
  Object.defineProperty(exports$1, "parseAPIError", { enumerable: true, get: function () { return error_1.parseAPIError; } });
6418
6467
  var setup_1 = requireSetup();
@@ -6432,6 +6481,16 @@ function handleFormConflict() {
6432
6481
  untrackUnload(true);
6433
6482
  featheryWindow().alert('This form has been updated. Please fill it out again.');
6434
6483
  location.reload();
6484
+ }
6485
+ function handleFormAuthenticationError(errorMessage) {
6486
+ untrackUnload(true);
6487
+ // Store the authentication error in initState so Form component can show FormOff
6488
+ initState.authenticationError =
6489
+ errorMessage || 'Access to this form is restricted';
6490
+ // Trigger a re-render by updating remount callbacks
6491
+ Object.values(initState.remountCallbacks).forEach(function (callback) {
6492
+ callback === null || callback === void 0 ? void 0 : callback();
6493
+ });
6435
6494
  }
6436
6495
 
6437
6496
  // Constants for the IndexedDB database
@@ -6931,9 +6990,9 @@ var OfflineRequestHandler = /** @class */ (function () {
6931
6990
  };
6932
6991
  var attemptRequest = function () { return __awaiter$2(_this, void 0, void 0, function () {
6933
6992
  var attempts, response, error_2, nextDelay;
6934
- var _a, _b, _c, _d, _e;
6935
- return __generator(this, function (_f) {
6936
- switch (_f.label) {
6993
+ var _a, _b, _c, _d, _e, _f;
6994
+ return __generator(this, function (_g) {
6995
+ switch (_g.label) {
6937
6996
  case 0:
6938
6997
  attempts = (_a = request.retryAttempts) !== null && _a !== void 0 ? _a : 0;
6939
6998
  // Ensure exhausted retries are marked as failed before being skipped
@@ -6941,54 +7000,58 @@ var OfflineRequestHandler = /** @class */ (function () {
6941
7000
  markFileUploadRetryFailure((_b = request.metadata) === null || _b === void 0 ? void 0 : _b.fieldKey);
6942
7001
  return [2 /*return*/];
6943
7002
  }
6944
- _f.label = 1;
7003
+ _g.label = 1;
6945
7004
  case 1:
6946
- if (!(attempts < this.maxRetryAttempts)) return [3 /*break*/, 13];
6947
- _f.label = 2;
7005
+ if (!(attempts < this.maxRetryAttempts)) return [3 /*break*/, 15];
7006
+ _g.label = 2;
6948
7007
  case 2:
6949
- _f.trys.push([2, 6, , 12]);
7008
+ _g.trys.push([2, 6, , 14]);
6950
7009
  return [4 /*yield*/, fetch(url, fetchOptions)];
6951
7010
  case 3:
6952
- response = _f.sent();
7011
+ response = _g.sent();
6953
7012
  return [4 /*yield*/, distExports$2.checkResponseSuccess(response)];
6954
7013
  case 4:
6955
- _f.sent();
7014
+ _g.sent();
6956
7015
  markFileUploadRetrySuccess((_c = request.metadata) === null || _c === void 0 ? void 0 : _c.fieldKey);
6957
7016
  return [4 /*yield*/, this.removeRequest(key)];
6958
7017
  case 5:
6959
- _f.sent();
7018
+ _g.sent();
6960
7019
  return [2 /*return*/];
6961
7020
  case 6:
6962
- error_2 = _f.sent();
6963
- if (error_2 instanceof distExports$2.FormConflictError) {
6964
- handleFormConflict();
6965
- return [2 /*return*/];
6966
- }
7021
+ error_2 = _g.sent();
7022
+ if (!(error_2 instanceof distExports$2.FormConflictError)) return [3 /*break*/, 8];
7023
+ handleFormConflict();
7024
+ markFileUploadRetrySuccess((_d = request.metadata) === null || _d === void 0 ? void 0 : _d.fieldKey);
7025
+ return [4 /*yield*/, this.removeRequest(key)];
7026
+ case 7:
7027
+ _g.sent();
7028
+ return [2 /*return*/];
7029
+ case 8:
6967
7030
  attempts++;
6968
7031
  return [4 /*yield*/, this.updateRetryAttempts(key, attempts)];
6969
- case 7:
6970
- _f.sent();
6971
- if (!navigator.onLine) return [3 /*break*/, 9];
7032
+ case 9:
7033
+ _g.sent();
7034
+ if (!navigator.onLine) return [3 /*break*/, 11];
6972
7035
  nextDelay = this.getExponentialDelay(attempts);
6973
7036
  if (attempts >= this.maxRetryAttempts) {
6974
7037
  // Skip alerting when a specific field upload already surfaces its own retry error
6975
- if (this.errorCallback && !((_d = request.metadata) === null || _d === void 0 ? void 0 : _d.fieldKey)) {
7038
+ if (this.errorCallback && !((_e = request.metadata) === null || _e === void 0 ? void 0 : _e.fieldKey)) {
6976
7039
  this.errorCallback("Failed to submit after ".concat(this.maxRetryAttempts, " attempts. Please check your connection and try again."));
6977
7040
  }
6978
- markFileUploadRetryFailure((_e = request.metadata) === null || _e === void 0 ? void 0 : _e.fieldKey);
7041
+ markFileUploadRetryFailure((_f = request.metadata) === null || _f === void 0 ? void 0 : _f.fieldKey);
6979
7042
  return [2 /*return*/];
6980
7043
  }
6981
7044
  return [4 /*yield*/, this.delay(nextDelay)];
6982
- case 8:
6983
- _f.sent();
6984
- return [3 /*break*/, 11];
6985
- case 9: return [4 /*yield*/, this.onlineAndReplayed()];
6986
7045
  case 10:
6987
- _f.sent();
7046
+ _g.sent();
7047
+ return [3 /*break*/, 13];
7048
+ case 11: return [4 /*yield*/, this.onlineAndReplayed()];
7049
+ case 12:
7050
+ _g.sent();
6988
7051
  return [2 /*return*/];
6989
- case 11: return [3 /*break*/, 12];
6990
- case 12: return [3 /*break*/, 1];
6991
- case 13: return [2 /*return*/];
7052
+ case 13: return [3 /*break*/, 14];
7053
+ case 14: return [3 /*break*/, 1];
7054
+ case 15: return [2 /*return*/];
6992
7055
  }
6993
7056
  });
6994
7057
  }); };
@@ -7359,12 +7422,20 @@ var IntegrationClient = /** @class */ (function () {
7359
7422
  if (parseResponse === void 0) { parseResponse = true; }
7360
7423
  if (propagateNetworkErrors === void 0) { propagateNetworkErrors = false; }
7361
7424
  var sdkKey = initInfo().sdkKey;
7425
+ // Stop making requests if authentication error has occurred
7426
+ if (initState.authenticationError) {
7427
+ return Promise.resolve(undefined);
7428
+ }
7362
7429
  return distExports$2.apiFetch(sdkKey, url, options, parseResponse).catch(function (e) {
7363
7430
  var _a;
7364
7431
  if (e instanceof distExports$2.FormConflictError) {
7365
7432
  handleFormConflict();
7366
7433
  return;
7367
7434
  }
7435
+ if (e instanceof distExports$2.FormAuthenticationError) {
7436
+ handleFormAuthenticationError(e.message);
7437
+ return;
7438
+ }
7368
7439
  // Ignore TypeErrors if form has redirected because `fetch` in
7369
7440
  // Safari will error after redirect
7370
7441
  var ignore = ((_a = _this.ignoreNetworkErrors) === null || _a === void 0 ? void 0 : _a.current) ||
@@ -20201,7 +20272,7 @@ var messages = (_a = {},
20201
20272
  _a[NO_BUSINESS_EMAIL] = 'Activate forms by adding an email from a company domain to your Feathery account',
20202
20273
  _a);
20203
20274
  function FormOff(_a) {
20204
- 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;
20275
+ 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;
20205
20276
  return (jsxs("div", __assign({ css: {
20206
20277
  width: '100%',
20207
20278
  height: '100%',
@@ -20218,7 +20289,7 @@ function FormOff(_a) {
20218
20289
  lineHeight: '32px',
20219
20290
  textAlign: 'center',
20220
20291
  margin: '50px 0'
20221
- } }, { children: messages[reason] })), showCTA && (jsx$1("button", __assign({ css: {
20292
+ } }, { children: message || messages[reason] })), showCTA && (jsx$1("button", __assign({ css: {
20222
20293
  border: '1px solid #e2626e',
20223
20294
  color: '#e2626e',
20224
20295
  outline: 'none',
@@ -21588,12 +21659,12 @@ var ShadowDomHtmlContent = function (_a) {
21588
21659
  * and the editor to render "Containers".
21589
21660
  */
21590
21661
  var StyledContainer = forwardRef(function (_a, ref) {
21591
- var _b, _c;
21592
- var _node = _a.node, raw = _a.raw, _d = _a.css, css = _d === void 0 ? {} : _d, viewport = _a.viewport, component = _a.component, _children = _a.children, className = _a.className, _e = _a.viewportOnly, viewportOnly = _e === void 0 ? false : _e, _f = _a.editMode, editMode = _f === void 0 ? false : _f, breakpoint = _a.breakpoint, props = __rest$1(_a, ["node", "raw", "css", "viewport", "component", "children", "className", "viewportOnly", "editMode", "breakpoint"]);
21593
- var _g = useFormattedNode(_node, raw), node = _g.node, rawNode = _g.rawNode;
21662
+ var _b, _c, _d, _e;
21663
+ var _node = _a.node, raw = _a.raw, _f = _a.css, css = _f === void 0 ? {} : _f, viewport = _a.viewport, component = _a.component, _children = _a.children, className = _a.className, _g = _a.viewportOnly, viewportOnly = _g === void 0 ? false : _g, _h = _a.editMode, editMode = _h === void 0 ? false : _h, breakpoint = _a.breakpoint, props = __rest$1(_a, ["node", "raw", "css", "viewport", "component", "children", "className", "viewportOnly", "editMode", "breakpoint"]);
21664
+ var _j = useFormattedNode(_node, raw), node = _j.node, rawNode = _j.rawNode;
21594
21665
  var children = React__default.Children.toArray(_children);
21595
21666
  var type = useNodeType(node, rawNode, viewport);
21596
- var _h = __read(useState(''), 2), backgroundImage = _h[0], setBackgroundImage = _h[1];
21667
+ var _k = __read(useState(''), 2), backgroundImage = _k[0], setBackgroundImage = _k[1];
21597
21668
  var imageUrlFieldKey = (_b = node.styles) === null || _b === void 0 ? void 0 : _b.uploaded_image_file_field_key;
21598
21669
  var file;
21599
21670
  if (imageUrlFieldKey) {
@@ -21615,10 +21686,10 @@ var StyledContainer = forwardRef(function (_a, ref) {
21615
21686
  });
21616
21687
  }
21617
21688
  }, [file]);
21618
- var _j = useContainerStyles(node, rawNode, css, viewportOnly ? viewport : undefined, breakpoint), styles = _j.styles, innerStyles = _j.innerStyles;
21689
+ var _l = useContainerStyles(node, rawNode, css, viewportOnly ? viewport : undefined, breakpoint), styles = _l.styles, innerStyles = _l.innerStyles;
21619
21690
  if (backgroundImage)
21620
21691
  styles.backgroundImage = backgroundImage;
21621
- var _k = __read(useFixedContainer(node, rawNode, viewport, breakpoint), 2), isFixed = _k[0], fixedContainerRef = _k[1];
21692
+ var _m = __read(useFixedContainer(node, rawNode, viewport, breakpoint), 2), isFixed = _m[0], fixedContainerRef = _m[1];
21622
21693
  if (node.properties.iframe_url) {
21623
21694
  var url = replaceTextVariables(node.properties.iframe_url);
21624
21695
  children.push(jsx$1("iframe", { width: '100%', height: '100%', src: url, css: { border: 'none' } }, "iframe:".concat(url)));
@@ -21632,11 +21703,12 @@ var StyledContainer = forwardRef(function (_a, ref) {
21632
21703
  children.push(jsx$1(RenderComponent, { html: html, css: baseStyles }, "html:".concat(html)));
21633
21704
  }
21634
21705
  useContainerEngine(node, rawNode, ref);
21706
+ var elementType = (_e = (_d = node.servar) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : node.type;
21635
21707
  if (component) {
21636
21708
  var Component = component;
21637
21709
  return (jsx$1(Component, __assign({ ref: ref, node: _node, css: styles, className: cls('styled-container', type, className) }, props, { children: jsx$1("div", __assign({ className: 'inner-container', css: innerStyles }, { children: children })) }), node.id));
21638
21710
  }
21639
- return (jsxs(Fragment, { children: [isFixed && (jsx$1("div", __assign({ className: cls('styled-container', type, className) }, props, { css: __assign(__assign({}, styles), { position: 'fixed', zIndex: FORM_Z_INDEX + 1 }), ref: fixedContainerRef, "data-feathery-id": node.key }, { children: jsx$1("div", __assign({ className: 'inner-container', css: innerStyles }, { children: children })) }), "".concat(node.id, "-fixed"))), jsx$1("div", __assign({ ref: ref, css: isFixed ? __assign(__assign({}, styles), { visibility: 'hidden' }) : styles, className: cls('styled-container', type, className), "data-id": node.id, "data-feathery-id": node.key }, props, { children: jsx$1("div", __assign({ className: 'inner-container', css: innerStyles }, { children: isFixed ? null : children })) }), node.id)] }));
21711
+ return (jsxs(Fragment, { children: [isFixed && (jsx$1("div", __assign({ className: cls('styled-container', type, className) }, props, { css: __assign(__assign({}, styles), { position: 'fixed', zIndex: FORM_Z_INDEX + 1 }), ref: fixedContainerRef, "data-feathery-id": node.key, "data-element": elementType }, { children: jsx$1("div", __assign({ className: 'inner-container', css: innerStyles }, { children: children })) }), "".concat(node.id, "-fixed"))), jsx$1("div", __assign({ ref: ref, css: isFixed ? __assign(__assign({}, styles), { visibility: 'hidden' }) : styles, className: cls('styled-container', type, className) }, props, { "data-id": node.id, "data-feathery-id": node.key, "data-element": elementType }, { children: jsx$1("div", __assign({ className: 'inner-container', css: innerStyles }, { children: isFixed ? null : children })) }), node.id)] }));
21640
21712
  });
21641
21713
 
21642
21714
  /**
@@ -22402,7 +22474,8 @@ var typeMap = {
22402
22474
  buttons: 'button',
22403
22475
  servar_fields: 'field',
22404
22476
  videos: 'video',
22405
- tables: 'table'
22477
+ tables: 'table',
22478
+ subgrids: 'container'
22406
22479
  };
22407
22480
  var buildGridMap = function (step) {
22408
22481
  var map = {};
@@ -22695,6 +22768,10 @@ var getFormContext = function (formUuid) {
22695
22768
  setCollaboratorAsCompleted: function (templateId) {
22696
22769
  return formState.client.setCollaboratorAsCompleted(templateId);
22697
22770
  },
22771
+ dataHubAction: function (_a) {
22772
+ var hubId = _a.hubId, operation = _a.operation, entryId = _a.entryId, data = _a.data;
22773
+ return formState.client.dataHubAction({ hubId: hubId, operation: operation, entryId: entryId, data: data });
22774
+ },
22698
22775
  generateDocuments: function (_a) {
22699
22776
  var documentIds = _a.documentIds, download = _a.download, merge = _a.merge;
22700
22777
  return formState.client.generateDocuments({ documentIds: documentIds, download: download, merge: merge });
@@ -40653,7 +40730,7 @@ function Form(_a) {
40653
40730
  var runElementActions = function (_a) {
40654
40731
  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;
40655
40732
  return __awaiter$2(_this, void 0, void 0, function () {
40656
- var id, metadata, trigger, submitPromise, pendingFileKeys, invalid, hasNext, submissionResult, error_3, _e, stepPromise, flowOnSuccess, actionTypes, runAction, i, hasExtractions, hasEnvelopeGeneration, _loop_1, state_1;
40733
+ var id, metadata, trigger, submitPromise, pendingFileKeys, invalid, hasNext, submissionResult, error_3, _e, stepPromise, preOpenedWindows, flowOnSuccess, actionTypes, runAction, i, hasExtractions, hasEnvelopeGeneration, _loop_1, state_1;
40657
40734
  var _this = this;
40658
40735
  var _f, _g, _h, _j, _k;
40659
40736
  return __generator(this, function (_l) {
@@ -40760,6 +40837,18 @@ function Form(_a) {
40760
40837
  // Adjust action order to prioritize certain actions and
40761
40838
  // to ensure all actions are run as expected
40762
40839
  actions = prioritizeActions(actions);
40840
+ preOpenedWindows = new Map();
40841
+ if (isIOS()) {
40842
+ actions.forEach(function (action, idx) {
40843
+ if (action.type === ACTION_URL && action.open_tab) {
40844
+ var win = featheryWindow().open('about:blank', '_blank');
40845
+ if (win) {
40846
+ win.opener = null; // Prevent reverse tabnabbing
40847
+ preOpenedWindows.set(idx, win);
40848
+ }
40849
+ }
40850
+ });
40851
+ }
40763
40852
  flowOnSuccess = function (index) { return function () { return __awaiter$2(_this, void 0, void 0, function () {
40764
40853
  var running;
40765
40854
  return __generator(this, function (_a) {
@@ -40811,7 +40900,7 @@ function Form(_a) {
40811
40900
  initializeEnvelopeGeneration(actions);
40812
40901
  }
40813
40902
  _loop_1 = function () {
40814
- 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;
40903
+ 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;
40815
40904
  var _m, _o, _p, _q, _r, _s, _t;
40816
40905
  return __generator(this, function (_u) {
40817
40906
  switch (_u.label) {
@@ -40888,8 +40977,16 @@ function Form(_a) {
40888
40977
  if (url) {
40889
40978
  if (!url.includes(':'))
40890
40979
  url = 'https://' + url;
40891
- if (action.open_tab)
40892
- openTab(url);
40980
+ if (action.open_tab) {
40981
+ preOpened = preOpenedWindows.get(i);
40982
+ if (preOpened) {
40983
+ preOpened.location.href = url;
40984
+ preOpenedWindows.delete(i);
40985
+ }
40986
+ else {
40987
+ openTab(url);
40988
+ }
40989
+ }
40893
40990
  }
40894
40991
  if (!!action.open_tab) return [3 /*break*/, 21];
40895
40992
  eventData = {
@@ -41467,6 +41564,8 @@ function Form(_a) {
41467
41564
  i++;
41468
41565
  return [3 /*break*/, 9];
41469
41566
  case 12:
41567
+ // Close any pre-opened windows that weren't used (e.g., validation failed)
41568
+ preOpenedWindows.forEach(function (win) { return win === null || win === void 0 ? void 0 : win.close(); });
41470
41569
  if (i < actions.length) {
41471
41570
  elementClicks[id] = false;
41472
41571
  clearButtonActionState();
@@ -41588,6 +41687,10 @@ function Form(_a) {
41588
41687
  };
41589
41688
  handleFormComplete().then(redirectForm);
41590
41689
  }, [anyFinished]);
41690
+ // Form authentication error (403)
41691
+ if (initState.authenticationError) {
41692
+ return (jsx$1(FormOff, { reason: CLOSED, message: initState.authenticationError, showCTA: false }));
41693
+ }
41591
41694
  // Form is turned off
41592
41695
  if (formOffReason.current === CLOSED)
41593
41696
  return jsx$1(FormOff, { showCTA: formSettings.showBrand });
@@ -45668,6 +45771,38 @@ var FeatheryClient = /** @class */ (function (_super) {
45668
45771
  });
45669
45772
  });
45670
45773
  };
45774
+ FeatheryClient.prototype.dataHubAction = function (_a) {
45775
+ var hubId = _a.hubId, operation = _a.operation, entryId = _a.entryId, data = _a.data;
45776
+ return __awaiter$2(this, void 0, void 0, function () {
45777
+ var baseUrl, url, response, _b, _c;
45778
+ return __generator(this, function (_d) {
45779
+ switch (_d.label) {
45780
+ case 0:
45781
+ baseUrl = new URL(distExports$2.getApiUrl()).origin;
45782
+ url = "".concat(baseUrl, "/api/hub/").concat(hubId, "/action/");
45783
+ return [4 /*yield*/, this._fetch(url, {
45784
+ headers: { 'Content-Type': 'application/json' },
45785
+ method: 'POST',
45786
+ body: JSON.stringify({ operation: operation, entry_id: entryId, data: data })
45787
+ }, false)];
45788
+ case 1:
45789
+ response = _d.sent();
45790
+ if (!response) return [3 /*break*/, 5];
45791
+ if (response.status === 204)
45792
+ return [2 /*return*/, null];
45793
+ if (!response.ok) return [3 /*break*/, 3];
45794
+ return [4 /*yield*/, response.json()];
45795
+ case 2: return [2 /*return*/, _d.sent()];
45796
+ case 3:
45797
+ _b = Error;
45798
+ _c = distExports$2.parseAPIError;
45799
+ return [4 /*yield*/, response.json()];
45800
+ case 4: throw _b.apply(void 0, [_c.apply(void 0, [_d.sent()])]);
45801
+ case 5: return [2 /*return*/];
45802
+ }
45803
+ });
45804
+ });
45805
+ };
45671
45806
  return FeatheryClient;
45672
45807
  }(IntegrationClient));
45673
45808
 
@@ -45719,6 +45854,8 @@ function init(sdkKey, options) {
45719
45854
  return Promise.resolve((_a = initState.userId) !== null && _a !== void 0 ? _a : ''); // can only be initialized one time per load
45720
45855
  logFeatheryBadge();
45721
45856
  initState.initialized = true;
45857
+ // Clear any previous authentication errors on new initialization
45858
+ initState.authenticationError = undefined;
45722
45859
  initState.sdkKey = sdkKey;
45723
45860
  if (options._enterpriseRegion)
45724
45861
  initState.region = options._enterpriseRegion.toLowerCase();
@@ -45745,9 +45882,9 @@ function init(sdkKey, options) {
45745
45882
  if (runningInClient()) {
45746
45883
  // Dynamically load libraries that must be client side
45747
45884
  global.scriptjsLoadPromise = import(
45748
- /* webpackChunkName: "scriptjs" */ './fthry_script.CXkwR9fy.js').then(function (n) { return n.s; });
45885
+ /* webpackChunkName: "scriptjs" */ './fthry_script.DYkmIi0j.js').then(function (n) { return n.s; });
45749
45886
  global.webfontloaderPromise = import(
45750
- /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.DfY0lK30.js').then(function (n) { return n.w; });
45887
+ /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.sudLWRnv.js').then(function (n) { return n.w; });
45751
45888
  // Client-side tracking logic
45752
45889
  if (initState.userTracking === 'cookie') {
45753
45890
  var cookieKey = "feathery-user-id-".concat(sdkKey);
@@ -45893,7 +46030,7 @@ function getFieldValues() {
45893
46030
  return __assign({}, fieldValues);
45894
46031
  }
45895
46032
  function logFeatheryBadge() {
45896
- console.log('%c Feathery %c v' + "2.20.0" + ' ', // replaced with real version during build
46033
+ console.log('%c Feathery %c v' + "2.22.0" + ' ', // replaced with real version during build
45897
46034
  '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;');
45898
46035
  }
45899
46036
 
@@ -47321,39 +47458,39 @@ breakpoint) {
47321
47458
  return styles.getTarget('inner-container', undefined, viewport === 'mobile');
47322
47459
  };
47323
47460
 
47324
- var AddressLine1 = lazy(function () { return import(/* webpackChunkName: "AddressField" */ './fthry_index.Dnqjv4st.js'); });
47325
- var ButtonGroupField = lazy(function () { return import(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.Cy8swXZF.js'); });
47326
- var CheckboxField = lazy(function () { return import(/* webpackChunkName: "CheckboxField" */ './fthry_index.CjVOeUO7.js'); });
47461
+ var AddressLine1 = lazy(function () { return import(/* webpackChunkName: "AddressField" */ './fthry_index.D33p0Cu9.js'); });
47462
+ var ButtonGroupField = lazy(function () { return import(/* webpackChunkName: "ButtonGroupField" */ './fthry_index.DomytyFl.js'); });
47463
+ var CheckboxField = lazy(function () { return import(/* webpackChunkName: "CheckboxField" */ './fthry_index.Bg6jDqRN.js'); });
47327
47464
  var CheckboxGroupField = lazy(function () {
47328
- return import(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.DrDR16uH.js');
47465
+ return import(/* webpackChunkName: "CheckboxGroupField" */ './fthry_index.DSpMogdQ.js');
47329
47466
  });
47330
- var ColorPickerField = lazy(function () { return import(/* webpackChunkName: "ColorPickerField" */ './fthry_index.D3MIP4ZK.js'); });
47331
- var CustomField = lazy(function () { return import(/* webpackChunkName: "CustomField" */ './fthry_index.F5q5xnZz.js'); });
47467
+ var ColorPickerField = lazy(function () { return import(/* webpackChunkName: "ColorPickerField" */ './fthry_index.D91kaNEu.js'); });
47468
+ var CustomField = lazy(function () { return import(/* webpackChunkName: "CustomField" */ './fthry_index.DgH--mO0.js'); });
47332
47469
  var DateSelectorField = lazy(function () {
47333
- return import(/* webpackChunkName: "DateSelectorField" */ './fthry_index.6j3H5Jsd.js');
47470
+ return import(/* webpackChunkName: "DateSelectorField" */ './fthry_index.CAO_boB_.js');
47334
47471
  });
47335
- var DropdownField = lazy(function () { return import(/* webpackChunkName: "DropdownField" */ './fthry_index.BRiDM4kl.js'); });
47472
+ var DropdownField = lazy(function () { return import(/* webpackChunkName: "DropdownField" */ './fthry_index.BVBupEyX.js'); });
47336
47473
  var DropdownMultiField = lazy(function () {
47337
- return import(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.D8nG9qvV.js');
47474
+ return import(/* webpackChunkName: "DropdownMultiField" */ './fthry_index.B-HK4FAf.js');
47338
47475
  });
47339
- var FileUploadField = lazy(function () { return import(/* webpackChunkName: "FileUploadField" */ './fthry_index.7qjj8Bg8.js'); });
47340
- var MatrixField = lazy(function () { return import(/* webpackChunkName: "MatrixField" */ './fthry_index.TDe1P2Bp.js'); });
47341
- var PasswordField = lazy(function () { return import(/* webpackChunkName: "PasswordField" */ './fthry_index.CY50AQx5.js'); });
47476
+ var FileUploadField = lazy(function () { return import(/* webpackChunkName: "FileUploadField" */ './fthry_index.Cog2BDNb.js'); });
47477
+ var MatrixField = lazy(function () { return import(/* webpackChunkName: "MatrixField" */ './fthry_index.Ca6YzvQ4.js'); });
47478
+ var PasswordField = lazy(function () { return import(/* webpackChunkName: "PasswordField" */ './fthry_index.CbNESu0U.js'); });
47342
47479
  var PaymentMethodField = lazy(function () {
47343
- return import(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.25ynnr4a.js');
47480
+ return import(/* webpackChunkName: "PaymentMethodField" */ './fthry_PaymentMethodField.BnHykb0-.js');
47344
47481
  });
47345
- var PhoneField = lazy(function () { return import(/* webpackChunkName: "PhoneField" */ './fthry_index.Dcf59nAI.js'); });
47346
- var PinInputField = lazy(function () { return import(/* webpackChunkName: "PinInputField" */ './fthry_index.AwddDMaC.js'); });
47347
- var QRScanner = lazy(function () { return import(/* webpackChunkName: "QRScanner" */ './fthry_index.C-pG0RNO.js'); });
47482
+ var PhoneField = lazy(function () { return import(/* webpackChunkName: "PhoneField" */ './fthry_index.NZiAUoKR.js'); });
47483
+ var PinInputField = lazy(function () { return import(/* webpackChunkName: "PinInputField" */ './fthry_index.CZr2zxPE.js'); });
47484
+ var QRScanner = lazy(function () { return import(/* webpackChunkName: "QRScanner" */ './fthry_index.Bsx6VyJi.js'); });
47348
47485
  var RadioButtonGroupField = lazy(function () {
47349
47486
  return import(
47350
- /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.BrKBOwpw.js');
47487
+ /* webpackChunkName: "RadioButtonGroupField" */ './fthry_index.VasUvj87.js');
47351
47488
  });
47352
- var RatingField = lazy(function () { return import(/* webpackChunkName: "RatingField" */ './fthry_index.vzZGXQtx.js'); });
47353
- var SignatureField = lazy(function () { return import(/* webpackChunkName: "SignatureField" */ './fthry_index.B7TfCWWq.js'); });
47354
- var SliderField = lazy(function () { return import(/* webpackChunkName: "SliderField" */ './fthry_index.Bpk_PYMh.js'); });
47355
- var TextField = lazy(function () { return import(/* webpackChunkName: "TextField" */ './fthry_index.JGhr5Dls.js'); });
47356
- var TextArea = lazy(function () { return import(/* webpackChunkName: "TextArea" */ './fthry_index.DZB6jwWj.js'); });
47489
+ var RatingField = lazy(function () { return import(/* webpackChunkName: "RatingField" */ './fthry_index.DSXLISe1.js'); });
47490
+ var SignatureField = lazy(function () { return import(/* webpackChunkName: "SignatureField" */ './fthry_index.CbxKTwce.js'); });
47491
+ var SliderField = lazy(function () { return import(/* webpackChunkName: "SliderField" */ './fthry_index.CQIPge2V.js'); });
47492
+ var TextField = lazy(function () { return import(/* webpackChunkName: "TextField" */ './fthry_index.Cjz0TFbJ.js'); });
47493
+ var TextArea = lazy(function () { return import(/* webpackChunkName: "TextArea" */ './fthry_index.CenbmeTZ.js'); });
47357
47494
  var Fields = {
47358
47495
  AddressLine1: AddressLine1,
47359
47496
  ButtonGroupField: ButtonGroupField,
@@ -48293,7 +48430,7 @@ function ElementSkeleton(_a) {
48293
48430
  }
48294
48431
  var templateObject_1;
48295
48432
 
48296
- var TableElement = lazy(function () { return import(/* webpackChunkName: "TableElement" */ './fthry_index.BnLk-Mgr.js'); });
48433
+ var TableElement = lazy(function () { return import(/* webpackChunkName: "TableElement" */ './fthry_index.BkvB1fWy.js'); });
48297
48434
  var Basic = {
48298
48435
  ImageElement: ImageElement,
48299
48436
  VideoElement: VideoElement,
@@ -1,4 +1,4 @@
1
- import { g as getDefaultExportFromCjs } from './fthry_index.gTJ9T5iG.js';
1
+ import { g as getDefaultExportFromCjs } from './fthry_index.CDRQrd84.js';
2
2
 
3
3
  var propTypes = {exports: {}};
4
4
 
@@ -1,6 +1,6 @@
1
- import { b as __read, a as jsxs, _ as __assign, j as jsx, h as hoverStylesGuard } from './fthry_index.gTJ9T5iG.js';
1
+ import { b as __read, a as jsxs, _ as __assign, j as jsx, h as hoverStylesGuard } from './fthry_index.CDRQrd84.js';
2
2
  import { useState, useEffect } from 'react';
3
- import { S as SliderStyles, a as Slider } from './fthry_styles.CMRZqD1r.js';
3
+ import { S as SliderStyles, a as Slider } from './fthry_styles.DctHU6BX.js';
4
4
  import 'react/jsx-runtime';
5
5
  import 'react-dom/client';
6
6
  import 'jszip';
@@ -1,4 +1,4 @@
1
- import { t as featheryWindow, a as jsxs, _ as __assign, j as jsx, b as __read, u as useBorder, h as hoverStylesGuard, aj as isNum } from './fthry_index.gTJ9T5iG.js';
1
+ import { t as featheryWindow, a as jsxs, _ as __assign, j as jsx, b as __read, u as useBorder, h as hoverStylesGuard, aj as isNum } from './fthry_index.CDRQrd84.js';
2
2
  import { useRef, useCallback, useEffect, useState } from 'react';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react-dom/client';
@@ -1,7 +1,7 @@
1
- import { b as __read, j as jsx, F as Fragment, x as isMobile, a as jsxs, _ as __assign, q as FORM_Z_INDEX, i as iosScrollOnFocus } from './fthry_index.gTJ9T5iG.js';
1
+ import { b as __read, j as jsx, F as Fragment, x as isMobile, a as jsxs, _ as __assign, q as FORM_Z_INDEX, i as iosScrollOnFocus } from './fthry_index.CDRQrd84.js';
2
2
  import { useState, useRef, useMemo } from 'react';
3
- import { O as Overlay, T as Tooltip } from './fthry_Overlay.CncQxaYG.js';
4
- import { applyCheckableInputStyles, composeCheckableInputStyle } from './fthry_index.CjVOeUO7.js';
3
+ import { O as Overlay, T as Tooltip } from './fthry_Overlay.C0T4Ihiz.js';
4
+ import { applyCheckableInputStyles, composeCheckableInputStyle } from './fthry_index.Bg6jDqRN.js';
5
5
  import 'react/jsx-runtime';
6
6
  import 'react-dom/client';
7
7
  import 'jszip';
@@ -1,13 +1,13 @@
1
- import { u as useBorder, b as __read, a as jsxs, _ as __assign, h as hoverStylesGuard, j as jsx, i as iosScrollOnFocus, q as FORM_Z_INDEX, r as resetStyles } from './fthry_index.gTJ9T5iG.js';
1
+ import { u as useBorder, b as __read, a as jsxs, _ as __assign, h as hoverStylesGuard, j as jsx, i as iosScrollOnFocus, q as FORM_Z_INDEX, r as resetStyles } from './fthry_index.CDRQrd84.js';
2
2
  import { memo, useState, useRef } from 'react';
3
- import { P as Placeholder } from './fthry_Placeholder.DihcDpfg.js';
4
- import { I as InlineTooltip } from './fthry_InlineTooltip.DtrTD1lJ.js';
5
- import { S as ShowEyeIcon, a as ShowEyeIcon$1 } from './fthry_ShowEyeIcon.C_om2PTd.js';
3
+ import { P as Placeholder } from './fthry_Placeholder.OebdDszh.js';
4
+ import { I as InlineTooltip } from './fthry_InlineTooltip.D5rXgJxn.js';
5
+ import { S as ShowEyeIcon, a as ShowEyeIcon$1 } from './fthry_ShowEyeIcon.5ZGg8TFI.js';
6
6
  import 'react/jsx-runtime';
7
7
  import 'react-dom/client';
8
8
  import 'jszip';
9
9
  import 'react-dom';
10
- import './fthry_Overlay.CncQxaYG.js';
10
+ import './fthry_Overlay.C0T4Ihiz.js';
11
11
 
12
12
  function PasswordField(_a) {
13
13
  var _b;
@@ -1,6 +1,6 @@
1
- import { f as featheryDoc, an as devicePixelRatio, g as getDefaultExportFromCjs, b as __read, a as jsxs, j as jsx, _ as __assign, F as Fragment, k as __awaiter, l as __generator, ao as toBase64, n as debounce, ap as MODAL_Z_INDEX, ab as CloseIcon, aq as dataURLToFile, q as FORM_Z_INDEX, E as ErrorInput } from './fthry_index.gTJ9T5iG.js';
1
+ import { f as featheryDoc, an as devicePixelRatio, g as getDefaultExportFromCjs, b as __read, a as jsxs, j as jsx, _ as __assign, F as Fragment, k as __awaiter, l as __generator, ao as toBase64, n as debounce, ap as MODAL_Z_INDEX, ab as CloseIcon, aq as dataURLToFile, q as FORM_Z_INDEX, E as ErrorInput } from './fthry_index.CDRQrd84.js';
2
2
  import React__default, { Component, forwardRef, useState, useRef, useImperativeHandle, useEffect, useCallback, Suspense } from 'react';
3
- import { P as PropTypes } from './fthry_index.BO9Rqj_Y.js';
3
+ import { P as PropTypes } from './fthry_index.CLjO1Hq8.js';
4
4
  import 'react/jsx-runtime';
5
5
  import 'react-dom/client';
6
6
  import 'jszip';
@@ -1433,7 +1433,7 @@ function SignatureField(_a) {
1433
1433
  useEffect(function () {
1434
1434
  if (!global.webfontloaderPromise)
1435
1435
  global.webfontloaderPromise = import(
1436
- /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.DfY0lK30.js').then(function (n) { return n.w; });
1436
+ /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.sudLWRnv.js').then(function (n) { return n.w; });
1437
1437
  global.webfontloaderPromise.then(function (WebFont) {
1438
1438
  WebFont.load({ google: { families: ['La Belle Aurore'] } });
1439
1439
  });