@feathery/react 2.6.7 → 2.7.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 (317) hide show
  1. package/dist/Form/components/AIExtractionToast/ExtractionItem.d.ts +5 -5
  2. package/dist/Form/components/AIExtractionToast/icons.d.ts +7 -7
  3. package/dist/Form/components/AIExtractionToast/index.d.ts +8 -8
  4. package/dist/Form/components/AIExtractionToast/useAIExtractionToast.d.ts +64 -64
  5. package/dist/Form/components/DevNavBar.d.ts +1 -1
  6. package/dist/Form/components/ReactPortal.d.ts +2 -2
  7. package/dist/Form/definitions.d.ts +40 -40
  8. package/dist/Form/grid/CalendlyEmbed.d.ts +1 -1
  9. package/dist/Form/grid/Container/index.d.ts +19 -19
  10. package/dist/Form/grid/Element/index.d.ts +2 -2
  11. package/dist/Form/grid/Element/utils/address.d.ts +3 -3
  12. package/dist/Form/grid/Element/utils/utils.d.ts +13 -13
  13. package/dist/Form/grid/StyledContainer/hooks/index.d.ts +20 -20
  14. package/dist/Form/grid/StyledContainer/hooks/useFixedContainer.d.ts +1 -1
  15. package/dist/Form/grid/StyledContainer/index.d.ts +21 -21
  16. package/dist/Form/grid/StyledContainer/styles.d.ts +5 -5
  17. package/dist/Form/grid/StyledContainer/transform.d.ts +4 -4
  18. package/dist/Form/grid/StyledContainer/utils.d.ts +44 -44
  19. package/dist/Form/grid/index.d.ts +2 -2
  20. package/dist/Form/hooks/useCheckButtonAction.d.ts +6 -6
  21. package/dist/Form/hooks/useTrackUserInteraction.d.ts +2 -2
  22. package/dist/Form/index.d.ts +52 -52
  23. package/dist/Form/index.d.ts.map +1 -1
  24. package/dist/Form/logic.d.ts +10 -10
  25. package/dist/Form/tests/testMocks.d.ts +6 -6
  26. package/dist/auth/LoginError.d.ts +3 -3
  27. package/dist/auth/LoginForm.d.ts +29 -29
  28. package/dist/auth/internal/AuthIntegrationInterface.d.ts +31 -31
  29. package/dist/auth/internal/useFormAuth.d.ts +10 -10
  30. package/dist/auth/internal/utils.d.ts +13 -13
  31. package/dist/auth/useAuthClient.d.ts +2 -2
  32. package/dist/auth/utils.d.ts +1 -1
  33. package/dist/elements/basic/ButtonElement.d.ts +2 -2
  34. package/dist/elements/basic/ImageElement.d.ts +3 -3
  35. package/dist/elements/basic/ProgressBarElement/components/SegmentBar.d.ts +2 -2
  36. package/dist/elements/basic/ProgressBarElement/components/SmoothBar.d.ts +2 -2
  37. package/dist/elements/basic/ProgressBarElement/index.d.ts +2 -2
  38. package/dist/elements/basic/TextElement.d.ts +2 -2
  39. package/dist/elements/basic/VideoElement.d.ts +2 -2
  40. package/dist/elements/components/ErrorInput.d.ts +2 -2
  41. package/dist/elements/components/FormControl.d.ts +10 -10
  42. package/dist/elements/components/FormOff.d.ts +10 -10
  43. package/dist/elements/components/InlineTooltip.d.ts +11 -11
  44. package/dist/elements/components/LoaderContainer.d.ts +10 -10
  45. package/dist/elements/components/Lottie.d.ts +2 -2
  46. package/dist/elements/components/Overlay.d.ts +15 -15
  47. package/dist/elements/components/Placeholder.d.ts +1 -1
  48. package/dist/elements/components/QuikFormViewer/transforms/form.d.ts +1 -1
  49. package/dist/elements/components/QuikFormViewer/transforms/header.d.ts +1 -1
  50. package/dist/elements/components/QuikFormViewer/transforms/sidebar.d.ts +6 -6
  51. package/dist/elements/components/QuikFormViewer.d.ts +9 -9
  52. package/dist/elements/components/Spinner.d.ts +4 -4
  53. package/dist/elements/components/TextHoverTooltip.d.ts +8 -8
  54. package/dist/elements/components/TextNodes.d.ts +4 -4
  55. package/dist/elements/components/Tooltip.d.ts +7 -7
  56. package/dist/elements/components/Watermark.d.ts +1 -1
  57. package/dist/elements/components/data/countries.d.ts +14 -14
  58. package/dist/elements/components/data/states/ae.d.ts +5 -5
  59. package/dist/elements/components/data/states/au.d.ts +5 -5
  60. package/dist/elements/components/data/states/br.d.ts +5 -5
  61. package/dist/elements/components/data/states/ca.d.ts +5 -5
  62. package/dist/elements/components/data/states/cl.d.ts +5 -5
  63. package/dist/elements/components/data/states/cn.d.ts +5 -5
  64. package/dist/elements/components/data/states/co.d.ts +5 -5
  65. package/dist/elements/components/data/states/eg.d.ts +5 -5
  66. package/dist/elements/components/data/states/es.d.ts +5 -5
  67. package/dist/elements/components/data/states/gb.d.ts +5 -5
  68. package/dist/elements/components/data/states/gt.d.ts +5 -5
  69. package/dist/elements/components/data/states/hk.d.ts +5 -5
  70. package/dist/elements/components/data/states/id.d.ts +5 -5
  71. package/dist/elements/components/data/states/ie.d.ts +5 -5
  72. package/dist/elements/components/data/states/in.d.ts +5 -5
  73. package/dist/elements/components/data/states/index.d.ts +6 -6
  74. package/dist/elements/components/data/states/it.d.ts +5 -5
  75. package/dist/elements/components/data/states/jp.d.ts +5 -5
  76. package/dist/elements/components/data/states/kr.d.ts +5 -5
  77. package/dist/elements/components/data/states/mx.d.ts +5 -5
  78. package/dist/elements/components/data/states/my.d.ts +5 -5
  79. package/dist/elements/components/data/states/ng.d.ts +5 -5
  80. package/dist/elements/components/data/states/nz.d.ts +5 -5
  81. package/dist/elements/components/data/states/pa.d.ts +5 -5
  82. package/dist/elements/components/data/states/pe.d.ts +5 -5
  83. package/dist/elements/components/data/states/ph.d.ts +5 -5
  84. package/dist/elements/components/data/states/pt.d.ts +5 -5
  85. package/dist/elements/components/data/states/ro.d.ts +5 -5
  86. package/dist/elements/components/data/states/ru.d.ts +5 -5
  87. package/dist/elements/components/data/states/th.d.ts +5 -5
  88. package/dist/elements/components/data/states/us.d.ts +9 -9
  89. package/dist/elements/components/data/states/za.d.ts +5 -5
  90. package/dist/elements/components/icons/Close.d.ts +6 -6
  91. package/dist/elements/components/icons/DiagonalArrow.d.ts +5 -5
  92. package/dist/elements/components/icons/DownloadIcon.d.ts +4 -4
  93. package/dist/elements/components/icons/FileUpload.d.ts +1 -1
  94. package/dist/elements/components/icons/FormClosed.d.ts +5 -5
  95. package/dist/elements/components/icons/Heart.d.ts +1 -1
  96. package/dist/elements/components/icons/Help.d.ts +4 -4
  97. package/dist/elements/components/icons/HideEyeIcon.d.ts +5 -5
  98. package/dist/elements/components/icons/LeftChevron.d.ts +1 -1
  99. package/dist/elements/components/icons/RatingStar.d.ts +1 -1
  100. package/dist/elements/components/icons/RightChevron.d.ts +1 -1
  101. package/dist/elements/components/icons/ShowEyeIcon.d.ts +5 -5
  102. package/dist/elements/components/icons/Warning.d.ts +5 -5
  103. package/dist/elements/components/icons/index.d.ts +11 -11
  104. package/dist/elements/components/skeletons/FieldSkeleton.d.ts +7 -7
  105. package/dist/elements/components/useBorder.d.ts +21 -21
  106. package/dist/elements/components/useTextEdit.d.ts +6 -5
  107. package/dist/elements/components/useTextEdit.d.ts.map +1 -1
  108. package/dist/elements/fields/AddressLine1Field/index.d.ts +4 -4
  109. package/dist/elements/fields/AddressLine1Field/tests/test-utils.d.ts +33 -34
  110. package/dist/elements/fields/AddressLine1Field/tests/test-utils.d.ts.map +1 -1
  111. package/dist/elements/fields/AddressLine1Field/utils.d.ts +2 -2
  112. package/dist/elements/fields/ButtonGroupField/index.d.ts +2 -2
  113. package/dist/elements/fields/ButtonGroupField/tests/test-utils.d.ts +45 -46
  114. package/dist/elements/fields/ButtonGroupField/tests/test-utils.d.ts.map +1 -1
  115. package/dist/elements/fields/CheckboxField/index.d.ts +5 -5
  116. package/dist/elements/fields/CheckboxField/tests/test-utils.d.ts +19 -20
  117. package/dist/elements/fields/CheckboxField/tests/test-utils.d.ts.map +1 -1
  118. package/dist/elements/fields/CheckboxGroupField/index.d.ts +2 -2
  119. package/dist/elements/fields/CheckboxGroupField/tests/test-utils.d.ts +59 -60
  120. package/dist/elements/fields/CheckboxGroupField/tests/test-utils.d.ts.map +1 -1
  121. package/dist/elements/fields/ColorPickerField/index.d.ts +2 -2
  122. package/dist/elements/fields/ColorPickerField/tests/test-utils.d.ts +20 -21
  123. package/dist/elements/fields/ColorPickerField/tests/test-utils.d.ts.map +1 -1
  124. package/dist/elements/fields/CustomField/Status.d.ts +8 -8
  125. package/dist/elements/fields/CustomField/index.d.ts +3 -3
  126. package/dist/elements/fields/CustomField/template.d.ts +1 -1
  127. package/dist/elements/fields/CustomField/useCustomComponentIframe.d.ts +15 -15
  128. package/dist/elements/fields/DateSelectorField/index.d.ts +22 -22
  129. package/dist/elements/fields/DateSelectorField/index.d.ts.map +1 -1
  130. package/dist/elements/fields/DateSelectorField/styles.d.ts +4 -4
  131. package/dist/elements/fields/DateSelectorField/tests/test-utils.d.ts +73 -74
  132. package/dist/elements/fields/DateSelectorField/tests/test-utils.d.ts.map +1 -1
  133. package/dist/elements/fields/DateSelectorField/useDateLocale.d.ts +7 -7
  134. package/dist/elements/fields/DateSelectorField/utils.d.ts +3 -3
  135. package/dist/elements/fields/DropdownField/index.d.ts +1 -1
  136. package/dist/elements/fields/DropdownField/tests/test-utils.d.ts +26 -28
  137. package/dist/elements/fields/DropdownField/tests/test-utils.d.ts.map +1 -1
  138. package/dist/elements/fields/DropdownMultiField/DropdownMultiFieldSelectComponents.d.ts +8 -8
  139. package/dist/elements/fields/DropdownMultiField/createDropdownSelect.d.ts +190 -190
  140. package/dist/elements/fields/DropdownMultiField/index.d.ts +1 -1
  141. package/dist/elements/fields/DropdownMultiField/optionNormalization.d.ts +9 -9
  142. package/dist/elements/fields/DropdownMultiField/selectStyles.d.ts +12 -12
  143. package/dist/elements/fields/DropdownMultiField/tests/test-utils.d.ts +46 -47
  144. package/dist/elements/fields/DropdownMultiField/tests/test-utils.d.ts.map +1 -1
  145. package/dist/elements/fields/DropdownMultiField/types.d.ts +49 -49
  146. package/dist/elements/fields/DropdownMultiField/useCollapsedSelectionManager.d.ts +46 -46
  147. package/dist/elements/fields/DropdownMultiField/useCollapsedValuesMeasurement.d.ts +19 -19
  148. package/dist/elements/fields/DropdownMultiField/useDropdownInteractions.d.ts +46 -46
  149. package/dist/elements/fields/DropdownMultiField/useDropdownOptions.d.ts +24 -24
  150. package/dist/elements/fields/DropdownMultiField/useSelectProps.d.ts +112 -112
  151. package/dist/elements/fields/FileUploadField/index.d.ts +2 -2
  152. package/dist/elements/fields/FileUploadField/tests/test-utils.d.ts +10 -10
  153. package/dist/elements/fields/MatrixField/index.d.ts +2 -2
  154. package/dist/elements/fields/MatrixField/tests/test-utils.d.ts +66 -67
  155. package/dist/elements/fields/MatrixField/tests/test-utils.d.ts.map +1 -1
  156. package/dist/elements/fields/PasswordField/index.d.ts +4 -4
  157. package/dist/elements/fields/PasswordField/tests/test-utils.d.ts +29 -30
  158. package/dist/elements/fields/PasswordField/tests/test-utils.d.ts.map +1 -1
  159. package/dist/elements/fields/PaymentMethodField.d.ts +4 -4
  160. package/dist/elements/fields/PhoneField/CountryDropdown.d.ts +3 -3
  161. package/dist/elements/fields/PhoneField/exampleNumbers.d.ts +2 -2
  162. package/dist/elements/fields/PhoneField/index.d.ts +4 -4
  163. package/dist/elements/fields/PhoneField/tests/test-utils.d.ts +85 -86
  164. package/dist/elements/fields/PhoneField/tests/test-utils.d.ts.map +1 -1
  165. package/dist/elements/fields/PhoneField/timeZoneCountries.d.ts +4 -4
  166. package/dist/elements/fields/PhoneField/validation.d.ts +3 -3
  167. package/dist/elements/fields/PinInputField/index.d.ts +2 -2
  168. package/dist/elements/fields/PinInputField/tests/test-utils.d.ts +78 -79
  169. package/dist/elements/fields/PinInputField/tests/test-utils.d.ts.map +1 -1
  170. package/dist/elements/fields/PinInputField/useOTPListener.d.ts +1 -1
  171. package/dist/elements/fields/QRScanner/constants.d.ts +14 -14
  172. package/dist/elements/fields/QRScanner/hooks/use-device-rotation.d.ts +11 -11
  173. package/dist/elements/fields/QRScanner/index.d.ts +2 -2
  174. package/dist/elements/fields/QRScanner/qrLoader.d.ts +2 -2
  175. package/dist/elements/fields/QRScanner/utils/local-storage.d.ts +5 -5
  176. package/dist/elements/fields/QRScanner/utils/select-camera.d.ts +9 -9
  177. package/dist/elements/fields/QRScanner/utils/supports-zoom.d.ts +8 -8
  178. package/dist/elements/fields/RadioButtonGroupField/index.d.ts +2 -2
  179. package/dist/elements/fields/RadioButtonGroupField/tests/test-utils.d.ts +54 -55
  180. package/dist/elements/fields/RadioButtonGroupField/tests/test-utils.d.ts.map +1 -1
  181. package/dist/elements/fields/RatingField/index.d.ts +1 -1
  182. package/dist/elements/fields/RatingField/tests/test-utils.d.ts +21 -22
  183. package/dist/elements/fields/RatingField/tests/test-utils.d.ts.map +1 -1
  184. package/dist/elements/fields/SignatureField/components/SignatureCanvas.d.ts +22 -22
  185. package/dist/elements/fields/SignatureField/components/SignatureModal.d.ts +12 -12
  186. package/dist/elements/fields/SignatureField/components/utils.d.ts +10 -10
  187. package/dist/elements/fields/SignatureField/index.d.ts +3 -3
  188. package/dist/elements/fields/SignatureField/translation.d.ts +17 -17
  189. package/dist/elements/fields/SliderField/index.d.ts +1 -1
  190. package/dist/elements/fields/SliderField/styles.d.ts +3 -3
  191. package/dist/elements/fields/SliderField/tests/test-utils.d.ts +21 -22
  192. package/dist/elements/fields/SliderField/tests/test-utils.d.ts.map +1 -1
  193. package/dist/elements/fields/TextArea/index.d.ts +4 -4
  194. package/dist/elements/fields/TextArea/tests/test-utils.d.ts +10 -10
  195. package/dist/elements/fields/TextField/TextAutocomplete.d.ts +15 -15
  196. package/dist/elements/fields/TextField/index.d.ts +4 -4
  197. package/dist/elements/fields/TextField/index.d.ts.map +1 -1
  198. package/dist/elements/fields/TextField/tests/test-utils.d.ts +10 -10
  199. package/dist/elements/fields/index.d.ts +27 -26
  200. package/dist/elements/fields/index.d.ts.map +1 -1
  201. package/dist/elements/fields/shared/tests/field-test-utils.d.ts +50 -51
  202. package/dist/elements/fields/shared/tests/field-test-utils.d.ts.map +1 -1
  203. package/dist/elements/index.d.ts +36 -36
  204. package/dist/elements/styles.d.ts +64 -64
  205. package/dist/elements/utils/fieldNormalization.d.ts +12 -12
  206. package/dist/fthry_FormControl.DxW_Bnm8.js +16 -0
  207. package/dist/fthry_InlineTooltip.CKU9xvD_.js +53 -0
  208. package/dist/fthry_Overlay.CAkqWcqE.js +228 -0
  209. package/dist/fthry_PaymentMethodField.DgbAXbj6.js +928 -0
  210. package/dist/fthry_Placeholder.Dns0M5df.js +14 -0
  211. package/dist/fthry_ShowEyeIcon.B5WMynZy.js +13 -0
  212. package/dist/fthry_index.3X-DqTfs.js +97 -0
  213. package/dist/fthry_index.B2eJWMcW.js +2000 -0
  214. package/dist/fthry_index.BMqtYXlU.js +8166 -0
  215. package/dist/fthry_index.BOBND5Kw.js +1427 -0
  216. package/dist/fthry_index.BOzMcNbx.js +1452 -0
  217. package/dist/fthry_index.BQObFcP7.js +15921 -0
  218. package/dist/fthry_index.CJrl9QNZ.js +888 -0
  219. package/dist/fthry_index.CcFhx1jU.js +73 -0
  220. package/dist/fthry_index.CcNVqQ7R.js +293 -0
  221. package/dist/fthry_index.CnVdemA5.js +1162 -0
  222. package/dist/fthry_index.CxRelutP.js +42 -0
  223. package/dist/fthry_index.D19e9CJD.js +1193 -0
  224. package/dist/fthry_index.D6UpFxPB.js +216 -0
  225. package/dist/fthry_index.DD4M0PFc.js +46 -0
  226. package/dist/fthry_index.DMgGgKWy.js +55 -0
  227. package/dist/fthry_index.DQB3aI2u.js +95 -0
  228. package/dist/fthry_index.DaJO430v.js +513 -0
  229. package/dist/fthry_index.DfiZRBo4.js +35 -0
  230. package/dist/fthry_index.Di1aadud.js +251 -0
  231. package/dist/fthry_index.DpFG-lbP.js +138 -0
  232. package/dist/fthry_index.DsECQjJb.js +131 -0
  233. package/dist/fthry_index.diObxaBS.js +60999 -0
  234. package/dist/fthry_index.ghZ0mkQF.js +98 -0
  235. package/dist/fthry_input.COhHyroj.js +3779 -0
  236. package/dist/fthry_script.D9CLkYzO.js +157 -0
  237. package/dist/fthry_styles.Bcy5cq6p.js +1654 -0
  238. package/dist/fthry_useElementSize.boD8p4bk.js +51 -0
  239. package/dist/fthry_useSalesforceSync.BNvWxPzE.js +44 -0
  240. package/dist/fthry_webfontloader.DEj1XG0u.js +57 -0
  241. package/dist/hooks/router.d.ts +14 -14
  242. package/dist/hooks/useElementSize.d.ts +7 -7
  243. package/dist/hooks/useLoader.d.ts +35 -35
  244. package/dist/hooks/useLoader.d.ts.map +1 -1
  245. package/dist/hooks/useMounted.d.ts +2 -2
  246. package/dist/hooks/usePollFuserData.d.ts +1 -1
  247. package/dist/hooks/usePrevious.d.ts +2 -2
  248. package/dist/hooks/useSalesforceSync.d.ts +10 -10
  249. package/dist/index.d.ts +150 -149
  250. package/dist/index.d.ts.map +1 -1
  251. package/dist/index.js +9 -1
  252. package/dist/integrations/alloy.d.ts +2 -2
  253. package/dist/integrations/amplitude.d.ts +1 -1
  254. package/dist/integrations/argyle.d.ts +2 -2
  255. package/dist/integrations/calendly.d.ts +2 -2
  256. package/dist/integrations/firebase.d.ts +42 -42
  257. package/dist/integrations/flinks/index.d.ts +10 -10
  258. package/dist/integrations/flinks/utils.d.ts +12 -12
  259. package/dist/integrations/googleAnalytics.d.ts +3 -3
  260. package/dist/integrations/googleTagManager.d.ts +1 -1
  261. package/dist/integrations/heap.d.ts +2 -2
  262. package/dist/integrations/intercom.d.ts +2 -2
  263. package/dist/integrations/mixpanel.d.ts +2 -2
  264. package/dist/integrations/persona.d.ts +2 -2
  265. package/dist/integrations/plaid.d.ts +2 -2
  266. package/dist/integrations/recaptcha.d.ts +2 -2
  267. package/dist/integrations/rudderstack.d.ts +3 -3
  268. package/dist/integrations/schwab.d.ts +1 -1
  269. package/dist/integrations/segment.d.ts +1 -1
  270. package/dist/integrations/stripe/Cart.d.ts +19 -19
  271. package/dist/integrations/stripe/SimplifiedProduct.d.ts +39 -39
  272. package/dist/integrations/stripe/index.d.ts +1 -1
  273. package/dist/integrations/stripe/stripe.d.ts +97 -97
  274. package/dist/integrations/stytch.d.ts +19 -19
  275. package/dist/integrations/trustedform.d.ts +2 -2
  276. package/dist/integrations/utils.d.ts +14 -14
  277. package/dist/setupTests.d.ts +1 -1
  278. package/dist/types/Form.d.ts +80 -80
  279. package/dist/utils/DangerouslySetHTMLContent.d.ts +2 -2
  280. package/dist/utils/ShadowDomHtmlContent.d.ts +8 -8
  281. package/dist/utils/array.d.ts +11 -11
  282. package/dist/utils/browser.d.ts +23 -23
  283. package/dist/utils/callbackQueue.d.ts +10 -10
  284. package/dist/utils/document.d.ts +1 -1
  285. package/dist/utils/elementActions.d.ts +55 -55
  286. package/dist/utils/entities/Collaborator.d.ts +14 -14
  287. package/dist/utils/entities/Field.d.ts +129 -129
  288. package/dist/utils/error.d.ts +13 -13
  289. package/dist/utils/featheryClient/index.d.ts +103 -103
  290. package/dist/utils/featheryClient/integrationClient.d.ts +114 -114
  291. package/dist/utils/featheryClient/utils.d.ts +1 -1
  292. package/dist/utils/fieldHelperFunctions.d.ts +70 -70
  293. package/dist/utils/formContext.d.ts +104 -104
  294. package/dist/utils/formHelperFunctions.d.ts +44 -44
  295. package/dist/utils/hideAndRepeats.d.ts +27 -27
  296. package/dist/utils/hydration.d.ts +14 -14
  297. package/dist/utils/image.d.ts +39 -39
  298. package/dist/utils/init.d.ts +59 -59
  299. package/dist/utils/interactionState.d.ts +4 -4
  300. package/dist/utils/internalState.d.ts +91 -91
  301. package/dist/utils/logic.d.ts +50 -50
  302. package/dist/utils/offlineRequestHandler.d.ts +94 -94
  303. package/dist/utils/offlineRequestHandler.d.ts.map +1 -1
  304. package/dist/utils/polyfills.d.ts +2 -2
  305. package/dist/utils/primitives.d.ts +14 -14
  306. package/dist/utils/random.d.ts +1 -1
  307. package/dist/utils/repeat.d.ts +38 -38
  308. package/dist/utils/sensitiveActions.d.ts +7 -7
  309. package/dist/utils/stepHelperFunctions.d.ts +22 -22
  310. package/dist/utils/styles.d.ts +5 -5
  311. package/dist/utils/validation.d.ts +58 -58
  312. package/package.json +17 -5
  313. package/umd/466.e3456c8b3407ad04ba56.js +1 -0
  314. package/umd/{DateSelectorField.b98c0ecb80f56e65cc69.js → DateSelectorField.bd5646949de71f571d04.js} +1 -1
  315. package/umd/{TextField.a3d8d42f6f8236d00f83.js → TextField.5a5296fe3ea60c4459f2.js} +1 -1
  316. package/umd/index.js +1 -1
  317. package/umd/796.e66d52ea21ef09c4eeaa.js +0 -1
