@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,251 @@
1
+ import { j as jsxs, a as __assign, b as jsx, _ as __read, a5 as isEmptyArray, a6 as toList, a7 as useThumbnailData, a4 as __spreadArray, f as imgMaxSizeStyles, c as __awaiter, d as __generator, a8 as downloadFile, a9 as CloseIcon, i as iosScrollOnFocus, k as FORM_Z_INDEX, aa as justRemove } from './fthry_index.diObxaBS.js';
2
+ import { useRef, useState, useEffect } from 'react';
3
+ import 'react/jsx-runtime';
4
+ import 'react-dom/client';
5
+ import 'stream';
6
+ import 'events';
7
+ import 'buffer';
8
+ import 'util';
9
+ import 'react-dom';
10
+
11
+ function FileUploadIcon(_a) {
12
+ var _b = _a.width, width = _b === void 0 ? '48px' : _b, style = _a.style;
13
+ return (jsxs("svg", __assign({ width: width, viewBox: '0 0 48 48', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', style: style }, { children: [jsx("path", { d: 'm18.101 30.078 5.9-5.888 5.898 5.888M24 40.3V24.19', stroke: '#414859' }), jsx("path", { d: 'M34.988 36.336c5 0 9.012-4.056 9.012-9.112s-4.012-9.112-9.012-9.112c0-5.585-4.476-10.112-10-10.112-4.244 0-7.848 2.646-9.302 6.408-.232 0-.465-.059-.698-.059C8.942 14.35 4 19.288 4 25.46c0 6.114 4.884 11.111 10.988 11.111', stroke: '#414859' })] })));
14
+ }
15
+
16
+ function DownloadIcon(_a) {
17
+ var _b = _a.width, width = _b === void 0 ? 26 : _b, _c = _a.height, height = _c === void 0 ? 26 : _c;
18
+ return (jsx("svg", __assign({ width: width, height: height, viewBox: '0 0 26 26', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' }, { children: jsx("path", { d: 'M1 19.3529V22.1765C1 22.9253 1.31607 23.6435 1.87868 24.173C2.44129 24.7025 3.20435 25 4 25H22C22.7956 25 23.5587 24.7025 24.1213 24.173C24.6839 23.6435 25 22.9253 25 22.1765V19.3529M5.5 10.8824L13 17.9412M13 17.9412L20.5 10.8824M13 17.9412V1', stroke: 'white', strokeWidth: '2', strokeLinecap: 'round', strokeLinejoin: 'round' }) })));
19
+ }
20
+
21
+ var DEFAULT_FILE_SIZE_LIMIT = 1024 * 1024 * 10;
22
+ var NUM_FILES_LIMIT = 20;
23
+ function FileUploadField(_a) {
24
+ var _this = this;
25
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, _b = _a.required, required = _b === void 0 ? false : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c, editMode = _a.editMode, _d = _a.onChange, customOnChange = _d === void 0 ? function () { } : _d, _e = _a.initialFiles, initialFiles = _e === void 0 ? [] : _e, _f = _a.elementProps, elementProps = _f === void 0 ? {} : _f, children = _a.children;
26
+ var servar = element.servar;
27
+ var showLabel = servar.name !== '';
28
+ var isMultiple = servar.metadata.multiple;
29
+ var fileInput = useRef(null);
30
+ var _g = __read(useState([]), 2), rawFiles = _g[0], setRawFiles = _g[1];
31
+ var _h = __read(useState(-1), 2), hoverDownload = _h[0], setHoverDownload = _h[1];
32
+ useEffect(function () {
33
+ // Prevent infinite loop of setting a new empty array as the value
34
+ if (isEmptyArray(rawFiles) && isEmptyArray(initialFiles))
35
+ return;
36
+ // Normalize placeholders like [null] to an empty list
37
+ setRawFiles(toList(initialFiles).filter(Boolean));
38
+ }, [initialFiles]);
39
+ // Thumbnails derived from current files; rawFiles is normalized to exclude nulls
40
+ var thumbnailData = useThumbnailData(rawFiles);
41
+ var hasFiles = rawFiles.length > 0;
42
+ var allowMoreFiles = isMultiple || !hasFiles;
43
+ var hidePreview = element.styles.hide_file_preview;
44
+ var handleDragOver = function (e) {
45
+ e.preventDefault();
46
+ e.stopPropagation();
47
+ };
48
+ var handleDrop = function (e) {
49
+ e.preventDefault();
50
+ e.stopPropagation();
51
+ var files = e.dataTransfer.files;
52
+ if (allowMoreFiles)
53
+ handleFiles(files);
54
+ };
55
+ var handleChange = function (event) {
56
+ var files = event.target.files;
57
+ if (files && allowMoreFiles)
58
+ handleFiles(files);
59
+ };
60
+ var onClick = function () {
61
+ var _a;
62
+ if (!allowMoreFiles && !hidePreview)
63
+ return;
64
+ if (disabled)
65
+ return;
66
+ (_a = fileInput.current) === null || _a === void 0 ? void 0 : _a.click();
67
+ };
68
+ var allowedFileTypes = __spreadArray([], __read(servar.metadata.file_types), false);
69
+ if (servar.metadata.custom_file_types)
70
+ allowedFileTypes.push.apply(allowedFileTypes, __spreadArray([], __read(servar.metadata.custom_file_types.map(function (type) { return ".".concat(type); })), false));
71
+ var isFileTypeMatch = function (file, allowedType) {
72
+ var _a;
73
+ // handle image/* or video/* etc.
74
+ if (allowedType.endsWith('/*')) {
75
+ var typeCategory = allowedType.split('/')[0];
76
+ return file.type.startsWith(typeCategory + '/');
77
+ }
78
+ // handle specific file types like application/pdf
79
+ if (allowedType.includes('/')) {
80
+ return file.type === allowedType;
81
+ }
82
+ var extension = '.' + ((_a = file.name.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase());
83
+ return allowedType.toLowerCase() === extension;
84
+ };
85
+ var validateFileTypes = function (files) {
86
+ if (allowedFileTypes.length === 0)
87
+ return;
88
+ var individualTypes = allowedFileTypes.flatMap(function (str) {
89
+ return str.split(',').map(function (item) { return item.trim(); });
90
+ });
91
+ var invalidFiles = files.filter(function (file) { return !individualTypes.some(function (type) { return isFileTypeMatch(file, type); }); });
92
+ if (invalidFiles.length > 0) {
93
+ throw new Error("Invalid file type. Allowed types: ".concat(allowedFileTypes.join(', ')));
94
+ }
95
+ };
96
+ var fileSizeLimit = servar.max_length
97
+ ? servar.max_length * 1024
98
+ : DEFAULT_FILE_SIZE_LIMIT;
99
+ var validateFileSizes = function (files) {
100
+ if (files.some(function (file) { return file.size > fileSizeLimit; })) {
101
+ var sizeLabel = '';
102
+ if (fileSizeLimit < 1024)
103
+ sizeLabel = "".concat(fileSizeLimit, " bytes");
104
+ else if (fileSizeLimit <= 1024 * 1024) {
105
+ var kbSize = Math.floor(fileSizeLimit / 1024);
106
+ sizeLabel = "".concat(kbSize, " kb");
107
+ }
108
+ else {
109
+ var mbSize = Math.floor(fileSizeLimit / (1024 * 1024));
110
+ sizeLabel = "".concat(mbSize, " mb");
111
+ }
112
+ throw new Error("File exceeds max size of ".concat(sizeLabel));
113
+ }
114
+ };
115
+ // When the user uploads files to the multi-file upload, we just append to the existing set
116
+ // By default the input element would just replace all the uploaded files (we don't want that)
117
+ var handleFiles = function (filelist) { return __awaiter(_this, void 0, void 0, function () {
118
+ var files, existingCount, uploadedFiles, newRawFiles, length_1;
119
+ var _a, _b, _c;
120
+ return __generator(this, function (_d) {
121
+ if (disabled)
122
+ return [2 /*return*/];
123
+ files = Array.from(filelist);
124
+ if (!isMultiple) {
125
+ files = [files[0]];
126
+ }
127
+ try {
128
+ if (files.some(function (file) { return !file || !(file instanceof File) || file.size <= 0; })) {
129
+ throw new Error('Some files are invalid');
130
+ }
131
+ validateFileTypes(files);
132
+ validateFileSizes(files);
133
+ existingCount = hidePreview ? 0 : rawFiles.length;
134
+ if (files.length + existingCount > NUM_FILES_LIMIT) {
135
+ // Splice off the uploaded files past the upload limit
136
+ files.splice(NUM_FILES_LIMIT - existingCount);
137
+ }
138
+ uploadedFiles = files.map(function (file) { return Promise.resolve(file); });
139
+ newRawFiles = void 0;
140
+ if (hidePreview) {
141
+ newRawFiles = uploadedFiles;
142
+ length_1 = 0;
143
+ }
144
+ else {
145
+ newRawFiles = __spreadArray(__spreadArray([], __read(rawFiles), false), __read(uploadedFiles), false);
146
+ length_1 = existingCount;
147
+ }
148
+ setRawFiles(newRawFiles);
149
+ customOnChange(newRawFiles, length_1);
150
+ (_a = fileInput.current) === null || _a === void 0 ? void 0 : _a.setCustomValidity('');
151
+ // Wipe the value of the upload element so we can upload multiple copies of the same file
152
+ // If we didn't do this, then uploading the same file wouldn't re-trigger onChange
153
+ if (fileInput.current) {
154
+ fileInput.current.value = '';
155
+ }
156
+ }
157
+ catch (error) {
158
+ (_b = fileInput.current) === null || _b === void 0 ? void 0 : _b.setCustomValidity(error.message);
159
+ (_c = fileInput.current) === null || _c === void 0 ? void 0 : _c.reportValidity();
160
+ }
161
+ return [2 /*return*/];
162
+ });
163
+ }); };
164
+ function onClear(index) {
165
+ return function () {
166
+ var newRawFiles = justRemove(rawFiles, index);
167
+ setRawFiles(newRawFiles);
168
+ customOnChange(newRawFiles, -1);
169
+ };
170
+ }
171
+ var imgStyles = __assign(__assign({}, imgMaxSizeStyles), responsiveStyles.getTarget('img'));
172
+ var icon = element.properties.icon ? (jsx("img", { src: element.properties.icon, style: __assign(__assign({}, imgStyles), { maxWidth: '100%', height: 'auto' }), alt: '' })) : (jsx(FileUploadIcon, { width: imgStyles.width && imgStyles.width !== 'px'
173
+ ? imgStyles.width
174
+ : undefined, style: { maxHeight: '100%' } }));
175
+ return (jsxs("div", __assign({ css: __assign({ display: 'flex', flexWrap: 'wrap', position: 'relative', pointerEvents: editMode ? 'none' : 'auto', width: '100%', height: '100%' }, responsiveStyles.getTarget('fc')) }, elementProps, { onDragOver: handleDragOver, onDrop: disabled ? undefined : handleDrop }, { children: [children, !hidePreview &&
176
+ thumbnailData.map(function (_a, index) {
177
+ var filename = _a.filename, thumbnail = _a.thumbnail;
178
+ return index < rawFiles.length ? (jsxs("div", __assign({ css: __assign(__assign({ position: 'relative', width: '100%', maxHeight: '100%', overflow: 'hidden', display: 'flex', justifyContent: 'center', alignItems: 'center', boxSizing: 'border-box' }, (thumbnail
179
+ ? {}
180
+ : { paddingLeft: '20px', paddingRight: '20px' })), responsiveStyles.getTarget('field')), onMouseEnter: function () { return setHoverDownload(index); }, onMouseLeave: function () { return setHoverDownload(-1); } }, { children: [hoverDownload === index && (jsx("div", __assign({ css: {
181
+ position: 'absolute',
182
+ margin: 'auto',
183
+ left: 0,
184
+ right: 0,
185
+ top: 0,
186
+ bottom: 0,
187
+ width: '48px',
188
+ height: '48px',
189
+ borderRadius: '8px',
190
+ backgroundColor: '#3E414D80',
191
+ cursor: 'pointer',
192
+ display: 'flex',
193
+ alignItems: 'center',
194
+ justifyContent: 'center'
195
+ }, onClick: function () { return __awaiter(_this, void 0, void 0, function () { var _a; return __generator(this, function (_b) {
196
+ switch (_b.label) {
197
+ case 0:
198
+ _a = downloadFile;
199
+ return [4 /*yield*/, rawFiles[index]];
200
+ case 1: return [2 /*return*/, _a.apply(void 0, [(_b.sent())])];
201
+ }
202
+ }); }); } }, { children: jsx(DownloadIcon, {}) }))), thumbnail ? (jsx("img", { src: thumbnail, style: {
203
+ width: '100%',
204
+ height: '100%',
205
+ objectFit: 'contain'
206
+ }, alt: filename || '' })) : (jsx("span", __assign({ style: {
207
+ color: 'black',
208
+ height: '100%',
209
+ width: '100%',
210
+ wordBreak: 'break-all',
211
+ fontSize: 'small',
212
+ display: 'flex',
213
+ justifyContent: 'center',
214
+ alignItems: 'center',
215
+ textAlign: 'center'
216
+ } }, { children: filename || 'File' }))), jsx("div", __assign({ css: {
217
+ position: 'absolute',
218
+ top: '4px',
219
+ right: '4px',
220
+ color: 'white',
221
+ background: '#AAA',
222
+ height: '16px',
223
+ width: '16px',
224
+ borderRadius: '50%',
225
+ pointerEvents: disabled ? 'none' : 'auto',
226
+ cursor: 'pointer',
227
+ display: 'flex',
228
+ justifyContent: 'center',
229
+ alignItems: 'center',
230
+ transition: '0.2s ease all',
231
+ '&:hover': { backgroundColor: '#BBB' }
232
+ }, role: 'button', "aria-label": 'Clear file', onClick: function (event) {
233
+ var _a;
234
+ // Stop propagation so window doesn't open up to pick another file to upload
235
+ event.stopPropagation();
236
+ (_a = fileInput.current) === null || _a === void 0 ? void 0 : _a.setCustomValidity('');
237
+ onClear(index)();
238
+ } }, { children: jsx(CloseIcon, { fill: 'white', width: 12, height: 12 }) }))] }), index)) : null;
239
+ }), (allowMoreFiles || hidePreview) && (jsxs("div", __assign({ onClick: onClick, css: __assign({ position: 'relative', pointerEvents: disabled ? 'none' : 'auto', cursor: 'pointer', maxHeight: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center', flexDirection: 'column', overflow: 'hidden', boxSizing: 'border-box', width: '100%' }, responsiveStyles.getTarget('ac')) }, { children: [icon, showLabel && (jsx("div", __assign({ css: responsiveStyles.getTarget('add') }, { children: servar.name })))] }))), jsx("input", { id: servar.key, name: servar.key, ref: fileInput, type: 'file', onChange: handleChange, required: required && !hasFiles, accept: allowedFileTypes.join(',') || undefined, disabled: disabled, "aria-label": element.properties.aria_label, multiple: isMultiple, onFocus: iosScrollOnFocus, style: {
240
+ position: 'absolute',
241
+ pointerEvents: 'none',
242
+ opacity: 0,
243
+ top: 0,
244
+ left: 0,
245
+ width: '100%',
246
+ height: '100%',
247
+ zIndex: FORM_Z_INDEX - 2
248
+ } })] })));
249
+ }
250
+
251
+ export { FileUploadField as default };
@@ -0,0 +1,138 @@
1
+ import { a as __assign, h as hoverStylesGuard, j as jsxs, b as jsx, i as iosScrollOnFocus } from './fthry_index.diObxaBS.js';
2
+ import { useMemo } from 'react';
3
+ import 'react/jsx-runtime';
4
+ import 'react-dom/client';
5
+ import 'stream';
6
+ import 'events';
7
+ import 'buffer';
8
+ import 'util';
9
+ import 'react-dom';
10
+
11
+ // Draws a checkmark, similar in dimensions to the default Chrome checkbox, in CSS
12
+ var checkmarkClipPath = 'polygon(40% 85%, 89% 23%, 76% 12%, 39% 59%, 23% 44%, 12% 55%)';
13
+ var MIN_CHECKBOX_PX = 13;
14
+ // Possibly extract this to its own file, however the radio type is nearly identical to checkbox
15
+ var radio = function (size, color) {
16
+ size = Math.floor(size / 1.7);
17
+ return {
18
+ height: size,
19
+ width: size,
20
+ minWidth: size,
21
+ minHeight: size,
22
+ border: 0,
23
+ boxShadow: "inset ".concat(size, "px ").concat(size, "px #").concat(color),
24
+ borderRadius: '50%'
25
+ };
26
+ };
27
+ var checkbox = function (size, color) {
28
+ return {
29
+ boxShadow: "inset ".concat(size, "px ").concat(size, "px #").concat(color),
30
+ clipPath: checkmarkClipPath
31
+ };
32
+ };
33
+ var scaleCheckboxSize = function (fontSize) {
34
+ return Math.max(fontSize, MIN_CHECKBOX_PX);
35
+ };
36
+ var applyHeightWidthMarginByFontSize = function (responsiveStyles, target, single) {
37
+ if (single === void 0) { single = false; }
38
+ responsiveStyles.apply(target, ['font_size'], function (fontSize) {
39
+ var scaled = scaleCheckboxSize(fontSize);
40
+ var scaledSize = "".concat(scaled, "px");
41
+ var styles = {
42
+ minHeight: scaledSize,
43
+ height: scaledSize,
44
+ minWidth: scaledSize,
45
+ width: scaledSize
46
+ };
47
+ var margin = Math.max(scaled / 2, 10);
48
+ if (!single)
49
+ styles.marginRight = "".concat(margin, "px");
50
+ return styles;
51
+ });
52
+ };
53
+ var applyCheckmarkByFontSize = function (responsiveStyles, target, colorProperty, isRadio) {
54
+ responsiveStyles.apply(target, ['font_size', colorProperty], function (fontSize, color) {
55
+ var scaledSize = scaleCheckboxSize(fontSize);
56
+ return isRadio ? radio(scaledSize, color) : checkbox(scaledSize, color);
57
+ });
58
+ };
59
+ var applyLabelHeightByFontSize = function (responsiveStyles, target) {
60
+ responsiveStyles.apply(target, ['font_size', 'line_height'], function (fontSize, lineHeight) {
61
+ if (!lineHeight)
62
+ lineHeight = scaleCheckboxSize(fontSize);
63
+ var topOffset = (lineHeight - fontSize) / 2;
64
+ return {
65
+ position: 'relative',
66
+ top: "-".concat(topOffset, "px"),
67
+ lineHeight: "".concat(lineHeight, "px")
68
+ };
69
+ });
70
+ };
71
+ var applyCheckmark = function (responsiveStyles, target, colorProperty) {
72
+ responsiveStyles.apply(target, ['height', 'height_unit', 'width', 'width_unit', colorProperty], function (height, heightUnit, width, widthUnit, color) {
73
+ return {
74
+ boxShadow: "inset ".concat(width).concat(widthUnit, " ").concat(height).concat(heightUnit, " #").concat(color),
75
+ clipPath: checkmarkClipPath
76
+ };
77
+ });
78
+ };
79
+ function applyCheckableInputStyles(element, responsiveStyles) {
80
+ responsiveStyles.addTargets('checkbox', 'checkboxCheckmark', 'checkboxSelected', 'checkboxHover', 'checkboxCheckmarkHover', 'checkboxLabel');
81
+ var _a = element.servar, type = _a.type, multiple = _a.metadata.multiple;
82
+ var isRadioGroup = type === 'select' || (type === 'matrix' && !multiple);
83
+ var isCheckboxGroup = type === 'multiselect' ||
84
+ type === 'checkbox_group' ||
85
+ (type === 'matrix' && multiple);
86
+ var scaleWithFontSize = isCheckboxGroup || isRadioGroup;
87
+ // width/height styles
88
+ if (scaleWithFontSize) {
89
+ applyLabelHeightByFontSize(responsiveStyles, 'checkboxLabel');
90
+ applyHeightWidthMarginByFontSize(responsiveStyles, 'checkbox', true);
91
+ applyHeightWidthMarginByFontSize(responsiveStyles, 'checkboxCheckmark', true);
92
+ applyHeightWidthMarginByFontSize(responsiveStyles, 'checkboxCheckmarkHover', true);
93
+ applyCheckmarkByFontSize(responsiveStyles, 'checkboxCheckmark', 'selected_font_color', isRadioGroup);
94
+ applyCheckmarkByFontSize(responsiveStyles, 'checkboxCheckmarkHover', 'hover_font_color', isRadioGroup);
95
+ }
96
+ else {
97
+ responsiveStyles.applyHeight('checkbox');
98
+ responsiveStyles.applyWidth('checkbox');
99
+ responsiveStyles.applyHeight('checkboxCheckmark');
100
+ responsiveStyles.applyWidth('checkboxCheckmark');
101
+ responsiveStyles.applyHeight('checkboxCheckmarkHover');
102
+ responsiveStyles.applyWidth('checkboxCheckmarkHover');
103
+ applyCheckmark(responsiveStyles, 'checkboxCheckmark', 'selected_font_color');
104
+ applyCheckmark(responsiveStyles, 'checkboxCheckmarkHover', 'hover_font_color');
105
+ }
106
+ // base styles
107
+ responsiveStyles.applyBorders({ target: 'checkbox' });
108
+ if (!isRadioGroup)
109
+ responsiveStyles.applyCorners('checkbox');
110
+ responsiveStyles.applyBoxShadow('checkbox');
111
+ responsiveStyles.applyColor('checkbox', 'background_color', 'backgroundColor', true);
112
+ responsiveStyles.applySelectorStyles('checkboxHover', {
113
+ prefix: 'hover_',
114
+ important: true
115
+ });
116
+ responsiveStyles.applySelectorStyles('checkboxSelected', {
117
+ prefix: 'selected_',
118
+ important: true
119
+ });
120
+ return responsiveStyles;
121
+ }
122
+ var composeCheckableInputStyle = function (styles, noHover, isRadio) {
123
+ if (noHover === void 0) { noHover = false; }
124
+ if (isRadio === void 0) { isRadio = false; }
125
+ return __assign(__assign({ position: 'static', marginLeft: 5, marginRight: 5, marginTop: 0, marginBottom: 0, appearance: 'none', display: 'grid', placeContent: 'center',
126
+ // On error in Safari, checkboxes can have a misshapen outline so disable
127
+ outline: 'none', borderRadius: isRadio ? '50%' : null }, styles.getTarget('checkbox')), { '&:hover': hoverStylesGuard(noHover ? {} : styles.getTarget('checkboxHover')), '&::before': __assign({ content: "''", transform: 'scale(0)' }, styles.getTarget('checkboxCheckmark')), '&:hover::before': hoverStylesGuard(__assign(__assign({}, styles.getTarget('checkboxCheckmark')), styles.getTarget('checkboxCheckmarkHover'))), '&:checked': __assign({}, styles.getTarget('checkboxSelected')), '&:checked::before': {
128
+ transform: 'scale(1)'
129
+ } });
130
+ };
131
+ function CheckboxField(_a) {
132
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, fieldLabel = _a.fieldLabel, _b = _a.fieldVal, fieldVal = _b === void 0 ? true : _b, _c = _a.onChange, onChange = _c === void 0 ? function () { } : _c, _d = _a.elementProps, elementProps = _d === void 0 ? {} : _d, _e = _a.disabled, disabled = _e === void 0 ? false : _e, children = _a.children;
133
+ var styles = useMemo(function () { return applyCheckableInputStyles(element, responsiveStyles); }, [responsiveStyles]);
134
+ var servar = element.servar;
135
+ return (jsxs("div", __assign({ css: __assign(__assign({}, responsiveStyles.getTarget('fc')), { position: 'relative', display: 'flex' }) }, elementProps, { children: [children, jsx("input", { id: servar.key, name: servar.key, type: 'checkbox', checked: fieldVal, disabled: disabled, onChange: onChange, onFocus: iosScrollOnFocus, "aria-label": element.properties.aria_label, css: __assign(__assign(__assign({}, composeCheckableInputStyle(styles, disabled)), (disabled ? responsiveStyles.getTarget('disabled') : {})), { marginTop: '4px', '&:focus-visible': { border: '1px solid rgb(74, 144, 226)' } }) }), fieldLabel] })));
136
+ }
137
+
138
+ export { applyCheckableInputStyles, applyHeightWidthMarginByFontSize, composeCheckableInputStyle, CheckboxField as default };
@@ -0,0 +1,131 @@
1
+ import { _ as __read, u as useBorder, j as jsxs, a as __assign, h as hoverStylesGuard, b as jsx, i as iosScrollOnFocus, r as resetStyles, D as DROPDOWN_Z_INDEX, c as __awaiter, d as __generator, F as FeatheryClient, e as debounce } from './fthry_index.diObxaBS.js';
2
+ import { useRef, useEffect, memo, useState, useCallback } from 'react';
3
+ import { P as Placeholder } from './fthry_Placeholder.Dns0M5df.js';
4
+ import { I as InlineTooltip } from './fthry_InlineTooltip.CKU9xvD_.js';
5
+ import { O as Overlay } from './fthry_Overlay.CAkqWcqE.js';
6
+ import { u as useElementSize } from './fthry_useElementSize.boD8p4bk.js';
7
+ import 'react/jsx-runtime';
8
+ import 'react-dom/client';
9
+ import 'stream';
10
+ import 'events';
11
+ import 'buffer';
12
+ import 'util';
13
+ import 'react-dom';
14
+
15
+ function useMounted() {
16
+ var mounted = useRef(true);
17
+ useEffect(function () {
18
+ mounted.current = true; // Handle remount
19
+ return function () {
20
+ mounted.current = false;
21
+ };
22
+ }, []);
23
+ return mounted;
24
+ }
25
+
26
+ function isKeydownValid(event) {
27
+ return Boolean(event.isTrusted && event.code);
28
+ }
29
+
30
+ var SEARCH_DELAY_TIME_MS = 500;
31
+ var EXIT_DELAY_TIME_MS = 200;
32
+ function AddressLine1(_a) {
33
+ var _this = this;
34
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, fieldLabel = _a.fieldLabel, _b = _a.elementProps, elementProps = _b === void 0 ? {} : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c, autoComplete = _a.autoComplete, editMode = _a.editMode, _d = _a.repeatIndex, repeatIndex = _d === void 0 ? null : _d, _e = _a.onSelect, onSelect = _e === void 0 ? function () { } : _e, _f = _a.onChange, onChange = _f === void 0 ? function () { } : _f, required = _a.required, _g = _a.onBlur, onBlur = _g === void 0 ? function () { } : _g, _h = _a.onEnter, onEnter = _h === void 0 ? function () { } : _h, _j = _a.setRef, setRef = _j === void 0 ? function () { } : _j, _k = _a.value, value = _k === void 0 ? '' : _k, inlineError = _a.inlineError, children = _a.children;
35
+ var servar = element.servar;
36
+ var options = useAddressSearch(value, servar);
37
+ var _l = __read(useState(false), 2), showOptions = _l[0], setShowOptions = _l[1];
38
+ var _m = __read(useState(false), 2), focused = _m[0], setFocused = _m[1];
39
+ var inputRef = useRef(null);
40
+ var containerRef = useRef(null);
41
+ var fieldWrapperRef = useRef(null);
42
+ var dropdownWidth = useElementSize(fieldWrapperRef).width;
43
+ var _o = useBorder({
44
+ element: element,
45
+ error: inlineError,
46
+ breakpoint: responsiveStyles.getMobileBreakpoint()
47
+ }), borderStyles = _o.borderStyles, customBorder = _o.customBorder;
48
+ return (jsxs("div", __assign({ ref: containerRef, css: __assign({ maxWidth: '100%', width: '100%', height: '100%', position: 'relative', pointerEvents: editMode ? 'none' : 'auto' }, responsiveStyles.getTarget('fc')) }, elementProps, { children: [children, fieldLabel, jsxs("div", __assign({ ref: fieldWrapperRef, css: __assign(__assign(__assign({ position: 'relative', width: '100%',
49
+ // Prevent placeholder overflow
50
+ overflowX: 'clip' }, responsiveStyles.getTarget('sub-fc')), (disabled ? responsiveStyles.getTarget('disabled') : {})), { '&:hover': hoverStylesGuard(disabled
51
+ ? {}
52
+ : __assign(__assign({}, responsiveStyles.getTarget('hover')), borderStyles.hover)), '&&': focused
53
+ ? __assign(__assign({}, responsiveStyles.getTarget('active')), borderStyles.active) : {} }) }, { children: [customBorder, jsx("input", { id: servar.key, name: servar.key, css: __assign(__assign(__assign({ position: 'relative', height: '100%', width: '100%', border: 'none', margin: 0, backgroundColor: 'transparent' }, resetStyles), responsiveStyles.getTarget('field')), (focused || value || !element.properties.placeholder
54
+ ? {}
55
+ : { color: 'transparent !important' })), maxLength: servar.max_length, minLength: servar.min_length, placeholder: '', disabled: disabled, "aria-label": element.properties.aria_label, autoComplete: autoComplete === 'on' ? 'street-address' : 'new-password', value: value, ref: function (ref) {
56
+ inputRef.current = ref;
57
+ setRef(ref);
58
+ }, onKeyDown: function (e) {
59
+ if (!isKeydownValid(e))
60
+ return;
61
+ if (e.key === 'Enter')
62
+ onEnter(e);
63
+ else
64
+ setShowOptions(e.key !== 'Escape');
65
+ }, onFocus: function (event) {
66
+ setFocused(true);
67
+ iosScrollOnFocus(event);
68
+ }, onBlur: function (e) {
69
+ setTimeout(function () { return setShowOptions(false); }, EXIT_DELAY_TIME_MS);
70
+ onBlur(e);
71
+ setFocused(false);
72
+ }, onChange: onChange, required: required }), jsx(Overlay, __assign({ show: showOptions && options.length > 0, targetRef: inputRef, containerRef: containerRef, placement: 'bottom-start', offset: 4, onHide: function () { return setShowOptions(false); } }, { children: jsx("ul", __assign({ css: __assign({ zIndex: DROPDOWN_Z_INDEX, listStyleType: 'none', padding: 0, margin: 0, backgroundColor: 'white', cursor: 'pointer', boxShadow: '0 0 4px rgb(0 0 0 / 15%)', width: dropdownWidth !== undefined ? "".concat(dropdownWidth, "px") : '100%' }, responsiveStyles.getTarget('dropdown')) }, { children: options.map(function (_a) {
73
+ var display = _a.display, addressId = _a.address_id;
74
+ return (jsx("li", __assign({ css: {
75
+ padding: '8px 14px',
76
+ transition: '0.1s ease all',
77
+ '&:hover': hoverStylesGuard({
78
+ backgroundColor: '#e6e6e633'
79
+ })
80
+ }, onClick: function () { return __awaiter(_this, void 0, void 0, function () {
81
+ var details;
82
+ var _a;
83
+ return __generator(this, function (_b) {
84
+ switch (_b.label) {
85
+ case 0: return [4 /*yield*/, new FeatheryClient().addressDetail(addressId)];
86
+ case 1:
87
+ details = _b.sent();
88
+ onSelect(details, addressId);
89
+ setShowOptions(false);
90
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
91
+ return [2 /*return*/];
92
+ }
93
+ });
94
+ }); } }, { children: display }), display));
95
+ }) })) })), jsx(Placeholder, { value: value, element: element, responsiveStyles: responsiveStyles, repeatIndex: repeatIndex }), jsx(InlineTooltip, { containerRef: containerRef, id: element.id, text: element.properties.tooltipText, responsiveStyles: responsiveStyles, repeat: element.repeat })] }))] })));
96
+ }
97
+ function useAddressSearch(searchTerm, servar) {
98
+ var _a;
99
+ var meta = servar.metadata;
100
+ var active = meta.address_autocomplete;
101
+ var country = (_a = meta.autocomplete_country) !== null && _a !== void 0 ? _a : '';
102
+ var mounted = useMounted();
103
+ var _b = __read(useState(searchTerm), 2), term = _b[0], setTerm = _b[1];
104
+ var _c = __read(useState([]), 2), results = _c[0], setResults = _c[1];
105
+ var fetchAddresses = useCallback(debounce(function (newTerm) {
106
+ new FeatheryClient()
107
+ .addressSearchResults(newTerm, country, servar.type === 'gmap_city')
108
+ .then(function (addresses) {
109
+ if (mounted.current) {
110
+ setResults(addresses);
111
+ setTerm(newTerm);
112
+ }
113
+ });
114
+ }, SEARCH_DELAY_TIME_MS), [setResults, setTerm]);
115
+ useEffect(function () {
116
+ var trimmedTerm = searchTerm.trim();
117
+ if (!active || trimmedTerm === term)
118
+ return;
119
+ if (trimmedTerm.length > 3)
120
+ fetchAddresses(trimmedTerm);
121
+ else {
122
+ if (results.length)
123
+ setResults([]);
124
+ setTerm(trimmedTerm);
125
+ }
126
+ }, [searchTerm]);
127
+ return results;
128
+ }
129
+ var index = memo(AddressLine1);
130
+
131
+ export { index as default };