@@ -0,0 +1,1452 @@
1
+ import { s as featheryDoc, am as devicePixelRatio, g as getDefaultExportFromCjs, _ as __read, j as jsxs, b as jsx, a as __assign, m as Fragment, c as __awaiter, d as __generator, an as toBase64, e as debounce, ao as MODAL_Z_INDEX, a9 as CloseIcon, ap as dataURLToFile, k as FORM_Z_INDEX, E as ErrorInput } from './fthry_index.diObxaBS.js';
2
+ import React__default, { Component, forwardRef, useState, useRef, useImperativeHandle, useEffect, useCallback, Suspense } from 'react';
3
+ import { P as PropTypes } from './fthry_index.D19e9CJD.js';
4
+ import 'react/jsx-runtime';
5
+ import 'react-dom/client';
6
+ import 'stream';
7
+ import 'events';
8
+ import 'buffer';
9
+ import 'util';
10
+ import 'react-dom';
11
+
12
+ /*
13
+ * Implementation of canvas trimming is taken from:
14
+ * https://github.com/agilgur5/trim-canvas/blob/master/src/index.js
15
+ *
16
+ * Implementation of drawing a signature from a data URL is taken from:
17
+ * https://github.com/szimek/signature_pad/blob/356e97d1c9fc27b8d5930544b50feadc754dd8ba/src/signature_pad.ts#L128C10-L128C21
18
+ *
19
+ */
20
+ function trimCanvas$1(canvas) {
21
+ var context = canvas.getContext('2d');
22
+ if (!context) {
23
+ throw new Error('Could not get 2d context from canvas');
24
+ }
25
+ var imgWidth = canvas.width;
26
+ var imgHeight = canvas.height;
27
+ var imgData = context.getImageData(0, 0, imgWidth, imgHeight).data;
28
+ // get the corners of the relevant content (everything that's not white)
29
+ var cropTop = scanY(true, imgWidth, imgHeight, imgData);
30
+ var cropBottom = scanY(false, imgWidth, imgHeight, imgData);
31
+ var cropLeft = scanX(true, imgWidth, imgHeight, imgData);
32
+ var cropRight = scanX(false, imgWidth, imgHeight, imgData);
33
+ // if the image is already trimmed, return the original canvas
34
+ if (cropTop === null ||
35
+ cropBottom === null ||
36
+ cropLeft === null ||
37
+ cropRight === null) {
38
+ return canvas;
39
+ }
40
+ // + 1 is needed because this is a difference, there are n + 1 pixels in
41
+ // between the two numbers inclusive
42
+ var cropXDiff = cropRight - cropLeft + 1;
43
+ var cropYDiff = cropBottom - cropTop + 1;
44
+ // get the relevant data from the calculated coordinates
45
+ var trimmedData = context.getImageData(cropLeft, cropTop, cropXDiff, cropYDiff);
46
+ // set the trimmed width and height
47
+ canvas.width = cropXDiff;
48
+ canvas.height = cropYDiff;
49
+ // clear the canvas
50
+ context.clearRect(0, 0, cropXDiff, cropYDiff);
51
+ // place the trimmed data into the cleared canvas to create
52
+ // a new, trimmed canvas
53
+ context.putImageData(trimmedData, 0, 0);
54
+ return canvas; // for chaining
55
+ }
56
+ // returns the RGBA values of an x, y coord of imgData
57
+ function getRGBA(x, y, imgWidth, imgData) {
58
+ return {
59
+ red: imgData[(imgWidth * y + x) * 4],
60
+ green: imgData[(imgWidth * y + x) * 4 + 1],
61
+ blue: imgData[(imgWidth * y + x) * 4 + 2],
62
+ alpha: imgData[(imgWidth * y + x) * 4 + 3]
63
+ };
64
+ }
65
+ function getAlpha(x, y, imgWidth, imgData) {
66
+ return getRGBA(x, y, imgWidth, imgData).alpha;
67
+ }
68
+ // finds the first y coord in imgData that is not white
69
+ function scanY(fromTop, imgWidth, imgHeight, imgData) {
70
+ var offset = fromTop ? 1 : -1;
71
+ var firstCol = fromTop ? 0 : imgHeight - 1;
72
+ // loop through each row
73
+ for (var y = firstCol; fromTop ? y < imgHeight : y > -1; y += offset) {
74
+ // loop through each column
75
+ for (var x = 0; x < imgWidth; x++) {
76
+ // if not white, return col
77
+ if (getAlpha(x, y, imgWidth, imgData)) {
78
+ return y;
79
+ }
80
+ }
81
+ }
82
+ // the whole image is white already
83
+ return null;
84
+ }
85
+ // finds the first x coord in imgData that is not white
86
+ function scanX(fromLeft, imgWidth, imgHeight, imgData) {
87
+ var offset = fromLeft ? 1 : -1;
88
+ var firstRow = fromLeft ? 0 : imgWidth - 1;
89
+ // loop through each column
90
+ for (var x = firstRow; fromLeft ? x < imgWidth : x > -1; x += offset) {
91
+ // loop through each row
92
+ for (var y = 0; y < imgHeight; y++) {
93
+ // if not white, return row
94
+ if (getAlpha(x, y, imgWidth, imgData)) {
95
+ return x;
96
+ }
97
+ }
98
+ }
99
+ // the whole image is white already
100
+ return null;
101
+ }
102
+ function fromDataURL(canvas, dataUrl, options) {
103
+ if (options === void 0) { options = {}; }
104
+ return new Promise(function (resolve, reject) {
105
+ var context = canvas.getContext('2d');
106
+ var image = new Image();
107
+ var ratio = options.ratio || devicePixelRatio();
108
+ var width = options.width || canvas.width / ratio;
109
+ var height = options.height || canvas.height / ratio;
110
+ var xOffset = options.xOffset || 0;
111
+ var yOffset = options.yOffset || 0;
112
+ image.onload = function () {
113
+ context === null || context === void 0 ? void 0 : context.drawImage(image, xOffset, yOffset, width, height);
114
+ resolve();
115
+ };
116
+ image.onerror = function (error) {
117
+ reject(error);
118
+ };
119
+ image.crossOrigin = 'anonymous';
120
+ image.src = dataUrl;
121
+ });
122
+ }
123
+ var generateSignatureImage = function (text, fontFamily, fontSize) {
124
+ if (fontFamily === void 0) { fontFamily = 'La Belle Aurore'; }
125
+ if (fontSize === void 0) { fontSize = '1.5em'; }
126
+ var canvas = featheryDoc().createElement('canvas');
127
+ var ctx = canvas.getContext('2d');
128
+ if (!ctx) {
129
+ return;
130
+ }
131
+ var scaleFactor = 4;
132
+ canvas.width = 560 * scaleFactor;
133
+ canvas.height = 100 * scaleFactor;
134
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
135
+ ctx.scale(scaleFactor, scaleFactor);
136
+ ctx.font = "".concat(fontSize, " ").concat(fontFamily);
137
+ ctx.fillStyle = '#000';
138
+ ctx.textBaseline = 'middle';
139
+ var textMetrics = ctx.measureText(text);
140
+ var textWidth = textMetrics.width;
141
+ var textHeight = parseInt(fontSize) * 1.5;
142
+ ctx.scale(1 / scaleFactor, 1 / scaleFactor);
143
+ var padding = 20 * scaleFactor;
144
+ canvas.width = textWidth * scaleFactor + padding * 2;
145
+ canvas.height = textHeight * scaleFactor + padding * 2;
146
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
147
+ ctx.scale(scaleFactor, scaleFactor);
148
+ ctx.font = "".concat(fontSize, " ").concat(fontFamily);
149
+ ctx.fillStyle = '#000';
150
+ ctx.textBaseline = 'middle';
151
+ ctx.fillText(text, padding / scaleFactor, canvas.height / 2 / scaleFactor);
152
+ return canvas;
153
+ };
154
+ function cloneCanvas(oldCanvas) {
155
+ var newCanvas = featheryDoc().createElement('canvas');
156
+ var context = newCanvas.getContext('2d');
157
+ newCanvas.width = oldCanvas.width;
158
+ newCanvas.height = oldCanvas.height;
159
+ if (context) {
160
+ context.drawImage(oldCanvas, 0, 0);
161
+ }
162
+ return newCanvas;
163
+ }
164
+
165
+ function _extends() {
166
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
167
+ for (var e = 1; e < arguments.length; e++) {
168
+ var t = arguments[e];
169
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
170
+ }
171
+ return n;
172
+ }, _extends.apply(null, arguments);
173
+ }
174
+
175
+ function _objectWithoutPropertiesLoose(r, e) {
176
+ if (null == r) return {};
177
+ var t = {};
178
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
179
+ if (-1 !== e.indexOf(n)) continue;
180
+ t[n] = r[n];
181
+ }
182
+ return t;
183
+ }
184
+
185
+ function _objectWithoutProperties(e, t) {
186
+ if (null == e) return {};
187
+ var o,
188
+ r,
189
+ i = _objectWithoutPropertiesLoose(e, t);
190
+ if (Object.getOwnPropertySymbols) {
191
+ var n = Object.getOwnPropertySymbols(e);
192
+ for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
193
+ }
194
+ return i;
195
+ }
196
+
197
+ function _typeof(o) {
198
+ "@babel/helpers - typeof";
199
+
200
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
201
+ return typeof o;
202
+ } : function (o) {
203
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
204
+ }, _typeof(o);
205
+ }
206
+
207
+ function _createClass(e, r, t) {
208
+ return Object.defineProperty(e, "prototype", {
209
+ writable: false
210
+ }), e;
211
+ }
212
+
213
+ function _classCallCheck(a, n) {
214
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
215
+ }
216
+
217
+ function _setPrototypeOf(t, e) {
218
+ return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
219
+ return t.__proto__ = e, t;
220
+ }, _setPrototypeOf(t, e);
221
+ }
222
+
223
+ function _inherits(t, e) {
224
+ if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
225
+ t.prototype = Object.create(e && e.prototype, {
226
+ constructor: {
227
+ value: t,
228
+ writable: true,
229
+ configurable: true
230
+ }
231
+ }), Object.defineProperty(t, "prototype", {
232
+ writable: false
233
+ }), e && _setPrototypeOf(t, e);
234
+ }
235
+
236
+ function _getPrototypeOf(t) {
237
+ return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
238
+ return t.__proto__ || Object.getPrototypeOf(t);
239
+ }, _getPrototypeOf(t);
240
+ }
241
+
242
+ function _isNativeReflectConstruct() {
243
+ try {
244
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
245
+ } catch (t) {}
246
+ return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {
247
+ return !!t;
248
+ })();
249
+ }
250
+
251
+ function _assertThisInitialized(e) {
252
+ if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
253
+ return e;
254
+ }
255
+
256
+ function _possibleConstructorReturn(t, e) {
257
+ if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
258
+ if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
259
+ return _assertThisInitialized(t);
260
+ }
261
+
262
+ function _createSuper(t) {
263
+ var r = _isNativeReflectConstruct();
264
+ return function () {
265
+ var e,
266
+ o = _getPrototypeOf(t);
267
+ if (r) {
268
+ var s = _getPrototypeOf(this).constructor;
269
+ e = Reflect.construct(o, arguments, s);
270
+ } else e = o.apply(this, arguments);
271
+ return _possibleConstructorReturn(this, e);
272
+ };
273
+ }
274
+
275
+ /*!
276
+ * Signature Pad v2.3.2
277
+ * https://github.com/szimek/signature_pad
278
+ *
279
+ * Copyright 2017 Szymon Nowak
280
+ * Released under the MIT license
281
+ *
282
+ * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from:
283
+ * http://corner.squareup.com/2012/07/smoother-signatures.html
284
+ *
285
+ * Implementation of interpolation using cubic Bézier curves is taken from:
286
+ * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript
287
+ *
288
+ * Algorithm for approximated length of a Bézier curve is taken from:
289
+ * http://www.lemoda.net/maths/bezier-length/index.html
290
+ *
291
+ */
292
+
293
+ function Point(x, y, time) {
294
+ this.x = x;
295
+ this.y = y;
296
+ this.time = time || new Date().getTime();
297
+ }
298
+
299
+ Point.prototype.velocityFrom = function (start) {
300
+ return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 1;
301
+ };
302
+
303
+ Point.prototype.distanceTo = function (start) {
304
+ return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));
305
+ };
306
+
307
+ Point.prototype.equals = function (other) {
308
+ return this.x === other.x && this.y === other.y && this.time === other.time;
309
+ };
310
+
311
+ function Bezier(startPoint, control1, control2, endPoint) {
312
+ this.startPoint = startPoint;
313
+ this.control1 = control1;
314
+ this.control2 = control2;
315
+ this.endPoint = endPoint;
316
+ }
317
+
318
+ // Returns approximated length.
319
+ Bezier.prototype.length = function () {
320
+ var steps = 10;
321
+ var length = 0;
322
+ var px = void 0;
323
+ var py = void 0;
324
+
325
+ for (var i = 0; i <= steps; i += 1) {
326
+ var t = i / steps;
327
+ var cx = this._point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);
328
+ var cy = this._point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);
329
+ if (i > 0) {
330
+ var xdiff = cx - px;
331
+ var ydiff = cy - py;
332
+ length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);
333
+ }
334
+ px = cx;
335
+ py = cy;
336
+ }
337
+
338
+ return length;
339
+ };
340
+
341
+ /* eslint-disable no-multi-spaces, space-in-parens */
342
+ Bezier.prototype._point = function (t, start, c1, c2, end) {
343
+ return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t;
344
+ };
345
+
346
+ /* eslint-disable */
347
+
348
+ // http://stackoverflow.com/a/27078401/815507
349
+ function throttle(func, wait, options) {
350
+ var context, args, result;
351
+ var timeout = null;
352
+ var previous = 0;
353
+ if (!options) options = {};
354
+ var later = function later() {
355
+ previous = options.leading === false ? 0 : Date.now();
356
+ timeout = null;
357
+ result = func.apply(context, args);
358
+ if (!timeout) context = args = null;
359
+ };
360
+ return function () {
361
+ var now = Date.now();
362
+ if (!previous && options.leading === false) previous = now;
363
+ var remaining = wait - (now - previous);
364
+ context = this;
365
+ args = arguments;
366
+ if (remaining <= 0 || remaining > wait) {
367
+ if (timeout) {
368
+ clearTimeout(timeout);
369
+ timeout = null;
370
+ }
371
+ previous = now;
372
+ result = func.apply(context, args);
373
+ if (!timeout) context = args = null;
374
+ } else if (!timeout && options.trailing !== false) {
375
+ timeout = setTimeout(later, remaining);
376
+ }
377
+ return result;
378
+ };
379
+ }
380
+
381
+ function SignaturePad(canvas, options) {
382
+ var self = this;
383
+ var opts = options || {};
384
+
385
+ this.velocityFilterWeight = opts.velocityFilterWeight || 0.7;
386
+ this.minWidth = opts.minWidth || 0.5;
387
+ this.maxWidth = opts.maxWidth || 2.5;
388
+ this.throttle = 'throttle' in opts ? opts.throttle : 16; // in miliseconds
389
+ this.minDistance = 'minDistance' in opts ? opts.minDistance : 5;
390
+
391
+ if (this.throttle) {
392
+ this._strokeMoveUpdate = throttle(SignaturePad.prototype._strokeUpdate, this.throttle);
393
+ } else {
394
+ this._strokeMoveUpdate = SignaturePad.prototype._strokeUpdate;
395
+ }
396
+
397
+ this.dotSize = opts.dotSize || function () {
398
+ return (this.minWidth + this.maxWidth) / 2;
399
+ };
400
+ this.penColor = opts.penColor || 'black';
401
+ this.backgroundColor = opts.backgroundColor || 'rgba(0,0,0,0)';
402
+ this.onBegin = opts.onBegin;
403
+ this.onEnd = opts.onEnd;
404
+
405
+ this._canvas = canvas;
406
+ this._ctx = canvas.getContext('2d');
407
+ this.clear();
408
+
409
+ // We need add these inline so they are available to unbind while still having
410
+ // access to 'self' we could use _.bind but it's not worth adding a dependency.
411
+ this._handleMouseDown = function (event) {
412
+ if (event.which === 1) {
413
+ self._mouseButtonDown = true;
414
+ self._strokeBegin(event);
415
+ }
416
+ };
417
+
418
+ this._handleMouseMove = function (event) {
419
+ if (self._mouseButtonDown) {
420
+ self._strokeMoveUpdate(event);
421
+ }
422
+ };
423
+
424
+ this._handleMouseUp = function (event) {
425
+ if (event.which === 1 && self._mouseButtonDown) {
426
+ self._mouseButtonDown = false;
427
+ self._strokeEnd(event);
428
+ }
429
+ };
430
+
431
+ this._handleTouchStart = function (event) {
432
+ if (event.targetTouches.length === 1) {
433
+ var touch = event.changedTouches[0];
434
+ self._strokeBegin(touch);
435
+ }
436
+ };
437
+
438
+ this._handleTouchMove = function (event) {
439
+ // Prevent scrolling.
440
+ event.preventDefault();
441
+
442
+ var touch = event.targetTouches[0];
443
+ self._strokeMoveUpdate(touch);
444
+ };
445
+
446
+ this._handleTouchEnd = function (event) {
447
+ var wasCanvasTouched = event.target === self._canvas;
448
+ if (wasCanvasTouched) {
449
+ event.preventDefault();
450
+ self._strokeEnd(event);
451
+ }
452
+ };
453
+
454
+ // Enable mouse and touch event handlers
455
+ this.on();
456
+ }
457
+
458
+ // Public methods
459
+ SignaturePad.prototype.clear = function () {
460
+ var ctx = this._ctx;
461
+ var canvas = this._canvas;
462
+
463
+ ctx.fillStyle = this.backgroundColor;
464
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
465
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
466
+
467
+ this._data = [];
468
+ this._reset();
469
+ this._isEmpty = true;
470
+ };
471
+
472
+ SignaturePad.prototype.fromDataURL = function (dataUrl) {
473
+ var _this = this;
474
+
475
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
476
+
477
+ var image = new Image();
478
+ var ratio = options.ratio || window.devicePixelRatio || 1;
479
+ var width = options.width || this._canvas.width / ratio;
480
+ var height = options.height || this._canvas.height / ratio;
481
+
482
+ this._reset();
483
+ image.src = dataUrl;
484
+ image.onload = function () {
485
+ _this._ctx.drawImage(image, 0, 0, width, height);
486
+ };
487
+ this._isEmpty = false;
488
+ };
489
+
490
+ SignaturePad.prototype.toDataURL = function (type) {
491
+ var _canvas;
492
+
493
+ switch (type) {
494
+ case 'image/svg+xml':
495
+ return this._toSVG();
496
+ default:
497
+ for (var _len = arguments.length, options = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
498
+ options[_key - 1] = arguments[_key];
499
+ }
500
+
501
+ return (_canvas = this._canvas).toDataURL.apply(_canvas, [type].concat(options));
502
+ }
503
+ };
504
+
505
+ SignaturePad.prototype.on = function () {
506
+ this._handleMouseEvents();
507
+ this._handleTouchEvents();
508
+ };
509
+
510
+ SignaturePad.prototype.off = function () {
511
+ this._canvas.removeEventListener('mousedown', this._handleMouseDown);
512
+ this._canvas.removeEventListener('mousemove', this._handleMouseMove);
513
+ document.removeEventListener('mouseup', this._handleMouseUp);
514
+
515
+ this._canvas.removeEventListener('touchstart', this._handleTouchStart);
516
+ this._canvas.removeEventListener('touchmove', this._handleTouchMove);
517
+ this._canvas.removeEventListener('touchend', this._handleTouchEnd);
518
+ };
519
+
520
+ SignaturePad.prototype.isEmpty = function () {
521
+ return this._isEmpty;
522
+ };
523
+
524
+ // Private methods
525
+ SignaturePad.prototype._strokeBegin = function (event) {
526
+ this._data.push([]);
527
+ this._reset();
528
+ this._strokeUpdate(event);
529
+
530
+ if (typeof this.onBegin === 'function') {
531
+ this.onBegin(event);
532
+ }
533
+ };
534
+
535
+ SignaturePad.prototype._strokeUpdate = function (event) {
536
+ var x = event.clientX;
537
+ var y = event.clientY;
538
+
539
+ var point = this._createPoint(x, y);
540
+ var lastPointGroup = this._data[this._data.length - 1];
541
+ var lastPoint = lastPointGroup && lastPointGroup[lastPointGroup.length - 1];
542
+ var isLastPointTooClose = lastPoint && point.distanceTo(lastPoint) < this.minDistance;
543
+
544
+ // Skip this point if it's too close to the previous one
545
+ if (!(lastPoint && isLastPointTooClose)) {
546
+ var _addPoint = this._addPoint(point),
547
+ curve = _addPoint.curve,
548
+ widths = _addPoint.widths;
549
+
550
+ if (curve && widths) {
551
+ this._drawCurve(curve, widths.start, widths.end);
552
+ }
553
+
554
+ this._data[this._data.length - 1].push({
555
+ x: point.x,
556
+ y: point.y,
557
+ time: point.time,
558
+ color: this.penColor
559
+ });
560
+ }
561
+ };
562
+
563
+ SignaturePad.prototype._strokeEnd = function (event) {
564
+ var canDrawCurve = this.points.length > 2;
565
+ var point = this.points[0]; // Point instance
566
+
567
+ if (!canDrawCurve && point) {
568
+ this._drawDot(point);
569
+ }
570
+
571
+ if (point) {
572
+ var lastPointGroup = this._data[this._data.length - 1];
573
+ var lastPoint = lastPointGroup[lastPointGroup.length - 1]; // plain object
574
+
575
+ // When drawing a dot, there's only one point in a group, so without this check
576
+ // such group would end up with exactly the same 2 points.
577
+ if (!point.equals(lastPoint)) {
578
+ lastPointGroup.push({
579
+ x: point.x,
580
+ y: point.y,
581
+ time: point.time,
582
+ color: this.penColor
583
+ });
584
+ }
585
+ }
586
+
587
+ if (typeof this.onEnd === 'function') {
588
+ this.onEnd(event);
589
+ }
590
+ };
591
+
592
+ SignaturePad.prototype._handleMouseEvents = function () {
593
+ this._mouseButtonDown = false;
594
+
595
+ this._canvas.addEventListener('mousedown', this._handleMouseDown);
596
+ this._canvas.addEventListener('mousemove', this._handleMouseMove);
597
+ document.addEventListener('mouseup', this._handleMouseUp);
598
+ };
599
+
600
+ SignaturePad.prototype._handleTouchEvents = function () {
601
+ // Pass touch events to canvas element on mobile IE11 and Edge.
602
+ this._canvas.style.msTouchAction = 'none';
603
+ this._canvas.style.touchAction = 'none';
604
+
605
+ this._canvas.addEventListener('touchstart', this._handleTouchStart);
606
+ this._canvas.addEventListener('touchmove', this._handleTouchMove);
607
+ this._canvas.addEventListener('touchend', this._handleTouchEnd);
608
+ };
609
+
610
+ SignaturePad.prototype._reset = function () {
611
+ this.points = [];
612
+ this._lastVelocity = 0;
613
+ this._lastWidth = (this.minWidth + this.maxWidth) / 2;
614
+ this._ctx.fillStyle = this.penColor;
615
+ };
616
+
617
+ SignaturePad.prototype._createPoint = function (x, y, time) {
618
+ var rect = this._canvas.getBoundingClientRect();
619
+
620
+ return new Point(x - rect.left, y - rect.top, time || new Date().getTime());
621
+ };
622
+
623
+ SignaturePad.prototype._addPoint = function (point) {
624
+ var points = this.points;
625
+ var tmp = void 0;
626
+
627
+ points.push(point);
628
+
629
+ if (points.length > 2) {
630
+ // To reduce the initial lag make it work with 3 points
631
+ // by copying the first point to the beginning.
632
+ if (points.length === 3) points.unshift(points[0]);
633
+
634
+ tmp = this._calculateCurveControlPoints(points[0], points[1], points[2]);
635
+ var c2 = tmp.c2;
636
+ tmp = this._calculateCurveControlPoints(points[1], points[2], points[3]);
637
+ var c3 = tmp.c1;
638
+ var curve = new Bezier(points[1], c2, c3, points[2]);
639
+ var widths = this._calculateCurveWidths(curve);
640
+
641
+ // Remove the first element from the list,
642
+ // so that we always have no more than 4 points in points array.
643
+ points.shift();
644
+
645
+ return { curve: curve, widths: widths };
646
+ }
647
+
648
+ return {};
649
+ };
650
+
651
+ SignaturePad.prototype._calculateCurveControlPoints = function (s1, s2, s3) {
652
+ var dx1 = s1.x - s2.x;
653
+ var dy1 = s1.y - s2.y;
654
+ var dx2 = s2.x - s3.x;
655
+ var dy2 = s2.y - s3.y;
656
+
657
+ var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };
658
+ var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };
659
+
660
+ var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);
661
+ var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);
662
+
663
+ var dxm = m1.x - m2.x;
664
+ var dym = m1.y - m2.y;
665
+
666
+ var k = l2 / (l1 + l2);
667
+ var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };
668
+
669
+ var tx = s2.x - cm.x;
670
+ var ty = s2.y - cm.y;
671
+
672
+ return {
673
+ c1: new Point(m1.x + tx, m1.y + ty),
674
+ c2: new Point(m2.x + tx, m2.y + ty)
675
+ };
676
+ };
677
+
678
+ SignaturePad.prototype._calculateCurveWidths = function (curve) {
679
+ var startPoint = curve.startPoint;
680
+ var endPoint = curve.endPoint;
681
+ var widths = { start: null, end: null };
682
+
683
+ var velocity = this.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - this.velocityFilterWeight) * this._lastVelocity;
684
+
685
+ var newWidth = this._strokeWidth(velocity);
686
+
687
+ widths.start = this._lastWidth;
688
+ widths.end = newWidth;
689
+
690
+ this._lastVelocity = velocity;
691
+ this._lastWidth = newWidth;
692
+
693
+ return widths;
694
+ };
695
+
696
+ SignaturePad.prototype._strokeWidth = function (velocity) {
697
+ return Math.max(this.maxWidth / (velocity + 1), this.minWidth);
698
+ };
699
+
700
+ SignaturePad.prototype._drawPoint = function (x, y, size) {
701
+ var ctx = this._ctx;
702
+
703
+ ctx.moveTo(x, y);
704
+ ctx.arc(x, y, size, 0, 2 * Math.PI, false);
705
+ this._isEmpty = false;
706
+ };
707
+
708
+ SignaturePad.prototype._drawCurve = function (curve, startWidth, endWidth) {
709
+ var ctx = this._ctx;
710
+ var widthDelta = endWidth - startWidth;
711
+ var drawSteps = Math.floor(curve.length());
712
+
713
+ ctx.beginPath();
714
+
715
+ for (var i = 0; i < drawSteps; i += 1) {
716
+ // Calculate the Bezier (x, y) coordinate for this step.
717
+ var t = i / drawSteps;
718
+ var tt = t * t;
719
+ var ttt = tt * t;
720
+ var u = 1 - t;
721
+ var uu = u * u;
722
+ var uuu = uu * u;
723
+
724
+ var x = uuu * curve.startPoint.x;
725
+ x += 3 * uu * t * curve.control1.x;
726
+ x += 3 * u * tt * curve.control2.x;
727
+ x += ttt * curve.endPoint.x;
728
+
729
+ var y = uuu * curve.startPoint.y;
730
+ y += 3 * uu * t * curve.control1.y;
731
+ y += 3 * u * tt * curve.control2.y;
732
+ y += ttt * curve.endPoint.y;
733
+
734
+ var width = startWidth + ttt * widthDelta;
735
+ this._drawPoint(x, y, width);
736
+ }
737
+
738
+ ctx.closePath();
739
+ ctx.fill();
740
+ };
741
+
742
+ SignaturePad.prototype._drawDot = function (point) {
743
+ var ctx = this._ctx;
744
+ var width = typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize;
745
+
746
+ ctx.beginPath();
747
+ this._drawPoint(point.x, point.y, width);
748
+ ctx.closePath();
749
+ ctx.fill();
750
+ };
751
+
752
+ SignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) {
753
+ for (var i = 0; i < pointGroups.length; i += 1) {
754
+ var group = pointGroups[i];
755
+
756
+ if (group.length > 1) {
757
+ for (var j = 0; j < group.length; j += 1) {
758
+ var rawPoint = group[j];
759
+ var point = new Point(rawPoint.x, rawPoint.y, rawPoint.time);
760
+ var color = rawPoint.color;
761
+
762
+ if (j === 0) {
763
+ // First point in a group. Nothing to draw yet.
764
+
765
+ // All points in the group have the same color, so it's enough to set
766
+ // penColor just at the beginning.
767
+ this.penColor = color;
768
+ this._reset();
769
+
770
+ this._addPoint(point);
771
+ } else if (j !== group.length - 1) {
772
+ // Middle point in a group.
773
+ var _addPoint2 = this._addPoint(point),
774
+ curve = _addPoint2.curve,
775
+ widths = _addPoint2.widths;
776
+
777
+ if (curve && widths) {
778
+ drawCurve(curve, widths, color);
779
+ }
780
+ } else ;
781
+ }
782
+ } else {
783
+ this._reset();
784
+ var _rawPoint = group[0];
785
+ drawDot(_rawPoint);
786
+ }
787
+ }
788
+ };
789
+
790
+ SignaturePad.prototype._toSVG = function () {
791
+ var _this2 = this;
792
+
793
+ var pointGroups = this._data;
794
+ var canvas = this._canvas;
795
+ var ratio = Math.max(window.devicePixelRatio || 1, 1);
796
+ var minX = 0;
797
+ var minY = 0;
798
+ var maxX = canvas.width / ratio;
799
+ var maxY = canvas.height / ratio;
800
+ var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
801
+
802
+ svg.setAttributeNS(null, 'width', canvas.width);
803
+ svg.setAttributeNS(null, 'height', canvas.height);
804
+
805
+ this._fromData(pointGroups, function (curve, widths, color) {
806
+ var path = document.createElement('path');
807
+
808
+ // Need to check curve for NaN values, these pop up when drawing
809
+ // lines on the canvas that are not continuous. E.g. Sharp corners
810
+ // or stopping mid-stroke and than continuing without lifting mouse.
811
+ if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) {
812
+ var attr = 'M ' + curve.startPoint.x.toFixed(3) + ',' + curve.startPoint.y.toFixed(3) + ' ' + ('C ' + curve.control1.x.toFixed(3) + ',' + curve.control1.y.toFixed(3) + ' ') + (curve.control2.x.toFixed(3) + ',' + curve.control2.y.toFixed(3) + ' ') + (curve.endPoint.x.toFixed(3) + ',' + curve.endPoint.y.toFixed(3));
813
+
814
+ path.setAttribute('d', attr);
815
+ path.setAttribute('stroke-width', (widths.end * 2.25).toFixed(3));
816
+ path.setAttribute('stroke', color);
817
+ path.setAttribute('fill', 'none');
818
+ path.setAttribute('stroke-linecap', 'round');
819
+
820
+ svg.appendChild(path);
821
+ }
822
+ }, function (rawPoint) {
823
+ var circle = document.createElement('circle');
824
+ var dotSize = typeof _this2.dotSize === 'function' ? _this2.dotSize() : _this2.dotSize;
825
+ circle.setAttribute('r', dotSize);
826
+ circle.setAttribute('cx', rawPoint.x);
827
+ circle.setAttribute('cy', rawPoint.y);
828
+ circle.setAttribute('fill', rawPoint.color);
829
+
830
+ svg.appendChild(circle);
831
+ });
832
+
833
+ var prefix = 'data:image/svg+xml;base64,';
834
+ var header = '<svg' + ' xmlns="http://www.w3.org/2000/svg"' + ' xmlns:xlink="http://www.w3.org/1999/xlink"' + (' viewBox="' + minX + ' ' + minY + ' ' + maxX + ' ' + maxY + '"') + (' width="' + maxX + '"') + (' height="' + maxY + '"') + '>';
835
+ var body = svg.innerHTML;
836
+
837
+ // IE hack for missing innerHTML property on SVGElement
838
+ if (body === undefined) {
839
+ var dummy = document.createElement('dummy');
840
+ var nodes = svg.childNodes;
841
+ dummy.innerHTML = '';
842
+
843
+ for (var i = 0; i < nodes.length; i += 1) {
844
+ dummy.appendChild(nodes[i].cloneNode(true));
845
+ }
846
+
847
+ body = dummy.innerHTML;
848
+ }
849
+
850
+ var footer = '</svg>';
851
+ var data = header + body + footer;
852
+
853
+ return prefix + btoa(data);
854
+ };
855
+
856
+ SignaturePad.prototype.fromData = function (pointGroups) {
857
+ var _this3 = this;
858
+
859
+ this.clear();
860
+
861
+ this._fromData(pointGroups, function (curve, widths) {
862
+ return _this3._drawCurve(curve, widths.start, widths.end);
863
+ }, function (rawPoint) {
864
+ return _this3._drawDot(rawPoint);
865
+ });
866
+
867
+ this._data = pointGroups;
868
+ };
869
+
870
+ SignaturePad.prototype.toData = function () {
871
+ return this._data;
872
+ };
873
+
874
+ var build$1 = {exports: {}};
875
+
876
+ var build = build$1.exports;
877
+
878
+ var hasRequiredBuild;
879
+
880
+ function requireBuild () {
881
+ if (hasRequiredBuild) return build$1.exports;
882
+ hasRequiredBuild = 1;
883
+ (function (module, exports$1) {
884
+ !function(e,t){module.exports=t();}(build,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:false};return e[n].call(o.exports,o,o.exports,t),o.loaded=true,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t){function r(e){var t=e.getContext("2d"),r=e.width,n=e.height,o=t.getImageData(0,0,r,n).data,f=a(true,r,n,o),i=a(false,r,n,o),c=u(true,r,n,o),d=u(false,r,n,o),p=d-c+1,l=i-f+1,s=t.getImageData(c,f,p,l);return e.width=p,e.height=l,t.clearRect(0,0,p,l),t.putImageData(s,0,0),e}function n(e,t,r,n){return {red:n[4*(r*t+e)],green:n[4*(r*t+e)+1],blue:n[4*(r*t+e)+2],alpha:n[4*(r*t+e)+3]}}function o(e,t,r,o){return n(e,t,r,o).alpha}function a(e,t,r,n){for(var a=e?1:-1,u=e?0:r-1,f=u;e?f<r:f>-1;f+=a)for(var i=0;i<t;i++)if(o(i,f,t,n))return f;return null}function u(e,t,r,n){for(var a=e?1:-1,u=e?0:t-1,f=u;e?f<t:f>-1;f+=a)for(var i=0;i<r;i++)if(o(f,i,t,n))return f;return null}Object.defineProperty(t,"__esModule",{value:true}),t.default=r;}])});
885
+ } (build$1));
886
+ return build$1.exports;
887
+ }
888
+
889
+ var buildExports = requireBuild();
890
+ var trimCanvas = /*@__PURE__*/getDefaultExportFromCjs(buildExports);
891
+
892
+ var _excluded = ["canvasProps", "clearOnResize"];
893
+ var SignatureCanvas$1 = /*#__PURE__*/function (_Component) {
894
+ _inherits(SignatureCanvas, _Component);
895
+ var _super = _createSuper(SignatureCanvas);
896
+ function SignatureCanvas() {
897
+ var _this;
898
+ _classCallCheck(this, SignatureCanvas);
899
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
900
+ args[_key] = arguments[_key];
901
+ }
902
+ _this = _super.call.apply(_super, [this].concat(args));
903
+ _this.staticThis = _this.constructor;
904
+ _this._sigPad = null;
905
+ _this._canvas = null;
906
+ _this.setRef = function (ref) {
907
+ _this._canvas = ref;
908
+ // if component is unmounted, set internal references to null
909
+ if (_this._canvas === null) {
910
+ _this._sigPad = null;
911
+ }
912
+ };
913
+ _this._excludeOurProps = function () {
914
+ var _this$props = _this.props;
915
+ _this$props.canvasProps;
916
+ _this$props.clearOnResize;
917
+ var sigPadProps = _objectWithoutProperties(_this$props, _excluded);
918
+ return sigPadProps;
919
+ };
920
+ _this.componentDidMount = function () {
921
+ var canvas = _this.getCanvas();
922
+ _this._sigPad = new SignaturePad(canvas, _this._excludeOurProps());
923
+ _this._resizeCanvas();
924
+ _this.on();
925
+ };
926
+ _this.componentWillUnmount = function () {
927
+ _this.off();
928
+ };
929
+ _this.componentDidUpdate = function () {
930
+ Object.assign(_this._sigPad, _this._excludeOurProps());
931
+ };
932
+ _this.getCanvas = function () {
933
+ if (_this._canvas === null) {
934
+ throw _this.staticThis.refNullError;
935
+ }
936
+ return _this._canvas;
937
+ };
938
+ _this.getTrimmedCanvas = function () {
939
+ // copy the canvas
940
+ var canvas = _this.getCanvas();
941
+ var copy = document.createElement('canvas');
942
+ copy.width = canvas.width;
943
+ copy.height = canvas.height;
944
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
945
+ copy.getContext('2d').drawImage(canvas, 0, 0);
946
+ // then trim it
947
+ return trimCanvas(copy);
948
+ };
949
+ _this.getSignaturePad = function () {
950
+ if (_this._sigPad === null) {
951
+ throw _this.staticThis.refNullError;
952
+ }
953
+ return _this._sigPad;
954
+ };
955
+ _this._checkClearOnResize = function () {
956
+ if (!_this.props.clearOnResize) {
957
+ // eslint-disable-line @typescript-eslint/strict-boolean-expressions -- this is backward compatible with the previous behavior, where null was treated as falsey
958
+ return;
959
+ }
960
+ _this._resizeCanvas();
961
+ };
962
+ _this._resizeCanvas = function () {
963
+ var _this$props$canvasPro, _window$devicePixelRa;
964
+ var canvasProps = (_this$props$canvasPro = _this.props.canvasProps) !== null && _this$props$canvasPro !== void 0 ? _this$props$canvasPro : {};
965
+ var width = canvasProps.width,
966
+ height = canvasProps.height;
967
+ // don't resize if the canvas has fixed width and height
968
+ if (typeof width !== 'undefined' && typeof height !== 'undefined') {
969
+ return;
970
+ }
971
+ var canvas = _this.getCanvas();
972
+ /* When zoomed out to less than 100%, for some very strange reason,
973
+ some browsers report devicePixelRatio as less than 1
974
+ and only part of the canvas is cleared then. */
975
+ var ratio = Math.max((_window$devicePixelRa = window.devicePixelRatio) !== null && _window$devicePixelRa !== void 0 ? _window$devicePixelRa : 1, 1);
976
+ if (typeof width === 'undefined') {
977
+ canvas.width = canvas.offsetWidth * ratio;
978
+ }
979
+ if (typeof height === 'undefined') {
980
+ canvas.height = canvas.offsetHeight * ratio;
981
+ }
982
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
983
+ canvas.getContext('2d').scale(ratio, ratio);
984
+ _this.clear();
985
+ };
986
+ _this.render = function () {
987
+ var canvasProps = _this.props.canvasProps;
988
+ return /*#__PURE__*/React__default.createElement("canvas", _extends({
989
+ ref: _this.setRef
990
+ }, canvasProps));
991
+ };
992
+ _this.on = function () {
993
+ window.addEventListener('resize', _this._checkClearOnResize);
994
+ return _this.getSignaturePad().on();
995
+ };
996
+ _this.off = function () {
997
+ window.removeEventListener('resize', _this._checkClearOnResize);
998
+ return _this.getSignaturePad().off();
999
+ };
1000
+ _this.clear = function () {
1001
+ return _this.getSignaturePad().clear();
1002
+ };
1003
+ _this.isEmpty = function () {
1004
+ return _this.getSignaturePad().isEmpty();
1005
+ };
1006
+ _this.fromDataURL = function (dataURL, options) {
1007
+ return _this.getSignaturePad().fromDataURL(dataURL, options);
1008
+ };
1009
+ _this.toDataURL = function (type, encoderOptions) {
1010
+ return _this.getSignaturePad().toDataURL(type, encoderOptions);
1011
+ };
1012
+ _this.fromData = function (pointGroups) {
1013
+ return _this.getSignaturePad().fromData(pointGroups);
1014
+ };
1015
+ _this.toData = function () {
1016
+ return _this.getSignaturePad().toData();
1017
+ };
1018
+ return _this;
1019
+ } // shortcut reference (https://stackoverflow.com/a/29244254/3431180)
1020
+ // propagate prop updates to SignaturePad
1021
+ // return the canvas ref for operations like toDataURL
1022
+ // return a trimmed copy of the canvas
1023
+ // return the internal SignaturePad reference
1024
+ // all wrapper functions below render
1025
+ //
1026
+ return _createClass(SignatureCanvas);
1027
+ }(Component);
1028
+ SignatureCanvas$1.propTypes = {
1029
+ // signature_pad's props
1030
+ velocityFilterWeight: PropTypes.number,
1031
+ minWidth: PropTypes.number,
1032
+ maxWidth: PropTypes.number,
1033
+ minDistance: PropTypes.number,
1034
+ dotSize: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),
1035
+ penColor: PropTypes.string,
1036
+ throttle: PropTypes.number,
1037
+ onEnd: PropTypes.func,
1038
+ onBegin: PropTypes.func,
1039
+ // props specific to the React wrapper
1040
+ canvasProps: PropTypes.object,
1041
+ clearOnResize: PropTypes.bool
1042
+ };
1043
+ SignatureCanvas$1.defaultProps = {
1044
+ clearOnResize: true
1045
+ };
1046
+ SignatureCanvas$1.refNullError = new Error('react-signature-canvas is currently ' + 'mounting or unmounting: React refs are null during this phase.');
1047
+
1048
+ var SignatureCanvas = forwardRef(function (props, ref) {
1049
+ var fieldKey = props.fieldKey, repeatIndex = props.repeatIndex, responsiveStyles = props.responsiveStyles, _a = props.defaultValue, defaultValue = _a === void 0 ? null : _a, _b = props.disabled, disabled = _b === void 0 ? false : _b, _c = props.showClear, showClear = _c === void 0 ? true : _c, _d = props.onClear, onClear = _d === void 0 ? function () { } : _d, _e = props.onEnd, onEnd = _e === void 0 ? function () { } : _e, t = props.translation;
1050
+ var _f = __read(useState(defaultValue !== null), 2), isClearVisible = _f[0], setIsClearVisible = _f[1];
1051
+ var signatureRef = useRef(undefined);
1052
+ var signatureCanvasStyles = responsiveStyles.getTarget('field', true);
1053
+ useImperativeHandle(ref, function () { return ({
1054
+ clear: function () {
1055
+ var _a;
1056
+ (_a = signatureRef.current) === null || _a === void 0 ? void 0 : _a.clear();
1057
+ },
1058
+ isEmpty: function () {
1059
+ var _a;
1060
+ return (_a = signatureRef.current) === null || _a === void 0 ? void 0 : _a.isEmpty();
1061
+ },
1062
+ getTrimmedCanvas: function () {
1063
+ var _a;
1064
+ return (_a = signatureRef.current) === null || _a === void 0 ? void 0 : _a.getTrimmedCanvas();
1065
+ },
1066
+ getCanvas: function () {
1067
+ var _a;
1068
+ return (_a = signatureRef.current) === null || _a === void 0 ? void 0 : _a.getCanvas();
1069
+ },
1070
+ fromDataURL: function (dataURL, options) {
1071
+ var _a;
1072
+ return (_a = signatureRef.current) === null || _a === void 0 ? void 0 : _a.fromDataURL(dataURL, options);
1073
+ }
1074
+ }); });
1075
+ useEffect(function () {
1076
+ function setSignatureCanvas() {
1077
+ var _a;
1078
+ return __awaiter(this, void 0, void 0, function () {
1079
+ var sig, signatureFile, base64, _b, img;
1080
+ return __generator(this, function (_c) {
1081
+ switch (_c.label) {
1082
+ case 0:
1083
+ sig = (_a = signatureRef.current) === null || _a === void 0 ? void 0 : _a.getCanvas();
1084
+ if (sig && defaultValue === null) {
1085
+ sig.getContext('2d').clearRect(0, 0, sig.width, sig.height);
1086
+ return [2 /*return*/];
1087
+ }
1088
+ return [4 /*yield*/, defaultValue];
1089
+ case 1:
1090
+ signatureFile = _c.sent();
1091
+ if (!signatureFile) return [3 /*break*/, 3];
1092
+ return [4 /*yield*/, toBase64(signatureFile)];
1093
+ case 2:
1094
+ _b = _c.sent();
1095
+ return [3 /*break*/, 4];
1096
+ case 3:
1097
+ _b = '';
1098
+ _c.label = 4;
1099
+ case 4:
1100
+ base64 = _b;
1101
+ img = new Image();
1102
+ img.onload = function () {
1103
+ if (!sig)
1104
+ return;
1105
+ var hRatio = sig.offsetWidth / img.width;
1106
+ var vRatio = sig.offsetHeight / img.height;
1107
+ var ratio = Math.min(hRatio, vRatio, 1.5);
1108
+ var imgWidth = img.width * ratio;
1109
+ var imgHeight = img.height * ratio;
1110
+ // position signature in bottom left corner
1111
+ var xOffset = 0;
1112
+ var yOffset = sig.offsetHeight - imgHeight;
1113
+ // Preserve aspect ratio when loading signature
1114
+ // TODO: fix offsets. for some reason they're not being respected and
1115
+ // are treated as 0, 0
1116
+ sig.getContext('2d').clearRect(0, 0, sig.width, sig.height);
1117
+ // custom implementation of fromDataURL to support xOffset and yOffset
1118
+ // since they are not supported by signature-pad v2.3.2
1119
+ // previously: signatureRef.current.fromDataURL(base64, options);
1120
+ fromDataURL(sig, base64, {
1121
+ width: imgWidth,
1122
+ height: imgHeight,
1123
+ xOffset: xOffset,
1124
+ yOffset: yOffset
1125
+ });
1126
+ };
1127
+ img.src = base64;
1128
+ return [2 /*return*/];
1129
+ }
1130
+ });
1131
+ });
1132
+ }
1133
+ setSignatureCanvas();
1134
+ }, [defaultValue]);
1135
+ return (jsxs(Fragment, { children: [showClear && isClearVisible && (jsx("div", __assign({ css: __assign(__assign({ background: '#ffffff', position: 'absolute', bottom: '5px', right: '5px', borderRadius: '6px', display: 'flex', cursor: 'pointer', color: 'rgb(173, 173, 173)', fontSize: '14px', transition: '0.15s ease-in-out all' }, (disabled ? responsiveStyles.getTarget('disabled') : {})), { '&:hover': { color: 'black' } }), onClick: function () {
1136
+ signatureRef.current.clear();
1137
+ onClear();
1138
+ setIsClearVisible(false);
1139
+ } }, { children: t.clear }))), jsx(SignatureCanvas$1, { penColor: 'black', dotSize: 4, minWidth: 1.5, maxWidth: 3, clearOnResize: false, canvasProps: {
1140
+ id: fieldKey + repeatIndex,
1141
+ style: __assign(__assign({}, signatureCanvasStyles), { width: '100%', height: '100%', boxSizing: 'border-box', paddingLeft: '5px' })
1142
+ }, ref: signatureRef, onEnd: function () {
1143
+ onEnd();
1144
+ setIsClearVisible(!signatureRef.current.isEmpty());
1145
+ } })] }));
1146
+ });
1147
+
1148
+ var SIGNER_NAME_KEY = 'feathery-signer-name';
1149
+ function SignatureModal(props) {
1150
+ var _a, _b;
1151
+ var _c = props.show, show = _c === void 0 ? false : _c, _d = props.setShow, setShow = _d === void 0 ? function () { } : _d, fieldKey = props.fieldKey, repeatIndex = props.repeatIndex, defaultValue = props.defaultValue, responsiveStyles = props.responsiveStyles, _e = props.onClear, onClear = _e === void 0 ? function () { } : _e, _f = props.onEnd, onEnd = _f === void 0 ? function () { } : _f, _g = props.signMethods, signMethods = _g === void 0 ? '' : _g, t = props.translation;
1152
+ var typeOnly = signMethods === 'type';
1153
+ var drawOnly = signMethods === 'draw';
1154
+ var _h = __read(useState(drawOnly), 2), drawSignature = _h[0], setDrawSignature = _h[1];
1155
+ var _j = __read(useState(''), 2), fullName = _j[0], setFullName = _j[1];
1156
+ var _k = __read(useState(false), 2), isLoading = _k[0], setLoading = _k[1];
1157
+ var _l = __read(useState(), 2), signatureFile = _l[0], setSignatureFile = _l[1];
1158
+ var _m = __read(useState(''), 2), signatureImgData = _m[0], setSignatureImgData = _m[1];
1159
+ var fullNameRef = useRef(fullName);
1160
+ var signatureCanvasRef = useRef(null);
1161
+ var getSignerNameFromSessionStorage = function () {
1162
+ var signerName = sessionStorage.getItem(SIGNER_NAME_KEY);
1163
+ return signerName || '';
1164
+ };
1165
+ useEffect(function () {
1166
+ if (show) {
1167
+ var storedName = getSignerNameFromSessionStorage();
1168
+ setFullName(storedName);
1169
+ }
1170
+ }, [show]);
1171
+ useEffect(function () {
1172
+ fullNameRef.current = fullName;
1173
+ if (fullName !== '') {
1174
+ setLoading(true);
1175
+ debounceGenerateSignature();
1176
+ }
1177
+ else {
1178
+ setSignatureImgData('');
1179
+ setSignatureFile(undefined);
1180
+ setLoading(false);
1181
+ }
1182
+ }, [fullName]);
1183
+ var getFullName = function () { return fullNameRef.current; };
1184
+ var resetState = function () {
1185
+ setSignatureFile(undefined);
1186
+ setSignatureImgData('');
1187
+ setFullName('');
1188
+ if (!drawOnly) {
1189
+ setDrawSignature(false);
1190
+ }
1191
+ };
1192
+ var generateDrawnSignature = function () {
1193
+ try {
1194
+ var canvas = cloneCanvas(signatureCanvasRef.current.getCanvas());
1195
+ if (!canvas) {
1196
+ throw new Error('Could not find signature canvas');
1197
+ }
1198
+ var trimmedCanvas = trimCanvas$1(canvas);
1199
+ var imgData = trimmedCanvas.toDataURL('image/png', 1.0);
1200
+ var imgFile = dataURLToFile(imgData, "".concat(fieldKey, ".png"));
1201
+ setSignatureImgData(imgData);
1202
+ setSignatureFile(imgFile);
1203
+ }
1204
+ catch (error) {
1205
+ console.error('Error generating signature:', error);
1206
+ }
1207
+ };
1208
+ var generateTextSignature = function () {
1209
+ var _fullName = getFullName();
1210
+ if (!_fullName) {
1211
+ setSignatureImgData('');
1212
+ setSignatureFile(undefined);
1213
+ setLoading(false);
1214
+ return;
1215
+ }
1216
+ try {
1217
+ var canvas = generateSignatureImage(_fullName);
1218
+ if (!canvas) {
1219
+ throw new Error('Could not find signature canvas');
1220
+ }
1221
+ var trimmedCanvas = trimCanvas$1(canvas);
1222
+ var imgData = trimmedCanvas.toDataURL('image/png', 1.0);
1223
+ var imgFile = dataURLToFile(imgData, "".concat(fieldKey, ".png"));
1224
+ setSignatureImgData(imgData);
1225
+ setSignatureFile(imgFile);
1226
+ setLoading(false);
1227
+ }
1228
+ catch (error) {
1229
+ console.error('Error generating signature:', error);
1230
+ setLoading(false);
1231
+ }
1232
+ };
1233
+ var debounceGenerateSignature = useCallback(debounce(generateTextSignature, 1000), []);
1234
+ var handleCancel = function () {
1235
+ setShow(false);
1236
+ resetState();
1237
+ };
1238
+ var handleSubmit = function () {
1239
+ if (signatureFile) {
1240
+ onEnd(signatureFile);
1241
+ sessionStorage.setItem(SIGNER_NAME_KEY, fullName);
1242
+ setShow(false);
1243
+ resetState();
1244
+ }
1245
+ };
1246
+ if (!show) {
1247
+ return null;
1248
+ }
1249
+ return (jsxs("div", __assign({ css: {
1250
+ position: 'fixed',
1251
+ display: 'flex',
1252
+ top: 0,
1253
+ left: 0,
1254
+ width: '100vw',
1255
+ height: '100vh',
1256
+ background: 'rgba(0, 0, 0, 0.2)',
1257
+ zIndex: MODAL_Z_INDEX,
1258
+ alignItems: 'center',
1259
+ justifyContent: 'center',
1260
+ fontSize: '16px',
1261
+ fontFamily: (_b = (_a = responsiveStyles === null || responsiveStyles === void 0 ? void 0 : responsiveStyles.getTarget('fc')) === null || _a === void 0 ? void 0 : _a.fontFamily) !== null && _b !== void 0 ? _b : 'sans-serif'
1262
+ } }, { children: [jsx("div", { onClick: function () { return handleCancel(); }, css: {
1263
+ position: 'fixed',
1264
+ top: 0,
1265
+ left: 0,
1266
+ width: '100%',
1267
+ height: '100%'
1268
+ } }), jsxs("div", __assign({ className: 'feathery-modal', css: {
1269
+ position: 'relative',
1270
+ backgroundColor: '#fff',
1271
+ borderRadius: '14px',
1272
+ width: '100%',
1273
+ maxWidth: '600px'
1274
+ } }, { children: [jsxs("div", __assign({ css: {
1275
+ position: 'relative',
1276
+ display: 'flex',
1277
+ padding: '20px',
1278
+ borderBottom: '1px solid #e9e9e9'
1279
+ } }, { children: [jsx("h3", __assign({ css: { padding: 0, margin: 0, flex: '1' } }, { children: t.title })), jsx(CloseIcon, { onClick: function () { return handleCancel(); }, css: { '&:hover': { cursor: 'pointer' } } })] })), jsxs("div", __assign({ css: {
1280
+ position: 'relative',
1281
+ padding: '20px 20px 30px 20px',
1282
+ '& h3': {
1283
+ fontSize: '1em',
1284
+ margin: 0,
1285
+ padding: 0
1286
+ }
1287
+ } }, { children: [!drawSignature && !drawOnly && (jsxs(Fragment, { children: [jsxs("div", __assign({ css: {
1288
+ display: 'flex',
1289
+ gap: '15px',
1290
+ flexDirection: 'column',
1291
+ paddingBottom: '30px'
1292
+ } }, { children: [jsx("h3", { children: t.type_option }), jsx("input", { defaultValue: getSignerNameFromSessionStorage(), onChange: function (e) {
1293
+ var val = e.target.value.trim();
1294
+ setFullName(val);
1295
+ }, placeholder: t.type_placeholder, css: {
1296
+ padding: '8px 10px',
1297
+ borderRadius: '4px',
1298
+ border: '1px solid #e9e9e9',
1299
+ '&:focus,&:focus-visible': {
1300
+ border: '1px solid #5e5e5e',
1301
+ outline: 'none'
1302
+ }
1303
+ } }), jsxs("div", __assign({ css: {
1304
+ position: 'relative',
1305
+ width: '100%',
1306
+ height: '100px',
1307
+ backgroundColor: '#f6f6f6',
1308
+ display: 'flex',
1309
+ alignItems: 'center',
1310
+ justifyContent: 'center',
1311
+ fontSize: '2em',
1312
+ fontFamily: 'La Belle Aurore'
1313
+ } }, { children: [isLoading && (jsx("div", __assign({ css: {
1314
+ position: 'absolute',
1315
+ top: 0,
1316
+ left: 0,
1317
+ width: '100%',
1318
+ height: '100%',
1319
+ backgroundColor: '#f6f6f6',
1320
+ display: 'flex',
1321
+ alignItems: 'center',
1322
+ justifyContent: 'center',
1323
+ fontFamily: 'sans-serif',
1324
+ fontSize: '.9rem',
1325
+ borderRadius: '4px'
1326
+ } }, { children: t.type_loading }))), !signatureImgData ? (t.type_example) : (jsx("img", { src: signatureImgData, alt: 'Signature', css: { maxHeight: '100%', maxWidth: '100%' } }))] }))] })), !typeOnly && (jsxs(Fragment, { children: [jsx("div", __assign({ css: {
1327
+ height: '1px',
1328
+ display: 'flex',
1329
+ alignItems: 'center',
1330
+ justifyContent: 'center',
1331
+ borderBottom: '1px solid #e9e9e9'
1332
+ } }, { children: jsx("div", __assign({ css: {
1333
+ backgroundColor: '#fff',
1334
+ padding: '10px',
1335
+ color: '#5e5e5e'
1336
+ } }, { children: t.or_label })) })), jsx("div", __assign({ css: {
1337
+ paddingTop: '30px'
1338
+ } }, { children: jsxs("div", __assign({ onClick: function () { return setDrawSignature(true); }, css: {
1339
+ padding: '20px',
1340
+ borderRadius: '4px',
1341
+ border: '1px solid #e9e9e9',
1342
+ '& h3': {
1343
+ padding: 0,
1344
+ margin: 0,
1345
+ marginBottom: '10px'
1346
+ },
1347
+ '& p': {
1348
+ margin: 0,
1349
+ padding: 0
1350
+ },
1351
+ '&:hover': {
1352
+ border: '1px solid #5e5e5e',
1353
+ cursor: 'pointer'
1354
+ }
1355
+ } }, { children: [jsx("h3", { children: t.draw_option }), jsx("p", { children: t.draw_subtitle })] })) }))] }))] })), drawSignature && (jsxs("div", __assign({ css: {
1356
+ display: 'flex',
1357
+ flexDirection: 'column',
1358
+ gap: '15px'
1359
+ } }, { children: [jsx("p", __assign({ css: {
1360
+ margin: 0,
1361
+ padding: 0
1362
+ } }, { children: t.draw_instructions })), jsx("div", __assign({ css: { position: 'relative', width: '100%', height: '200px' } }, { children: jsx(SignatureCanvas, { ref: signatureCanvasRef, fieldKey: fieldKey, repeatIndex: repeatIndex, responsiveStyles: responsiveStyles, onClear: onClear, onEnd: generateDrawnSignature, showClear: false, translation: t }) }))] })))] })), jsxs("div", __assign({ css: {
1363
+ position: 'relative',
1364
+ display: 'flex',
1365
+ padding: '20px 20px',
1366
+ borderTop: '1px solid #e9e9e9',
1367
+ justifyContent: 'space-between',
1368
+ '& button': {
1369
+ padding: '12px 0px',
1370
+ width: '120px',
1371
+ borderRadius: '4px',
1372
+ outline: 'none',
1373
+ border: 'none',
1374
+ fontSize: '1rem',
1375
+ transition: 'background-color ease-in-out 0.1s',
1376
+ '&:hover': {
1377
+ cursor: 'pointer'
1378
+ }
1379
+ }
1380
+ } }, { children: [drawOnly || !drawSignature ? (jsx("button", __assign({ onClick: function () { return handleCancel(); }, css: { '&:hover': { backgroundColor: '#e1e1e1' } } }, { children: t.cancel }))) : (jsx("button", __assign({ onClick: function (e) {
1381
+ e.preventDefault();
1382
+ setDrawSignature(false);
1383
+ setSignatureFile(undefined);
1384
+ }, css: { '&:hover': { backgroundColor: '#e1e1e1' } } }, { children: t.back }))), jsxs("div", { children: [defaultValue && (jsx("button", __assign({ onClick: function (e) {
1385
+ e.preventDefault();
1386
+ onClear();
1387
+ }, css: {
1388
+ marginRight: '10px',
1389
+ '&:hover': { backgroundColor: '#e1e1e1' }
1390
+ } }, { children: t.clear }))), jsx("button", __assign({ onClick: function () {
1391
+ if (!isLoading)
1392
+ handleSubmit();
1393
+ }, disabled: isLoading || !signatureFile, css: {
1394
+ backgroundColor: '#535353',
1395
+ color: '#fff',
1396
+ '&:hover': {
1397
+ backgroundColor: '#3a3a3a'
1398
+ },
1399
+ '&:disabled': {
1400
+ '&:hover': {
1401
+ cursor: 'not-allowed'
1402
+ }
1403
+ }
1404
+ } }, { children: t.confirm }))] })] }))] }))] })));
1405
+ }
1406
+
1407
+ var defaultTranslations = {
1408
+ label: 'Sign here',
1409
+ title: 'Add your signature',
1410
+ type_option: 'Type your signature',
1411
+ type_placeholder: 'Your full name',
1412
+ type_example: 'Full Name',
1413
+ type_loading: 'Generating signature',
1414
+ or_label: 'or',
1415
+ draw_option: 'Draw your signature',
1416
+ draw_subtitle: 'Draw your signature here using your mouse or trackpad',
1417
+ draw_instructions: 'Draw your signature in the box below',
1418
+ confirm: 'Sign',
1419
+ cancel: 'Cancel',
1420
+ back: 'Back',
1421
+ clear: 'Clear'
1422
+ };
1423
+
1424
+ function SignatureField(_a) {
1425
+ var _b, _c, _d, _e;
1426
+ var element = _a.element, fieldLabel = _a.fieldLabel, responsiveStyles = _a.responsiveStyles, _f = _a.defaultValue, defaultValue = _f === void 0 ? null : _f, editMode = _a.editMode, repeatIndex = _a.repeatIndex, _g = _a.elementProps, elementProps = _g === void 0 ? {} : _g, _h = _a.disabled, disabled = _h === void 0 ? false : _h, _j = _a.onEnd, onEnd = _j === void 0 ? function () { } : _j, _k = _a.onClear, onClear = _k === void 0 ? function () { } : _k, _l = _a.ReactPortal, ReactPortal = _l === void 0 ? null : _l, // This is allowing the ability to pass a portal for the modal
1427
+ children = _a.children;
1428
+ var _m = __read(useState(false), 2), showSignatureModal = _m[0], setShowSignatureModal = _m[1];
1429
+ var Portal = ReactPortal !== null && ReactPortal !== void 0 ? ReactPortal : (function (_a) {
1430
+ var children = _a.children;
1431
+ return jsx(Fragment, { children: children });
1432
+ });
1433
+ var servar = (_b = element.servar) !== null && _b !== void 0 ? _b : {};
1434
+ var fieldKey = (_c = servar.key) !== null && _c !== void 0 ? _c : element.key;
1435
+ var t = __assign(__assign({}, defaultTranslations), element.properties.translate);
1436
+ useEffect(function () {
1437
+ if (!global.webfontloaderPromise)
1438
+ global.webfontloaderPromise = import(
1439
+ /* webpackChunkName: "webfontloader" */ './fthry_webfontloader.DEj1XG0u.js').then(function (n) { return n.w; });
1440
+ global.webfontloaderPromise.then(function (WebFont) {
1441
+ WebFont.load({ google: { families: ['La Belle Aurore'] } });
1442
+ });
1443
+ }, []);
1444
+ return (jsxs(Fragment, { children: [jsx(Portal, { children: jsx(SignatureModal, { show: showSignatureModal, setShow: setShowSignatureModal, defaultValue: defaultValue, fieldKey: fieldKey, repeatIndex: repeatIndex, responsiveStyles: responsiveStyles, onClear: onClear, onEnd: onEnd, signMethods: (_e = (_d = servar.metadata) === null || _d === void 0 ? void 0 : _d.sign_methods) !== null && _e !== void 0 ? _e : '', translation: t }) }), jsxs("div", __assign({ css: __assign(__assign({ maxWidth: '100%', width: '100%', height: '100%' }, responsiveStyles.getTarget('fc')), { position: 'relative', pointerEvents: editMode || disabled ? 'none' : 'auto' }) }, elementProps, { children: [children, fieldLabel, jsxs("div", __assign({ css: __assign({ position: 'relative' }, responsiveStyles.getTarget('sub-fc')) }, { children: [jsxs(Suspense, __assign({ fallback: jsx("div", { css: __assign(__assign({}, responsiveStyles.getTarget('field', true)), { width: '100%', height: '100%', boxSizing: 'border-box', paddingLeft: '5px' }) }) }, { children: [jsx("div", __assign({ onClick: function () {
1445
+ if (!disabled)
1446
+ setShowSignatureModal(true);
1447
+ }, css: __assign(__assign({ position: 'absolute', display: 'flex', top: 0, left: 0, width: '100%', height: '100%', zIndex: FORM_Z_INDEX, alignItems: 'center', justifyContent: 'center' }, (disabled ? { backgroundColor: 'rgb(229, 229, 229)' } : {})), { '&:hover': {
1448
+ cursor: 'pointer'
1449
+ } }) }, { children: !defaultValue && !disabled && t.label })), jsx(SignatureCanvas, { fieldKey: fieldKey, repeatIndex: repeatIndex, responsiveStyles: responsiveStyles, defaultValue: defaultValue, disabled: disabled, showClear: false, translation: t })] })), jsx(ErrorInput, { id: servar.key, "aria-label": element.properties.aria_label })] }))] }))] }));
1450
+ }
1451
+
1452
+ export { SignatureField as default };