@feathery/react 2.6.8 → 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 (314) 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/logic.d.ts +10 -10
  24. package/dist/Form/tests/testMocks.d.ts +6 -6
  25. package/dist/auth/LoginError.d.ts +3 -3
  26. package/dist/auth/LoginForm.d.ts +29 -29
  27. package/dist/auth/internal/AuthIntegrationInterface.d.ts +31 -31
  28. package/dist/auth/internal/useFormAuth.d.ts +10 -10
  29. package/dist/auth/internal/utils.d.ts +13 -13
  30. package/dist/auth/useAuthClient.d.ts +2 -2
  31. package/dist/auth/utils.d.ts +1 -1
  32. package/dist/elements/basic/ButtonElement.d.ts +2 -2
  33. package/dist/elements/basic/ImageElement.d.ts +3 -3
  34. package/dist/elements/basic/ProgressBarElement/components/SegmentBar.d.ts +2 -2
  35. package/dist/elements/basic/ProgressBarElement/components/SmoothBar.d.ts +2 -2
  36. package/dist/elements/basic/ProgressBarElement/index.d.ts +2 -2
  37. package/dist/elements/basic/TextElement.d.ts +2 -2
  38. package/dist/elements/basic/VideoElement.d.ts +2 -2
  39. package/dist/elements/components/ErrorInput.d.ts +2 -2
  40. package/dist/elements/components/FormControl.d.ts +10 -10
  41. package/dist/elements/components/FormOff.d.ts +10 -10
  42. package/dist/elements/components/InlineTooltip.d.ts +11 -11
  43. package/dist/elements/components/LoaderContainer.d.ts +10 -10
  44. package/dist/elements/components/Lottie.d.ts +2 -2
  45. package/dist/elements/components/Overlay.d.ts +15 -15
  46. package/dist/elements/components/Placeholder.d.ts +1 -1
  47. package/dist/elements/components/QuikFormViewer/transforms/form.d.ts +1 -1
  48. package/dist/elements/components/QuikFormViewer/transforms/header.d.ts +1 -1
  49. package/dist/elements/components/QuikFormViewer/transforms/sidebar.d.ts +6 -6
  50. package/dist/elements/components/QuikFormViewer.d.ts +9 -9
  51. package/dist/elements/components/Spinner.d.ts +4 -4
  52. package/dist/elements/components/TextHoverTooltip.d.ts +8 -8
  53. package/dist/elements/components/TextNodes.d.ts +4 -4
  54. package/dist/elements/components/Tooltip.d.ts +7 -7
  55. package/dist/elements/components/Watermark.d.ts +1 -1
  56. package/dist/elements/components/data/countries.d.ts +14 -14
  57. package/dist/elements/components/data/states/ae.d.ts +5 -5
  58. package/dist/elements/components/data/states/au.d.ts +5 -5
  59. package/dist/elements/components/data/states/br.d.ts +5 -5
  60. package/dist/elements/components/data/states/ca.d.ts +5 -5
  61. package/dist/elements/components/data/states/cl.d.ts +5 -5
  62. package/dist/elements/components/data/states/cn.d.ts +5 -5
  63. package/dist/elements/components/data/states/co.d.ts +5 -5
  64. package/dist/elements/components/data/states/eg.d.ts +5 -5
  65. package/dist/elements/components/data/states/es.d.ts +5 -5
  66. package/dist/elements/components/data/states/gb.d.ts +5 -5
  67. package/dist/elements/components/data/states/gt.d.ts +5 -5
  68. package/dist/elements/components/data/states/hk.d.ts +5 -5
  69. package/dist/elements/components/data/states/id.d.ts +5 -5
  70. package/dist/elements/components/data/states/ie.d.ts +5 -5
  71. package/dist/elements/components/data/states/in.d.ts +5 -5
  72. package/dist/elements/components/data/states/index.d.ts +6 -6
  73. package/dist/elements/components/data/states/it.d.ts +5 -5
  74. package/dist/elements/components/data/states/jp.d.ts +5 -5
  75. package/dist/elements/components/data/states/kr.d.ts +5 -5
  76. package/dist/elements/components/data/states/mx.d.ts +5 -5
  77. package/dist/elements/components/data/states/my.d.ts +5 -5
  78. package/dist/elements/components/data/states/ng.d.ts +5 -5
  79. package/dist/elements/components/data/states/nz.d.ts +5 -5
  80. package/dist/elements/components/data/states/pa.d.ts +5 -5
  81. package/dist/elements/components/data/states/pe.d.ts +5 -5
  82. package/dist/elements/components/data/states/ph.d.ts +5 -5
  83. package/dist/elements/components/data/states/pt.d.ts +5 -5
  84. package/dist/elements/components/data/states/ro.d.ts +5 -5
  85. package/dist/elements/components/data/states/ru.d.ts +5 -5
  86. package/dist/elements/components/data/states/th.d.ts +5 -5
  87. package/dist/elements/components/data/states/us.d.ts +9 -9
  88. package/dist/elements/components/data/states/za.d.ts +5 -5
  89. package/dist/elements/components/icons/Close.d.ts +6 -6
  90. package/dist/elements/components/icons/DiagonalArrow.d.ts +5 -5
  91. package/dist/elements/components/icons/DownloadIcon.d.ts +4 -4
  92. package/dist/elements/components/icons/FileUpload.d.ts +1 -1
  93. package/dist/elements/components/icons/FormClosed.d.ts +5 -5
  94. package/dist/elements/components/icons/Heart.d.ts +1 -1
  95. package/dist/elements/components/icons/Help.d.ts +4 -4
  96. package/dist/elements/components/icons/HideEyeIcon.d.ts +5 -5
  97. package/dist/elements/components/icons/LeftChevron.d.ts +1 -1
  98. package/dist/elements/components/icons/RatingStar.d.ts +1 -1
  99. package/dist/elements/components/icons/RightChevron.d.ts +1 -1
  100. package/dist/elements/components/icons/ShowEyeIcon.d.ts +5 -5
  101. package/dist/elements/components/icons/Warning.d.ts +5 -5
  102. package/dist/elements/components/icons/index.d.ts +11 -11
  103. package/dist/elements/components/skeletons/FieldSkeleton.d.ts +7 -7
  104. package/dist/elements/components/useBorder.d.ts +21 -21
  105. package/dist/elements/components/useTextEdit.d.ts +6 -5
  106. package/dist/elements/components/useTextEdit.d.ts.map +1 -1
  107. package/dist/elements/fields/AddressLine1Field/index.d.ts +4 -4
  108. package/dist/elements/fields/AddressLine1Field/tests/test-utils.d.ts +33 -34
  109. package/dist/elements/fields/AddressLine1Field/tests/test-utils.d.ts.map +1 -1
  110. package/dist/elements/fields/AddressLine1Field/utils.d.ts +2 -2
  111. package/dist/elements/fields/ButtonGroupField/index.d.ts +2 -2
  112. package/dist/elements/fields/ButtonGroupField/tests/test-utils.d.ts +45 -46
  113. package/dist/elements/fields/ButtonGroupField/tests/test-utils.d.ts.map +1 -1
  114. package/dist/elements/fields/CheckboxField/index.d.ts +5 -5
  115. package/dist/elements/fields/CheckboxField/tests/test-utils.d.ts +19 -20
  116. package/dist/elements/fields/CheckboxField/tests/test-utils.d.ts.map +1 -1
  117. package/dist/elements/fields/CheckboxGroupField/index.d.ts +2 -2
  118. package/dist/elements/fields/CheckboxGroupField/tests/test-utils.d.ts +59 -60
  119. package/dist/elements/fields/CheckboxGroupField/tests/test-utils.d.ts.map +1 -1
  120. package/dist/elements/fields/ColorPickerField/index.d.ts +2 -2
  121. package/dist/elements/fields/ColorPickerField/tests/test-utils.d.ts +20 -21
  122. package/dist/elements/fields/ColorPickerField/tests/test-utils.d.ts.map +1 -1
  123. package/dist/elements/fields/CustomField/Status.d.ts +8 -8
  124. package/dist/elements/fields/CustomField/index.d.ts +3 -3
  125. package/dist/elements/fields/CustomField/template.d.ts +1 -1
  126. package/dist/elements/fields/CustomField/useCustomComponentIframe.d.ts +15 -15
  127. package/dist/elements/fields/DateSelectorField/index.d.ts +22 -22
  128. package/dist/elements/fields/DateSelectorField/index.d.ts.map +1 -1
  129. package/dist/elements/fields/DateSelectorField/styles.d.ts +4 -4
  130. package/dist/elements/fields/DateSelectorField/tests/test-utils.d.ts +73 -74
  131. package/dist/elements/fields/DateSelectorField/tests/test-utils.d.ts.map +1 -1
  132. package/dist/elements/fields/DateSelectorField/useDateLocale.d.ts +7 -7
  133. package/dist/elements/fields/DateSelectorField/utils.d.ts +3 -3
  134. package/dist/elements/fields/DropdownField/index.d.ts +1 -1
  135. package/dist/elements/fields/DropdownField/tests/test-utils.d.ts +26 -28
  136. package/dist/elements/fields/DropdownField/tests/test-utils.d.ts.map +1 -1
  137. package/dist/elements/fields/DropdownMultiField/DropdownMultiFieldSelectComponents.d.ts +8 -8
  138. package/dist/elements/fields/DropdownMultiField/createDropdownSelect.d.ts +190 -190
  139. package/dist/elements/fields/DropdownMultiField/index.d.ts +1 -1
  140. package/dist/elements/fields/DropdownMultiField/optionNormalization.d.ts +9 -9
  141. package/dist/elements/fields/DropdownMultiField/selectStyles.d.ts +12 -12
  142. package/dist/elements/fields/DropdownMultiField/tests/test-utils.d.ts +46 -47
  143. package/dist/elements/fields/DropdownMultiField/tests/test-utils.d.ts.map +1 -1
  144. package/dist/elements/fields/DropdownMultiField/types.d.ts +49 -49
  145. package/dist/elements/fields/DropdownMultiField/useCollapsedSelectionManager.d.ts +46 -46
  146. package/dist/elements/fields/DropdownMultiField/useCollapsedValuesMeasurement.d.ts +19 -19
  147. package/dist/elements/fields/DropdownMultiField/useDropdownInteractions.d.ts +46 -46
  148. package/dist/elements/fields/DropdownMultiField/useDropdownOptions.d.ts +24 -24
  149. package/dist/elements/fields/DropdownMultiField/useSelectProps.d.ts +112 -112
  150. package/dist/elements/fields/FileUploadField/index.d.ts +2 -2
  151. package/dist/elements/fields/FileUploadField/tests/test-utils.d.ts +10 -10
  152. package/dist/elements/fields/MatrixField/index.d.ts +2 -2
  153. package/dist/elements/fields/MatrixField/tests/test-utils.d.ts +66 -67
  154. package/dist/elements/fields/MatrixField/tests/test-utils.d.ts.map +1 -1
  155. package/dist/elements/fields/PasswordField/index.d.ts +4 -4
  156. package/dist/elements/fields/PasswordField/tests/test-utils.d.ts +29 -30
  157. package/dist/elements/fields/PasswordField/tests/test-utils.d.ts.map +1 -1
  158. package/dist/elements/fields/PaymentMethodField.d.ts +4 -4
  159. package/dist/elements/fields/PhoneField/CountryDropdown.d.ts +3 -3
  160. package/dist/elements/fields/PhoneField/exampleNumbers.d.ts +2 -2
  161. package/dist/elements/fields/PhoneField/index.d.ts +4 -4
  162. package/dist/elements/fields/PhoneField/tests/test-utils.d.ts +85 -86
  163. package/dist/elements/fields/PhoneField/tests/test-utils.d.ts.map +1 -1
  164. package/dist/elements/fields/PhoneField/timeZoneCountries.d.ts +4 -4
  165. package/dist/elements/fields/PhoneField/validation.d.ts +3 -3
  166. package/dist/elements/fields/PinInputField/index.d.ts +2 -2
  167. package/dist/elements/fields/PinInputField/tests/test-utils.d.ts +78 -79
  168. package/dist/elements/fields/PinInputField/tests/test-utils.d.ts.map +1 -1
  169. package/dist/elements/fields/PinInputField/useOTPListener.d.ts +1 -1
  170. package/dist/elements/fields/QRScanner/constants.d.ts +14 -14
  171. package/dist/elements/fields/QRScanner/hooks/use-device-rotation.d.ts +11 -11
  172. package/dist/elements/fields/QRScanner/index.d.ts +2 -2
  173. package/dist/elements/fields/QRScanner/qrLoader.d.ts +2 -2
  174. package/dist/elements/fields/QRScanner/utils/local-storage.d.ts +5 -5
  175. package/dist/elements/fields/QRScanner/utils/select-camera.d.ts +9 -9
  176. package/dist/elements/fields/QRScanner/utils/supports-zoom.d.ts +8 -8
  177. package/dist/elements/fields/RadioButtonGroupField/index.d.ts +2 -2
  178. package/dist/elements/fields/RadioButtonGroupField/tests/test-utils.d.ts +54 -55
  179. package/dist/elements/fields/RadioButtonGroupField/tests/test-utils.d.ts.map +1 -1
  180. package/dist/elements/fields/RatingField/index.d.ts +1 -1
  181. package/dist/elements/fields/RatingField/tests/test-utils.d.ts +21 -22
  182. package/dist/elements/fields/RatingField/tests/test-utils.d.ts.map +1 -1
  183. package/dist/elements/fields/SignatureField/components/SignatureCanvas.d.ts +22 -22
  184. package/dist/elements/fields/SignatureField/components/SignatureModal.d.ts +12 -12
  185. package/dist/elements/fields/SignatureField/components/utils.d.ts +10 -10
  186. package/dist/elements/fields/SignatureField/index.d.ts +3 -3
  187. package/dist/elements/fields/SignatureField/translation.d.ts +17 -17
  188. package/dist/elements/fields/SliderField/index.d.ts +1 -1
  189. package/dist/elements/fields/SliderField/styles.d.ts +3 -3
  190. package/dist/elements/fields/SliderField/tests/test-utils.d.ts +21 -22
  191. package/dist/elements/fields/SliderField/tests/test-utils.d.ts.map +1 -1
  192. package/dist/elements/fields/TextArea/index.d.ts +4 -4
  193. package/dist/elements/fields/TextArea/tests/test-utils.d.ts +10 -10
  194. package/dist/elements/fields/TextField/TextAutocomplete.d.ts +15 -15
  195. package/dist/elements/fields/TextField/index.d.ts +4 -4
  196. package/dist/elements/fields/TextField/index.d.ts.map +1 -1
  197. package/dist/elements/fields/TextField/tests/test-utils.d.ts +10 -10
  198. package/dist/elements/fields/index.d.ts +27 -26
  199. package/dist/elements/fields/index.d.ts.map +1 -1
  200. package/dist/elements/fields/shared/tests/field-test-utils.d.ts +50 -51
  201. package/dist/elements/fields/shared/tests/field-test-utils.d.ts.map +1 -1
  202. package/dist/elements/index.d.ts +36 -36
  203. package/dist/elements/styles.d.ts +64 -64
  204. package/dist/elements/utils/fieldNormalization.d.ts +12 -12
  205. package/dist/fthry_FormControl.DxW_Bnm8.js +16 -0
  206. package/dist/fthry_InlineTooltip.CKU9xvD_.js +53 -0
  207. package/dist/fthry_Overlay.CAkqWcqE.js +228 -0
  208. package/dist/fthry_PaymentMethodField.DgbAXbj6.js +928 -0
  209. package/dist/fthry_Placeholder.Dns0M5df.js +14 -0
  210. package/dist/fthry_ShowEyeIcon.B5WMynZy.js +13 -0
  211. package/dist/fthry_index.3X-DqTfs.js +97 -0
  212. package/dist/fthry_index.B2eJWMcW.js +2000 -0
  213. package/dist/fthry_index.BMqtYXlU.js +8166 -0
  214. package/dist/fthry_index.BOBND5Kw.js +1427 -0
  215. package/dist/fthry_index.BOzMcNbx.js +1452 -0
  216. package/dist/fthry_index.BQObFcP7.js +15921 -0
  217. package/dist/fthry_index.CJrl9QNZ.js +888 -0
  218. package/dist/fthry_index.CcFhx1jU.js +73 -0
  219. package/dist/fthry_index.CcNVqQ7R.js +293 -0
  220. package/dist/fthry_index.CnVdemA5.js +1162 -0
  221. package/dist/fthry_index.CxRelutP.js +42 -0
  222. package/dist/fthry_index.D19e9CJD.js +1193 -0
  223. package/dist/fthry_index.D6UpFxPB.js +216 -0
  224. package/dist/fthry_index.DD4M0PFc.js +46 -0
  225. package/dist/fthry_index.DMgGgKWy.js +55 -0
  226. package/dist/fthry_index.DQB3aI2u.js +95 -0
  227. package/dist/fthry_index.DaJO430v.js +513 -0
  228. package/dist/fthry_index.DfiZRBo4.js +35 -0
  229. package/dist/fthry_index.Di1aadud.js +251 -0
  230. package/dist/fthry_index.DpFG-lbP.js +138 -0
  231. package/dist/fthry_index.DsECQjJb.js +131 -0
  232. package/dist/fthry_index.diObxaBS.js +60999 -0
  233. package/dist/fthry_index.ghZ0mkQF.js +98 -0
  234. package/dist/fthry_input.COhHyroj.js +3779 -0
  235. package/dist/fthry_script.D9CLkYzO.js +157 -0
  236. package/dist/fthry_styles.Bcy5cq6p.js +1654 -0
  237. package/dist/fthry_useElementSize.boD8p4bk.js +51 -0
  238. package/dist/fthry_useSalesforceSync.BNvWxPzE.js +44 -0
  239. package/dist/fthry_webfontloader.DEj1XG0u.js +57 -0
  240. package/dist/hooks/router.d.ts +14 -14
  241. package/dist/hooks/useElementSize.d.ts +7 -7
  242. package/dist/hooks/useLoader.d.ts +35 -35
  243. package/dist/hooks/useMounted.d.ts +2 -2
  244. package/dist/hooks/usePollFuserData.d.ts +1 -1
  245. package/dist/hooks/usePrevious.d.ts +2 -2
  246. package/dist/hooks/useSalesforceSync.d.ts +10 -10
  247. package/dist/index.d.ts +150 -149
  248. package/dist/index.d.ts.map +1 -1
  249. package/dist/index.js +9 -1
  250. package/dist/integrations/alloy.d.ts +2 -2
  251. package/dist/integrations/amplitude.d.ts +1 -1
  252. package/dist/integrations/argyle.d.ts +2 -2
  253. package/dist/integrations/calendly.d.ts +2 -2
  254. package/dist/integrations/firebase.d.ts +42 -42
  255. package/dist/integrations/flinks/index.d.ts +10 -10
  256. package/dist/integrations/flinks/utils.d.ts +12 -12
  257. package/dist/integrations/googleAnalytics.d.ts +3 -3
  258. package/dist/integrations/googleTagManager.d.ts +1 -1
  259. package/dist/integrations/heap.d.ts +2 -2
  260. package/dist/integrations/intercom.d.ts +2 -2
  261. package/dist/integrations/mixpanel.d.ts +2 -2
  262. package/dist/integrations/persona.d.ts +2 -2
  263. package/dist/integrations/plaid.d.ts +2 -2
  264. package/dist/integrations/recaptcha.d.ts +2 -2
  265. package/dist/integrations/rudderstack.d.ts +3 -3
  266. package/dist/integrations/schwab.d.ts +1 -1
  267. package/dist/integrations/segment.d.ts +1 -1
  268. package/dist/integrations/stripe/Cart.d.ts +19 -19
  269. package/dist/integrations/stripe/SimplifiedProduct.d.ts +39 -39
  270. package/dist/integrations/stripe/index.d.ts +1 -1
  271. package/dist/integrations/stripe/stripe.d.ts +97 -97
  272. package/dist/integrations/stytch.d.ts +19 -19
  273. package/dist/integrations/trustedform.d.ts +2 -2
  274. package/dist/integrations/utils.d.ts +14 -14
  275. package/dist/setupTests.d.ts +1 -1
  276. package/dist/types/Form.d.ts +80 -80
  277. package/dist/utils/DangerouslySetHTMLContent.d.ts +2 -2
  278. package/dist/utils/ShadowDomHtmlContent.d.ts +8 -8
  279. package/dist/utils/array.d.ts +11 -11
  280. package/dist/utils/browser.d.ts +23 -23
  281. package/dist/utils/callbackQueue.d.ts +10 -10
  282. package/dist/utils/document.d.ts +1 -1
  283. package/dist/utils/elementActions.d.ts +55 -55
  284. package/dist/utils/entities/Collaborator.d.ts +14 -14
  285. package/dist/utils/entities/Field.d.ts +129 -129
  286. package/dist/utils/error.d.ts +13 -13
  287. package/dist/utils/featheryClient/index.d.ts +103 -103
  288. package/dist/utils/featheryClient/integrationClient.d.ts +114 -114
  289. package/dist/utils/featheryClient/utils.d.ts +1 -1
  290. package/dist/utils/fieldHelperFunctions.d.ts +70 -70
  291. package/dist/utils/formContext.d.ts +104 -104
  292. package/dist/utils/formHelperFunctions.d.ts +44 -44
  293. package/dist/utils/hideAndRepeats.d.ts +27 -27
  294. package/dist/utils/hydration.d.ts +14 -14
  295. package/dist/utils/image.d.ts +39 -39
  296. package/dist/utils/init.d.ts +59 -59
  297. package/dist/utils/interactionState.d.ts +4 -4
  298. package/dist/utils/internalState.d.ts +91 -91
  299. package/dist/utils/logic.d.ts +50 -50
  300. package/dist/utils/offlineRequestHandler.d.ts +94 -94
  301. package/dist/utils/polyfills.d.ts +2 -2
  302. package/dist/utils/primitives.d.ts +14 -14
  303. package/dist/utils/random.d.ts +1 -1
  304. package/dist/utils/repeat.d.ts +38 -38
  305. package/dist/utils/sensitiveActions.d.ts +7 -7
  306. package/dist/utils/stepHelperFunctions.d.ts +22 -22
  307. package/dist/utils/styles.d.ts +5 -5
  308. package/dist/utils/validation.d.ts +58 -58
  309. package/package.json +17 -5
  310. package/umd/466.e3456c8b3407ad04ba56.js +1 -0
  311. package/umd/{DateSelectorField.b98c0ecb80f56e65cc69.js → DateSelectorField.bd5646949de71f571d04.js} +1 -1
  312. package/umd/{TextField.a3d8d42f6f8236d00f83.js → TextField.5a5296fe3ea60c4459f2.js} +1 -1
  313. package/umd/index.js +1 -1
  314. package/umd/796.e66d52ea21ef09c4eeaa.js +0 -1
@@ -0,0 +1,513 @@
1
+ import { c as __awaiter, d as __generator, a4 as __spreadArray, _ as __read, ai as __values, l as featheryWindow, aj as loadQRScanner, ak as throttle, b as jsx, j as jsxs, a as __assign, m as Fragment, E as ErrorInput, al as qrPromise } from './fthry_index.diObxaBS.js';
2
+ import React__default, { useEffect, useCallback } from 'react';
3
+ import { S as SliderStyles, a as Slider } from './fthry_styles.Bcy5cq6p.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
+ var CAMERA_PREFERENCE_KEY = 'feathery-camera';
13
+ function getCameraPreferences() {
14
+ if (!localStorage)
15
+ return null;
16
+ var storedData = localStorage.getItem(CAMERA_PREFERENCE_KEY);
17
+ if (!storedData)
18
+ return null;
19
+ try {
20
+ var preference = JSON.parse(storedData);
21
+ if (preference &&
22
+ preference.device_id &&
23
+ typeof preference.device_id === 'string') {
24
+ return preference;
25
+ }
26
+ }
27
+ catch (_a) {
28
+ return null;
29
+ }
30
+ return null;
31
+ }
32
+ function setCameraPreferences(preference) {
33
+ if (!preference)
34
+ return;
35
+ if (!localStorage)
36
+ return;
37
+ try {
38
+ localStorage.setItem(CAMERA_PREFERENCE_KEY, JSON.stringify(preference));
39
+ }
40
+ catch (_a) { }
41
+ }
42
+
43
+ // fetch device list, getting permissions if needed
44
+ function fetchDeviceList() {
45
+ return __awaiter(this, void 0, void 0, function () {
46
+ var devices, noPermission, stream;
47
+ return __generator(this, function (_a) {
48
+ switch (_a.label) {
49
+ case 0: return [4 /*yield*/, navigator.mediaDevices.enumerateDevices()];
50
+ case 1:
51
+ devices = _a.sent();
52
+ noPermission = devices
53
+ .filter(function (device) { return device.kind === 'videoinput'; })
54
+ .every(function (device) { return device.label === ''; });
55
+ if (!noPermission) return [3 /*break*/, 4];
56
+ return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
57
+ video: {
58
+ facingMode: { ideal: 'environment' }
59
+ },
60
+ audio: false
61
+ })];
62
+ case 2:
63
+ stream = _a.sent();
64
+ return [4 /*yield*/, navigator.mediaDevices.enumerateDevices()];
65
+ case 3:
66
+ // enumerate devices again - now the label field should be non-empty, as we have a stream active
67
+ // (even if we didn't get persistent permission for camera)
68
+ devices = _a.sent();
69
+ // close the stream, as we don't need it anymore
70
+ stream.getTracks().forEach(function (track) { return track.stop(); });
71
+ _a.label = 4;
72
+ case 4: return [2 /*return*/, devices];
73
+ }
74
+ });
75
+ });
76
+ }
77
+ function selectCamera() {
78
+ return __awaiter(this, void 0, void 0, function () {
79
+ var allCameras, possibleCameras, cameraPreference;
80
+ return __generator(this, function (_a) {
81
+ switch (_a.label) {
82
+ case 0: return [4 /*yield*/, getVideoCamerasAndCapabilities()];
83
+ case 1:
84
+ allCameras = _a.sent();
85
+ possibleCameras = __spreadArray([], __read(allCameras), false);
86
+ if (possibleCameras.length === 0) {
87
+ console.error('No cameras found!');
88
+ return [2 /*return*/, null];
89
+ }
90
+ cameraPreference = getCameraPreferences();
91
+ if ((cameraPreference === null || cameraPreference === void 0 ? void 0 : cameraPreference.device_id) &&
92
+ allCameras.some(function (cam) { return cam.deviceId === (cameraPreference === null || cameraPreference === void 0 ? void 0 : cameraPreference.device_id); })) {
93
+ return [2 /*return*/, {
94
+ bestCameraId: cameraPreference === null || cameraPreference === void 0 ? void 0 : cameraPreference.device_id,
95
+ allCameras: allCameras
96
+ }];
97
+ }
98
+ if (possibleCameras.length === 1) {
99
+ return [2 /*return*/, {
100
+ bestCameraId: possibleCameras[0].deviceId,
101
+ allCameras: allCameras
102
+ }];
103
+ }
104
+ if (possibleCameras.some(backFacingCamera)) {
105
+ possibleCameras = possibleCameras.filter(backFacingCamera);
106
+ }
107
+ if (possibleCameras.some(zoomCamera)) {
108
+ possibleCameras = possibleCameras.filter(zoomCamera);
109
+ }
110
+ if (possibleCameras.some(torchCamera)) {
111
+ possibleCameras = possibleCameras.filter(torchCamera);
112
+ }
113
+ possibleCameras.sort(sortByFocusDistance);
114
+ return [2 /*return*/, {
115
+ bestCameraId: possibleCameras[0].deviceId,
116
+ allCameras: allCameras
117
+ }];
118
+ }
119
+ });
120
+ });
121
+ }
122
+ var backFacingCamera = function (camera) { var _a; return (_a = camera.capabilities.facingMode) === null || _a === void 0 ? void 0 : _a.includes('enviroment'); };
123
+ var torchCamera = function (camera) {
124
+ return camera.capabilities.torch;
125
+ };
126
+ var zoomCamera = function (camera) {
127
+ var _a, _b;
128
+ return ((_a = camera.capabilities.zoom) === null || _a === void 0 ? void 0 : _a.min) != null &&
129
+ ((_b = camera.capabilities.zoom) === null || _b === void 0 ? void 0 : _b.max) != null;
130
+ };
131
+ var sortByFocusDistance = function (a, b) {
132
+ var _a, _b;
133
+ var aFocus = (_a = a.capabilities.focusDistance) === null || _a === void 0 ? void 0 : _a.min;
134
+ var bFocus = (_b = b.capabilities.focusDistance) === null || _b === void 0 ? void 0 : _b.min;
135
+ if (typeof aFocus === 'number' && typeof bFocus !== 'number')
136
+ return -1;
137
+ if (typeof aFocus !== 'number' && typeof bFocus === 'number')
138
+ return 1;
139
+ if (typeof aFocus !== 'number' && typeof bFocus !== 'number')
140
+ return 0;
141
+ return aFocus - bFocus;
142
+ };
143
+ function getVideoCamerasAndCapabilities() {
144
+ return __awaiter(this, void 0, void 0, function () {
145
+ var devices, videoDevices, cameraList, videoDevices_1, videoDevices_1_1, device, stream, track, capabilities, e_1_1, error_1;
146
+ var e_1, _a;
147
+ return __generator(this, function (_b) {
148
+ switch (_b.label) {
149
+ case 0:
150
+ _b.trys.push([0, 10, , 11]);
151
+ return [4 /*yield*/, fetchDeviceList()];
152
+ case 1:
153
+ devices = _b.sent();
154
+ videoDevices = devices.filter(function (device) { return device.kind === 'videoinput'; });
155
+ cameraList = [];
156
+ _b.label = 2;
157
+ case 2:
158
+ _b.trys.push([2, 7, 8, 9]);
159
+ videoDevices_1 = __values(videoDevices), videoDevices_1_1 = videoDevices_1.next();
160
+ _b.label = 3;
161
+ case 3:
162
+ if (!!videoDevices_1_1.done) return [3 /*break*/, 6];
163
+ device = videoDevices_1_1.value;
164
+ return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
165
+ video: { deviceId: device.deviceId }
166
+ })];
167
+ case 4:
168
+ stream = _b.sent();
169
+ track = stream.getVideoTracks()[0];
170
+ capabilities = track.getCapabilities();
171
+ // Add the camera and its capabilities to the list
172
+ cameraList.push({
173
+ label: device.label,
174
+ deviceId: device.deviceId,
175
+ capabilities: capabilities
176
+ });
177
+ // Stop the track to release the camera
178
+ track.stop();
179
+ _b.label = 5;
180
+ case 5:
181
+ videoDevices_1_1 = videoDevices_1.next();
182
+ return [3 /*break*/, 3];
183
+ case 6: return [3 /*break*/, 9];
184
+ case 7:
185
+ e_1_1 = _b.sent();
186
+ e_1 = { error: e_1_1 };
187
+ return [3 /*break*/, 9];
188
+ case 8:
189
+ try {
190
+ if (videoDevices_1_1 && !videoDevices_1_1.done && (_a = videoDevices_1.return)) _a.call(videoDevices_1);
191
+ }
192
+ finally { if (e_1) throw e_1.error; }
193
+ return [7 /*endfinally*/];
194
+ case 9: return [2 /*return*/, cameraList];
195
+ case 10:
196
+ error_1 = _b.sent();
197
+ console.error('Error accessing video devices:', error_1);
198
+ return [2 /*return*/, []];
199
+ case 11: return [2 /*return*/];
200
+ }
201
+ });
202
+ });
203
+ }
204
+
205
+ // TODO: figure out how to type scanner
206
+ function getZoomSettings(scanner) {
207
+ var _a;
208
+ if (!scanner) {
209
+ return null;
210
+ }
211
+ // possible options
212
+ var cameraCapabilities = scanner.getRunningTrackCapabilities();
213
+ // current options
214
+ var cameraSettings = scanner.getRunningTrackSettings();
215
+ // todo: figure out type for cameraCapabilities
216
+ var supportsZoom = 'zoom' in cameraCapabilities &&
217
+ 'min' in cameraCapabilities.zoom &&
218
+ 'max' in cameraCapabilities.zoom;
219
+ if (!supportsZoom) {
220
+ return null;
221
+ }
222
+ var zoomCapabilities = cameraCapabilities.zoom;
223
+ var current = ('zoom' in cameraSettings ? cameraSettings.zoom : zoomCapabilities.min);
224
+ var zoomSettings = {
225
+ min: zoomCapabilities.min,
226
+ max: zoomCapabilities.max,
227
+ step: (_a = zoomCapabilities.step) !== null && _a !== void 0 ? _a : 0.1,
228
+ current: current
229
+ };
230
+ return zoomSettings;
231
+ }
232
+
233
+ /**
234
+ * Hook to listen for device rotation events.
235
+ *
236
+ * @param onRotate Callback to be called when the device is rotated.
237
+ * @param options Options for the hook, { enabled: boolean }.
238
+ */
239
+ function useDeviceRotation(onRotate, _a) {
240
+ var _b = _a.enabled, enabled = _b === void 0 ? true : _b;
241
+ var callbackRef = React__default.useRef(onRotate);
242
+ React__default.useEffect(function () {
243
+ callbackRef.current = onRotate;
244
+ }, [onRotate]);
245
+ React__default.useEffect(function () {
246
+ if (!enabled) {
247
+ return;
248
+ }
249
+ function handleOrientationChange() {
250
+ if (callbackRef.current) {
251
+ callbackRef.current();
252
+ }
253
+ }
254
+ featheryWindow().addEventListener('orientationchange', handleOrientationChange);
255
+ return function () {
256
+ featheryWindow().removeEventListener('orientationchange', handleOrientationChange);
257
+ };
258
+ }, [enabled]);
259
+ }
260
+
261
+ var SCAN_CONFIG = {
262
+ fps: 8,
263
+ rememberLastUsedCamera: true,
264
+ disableFlip: true,
265
+ aspectRatio: 4 / 3,
266
+ useBarCodeDetectorIfSupported: true
267
+ };
268
+ var PLACEHOLDER_IMAGE = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNzEuNjQzIDM3MS42NDMiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDM3MS42NDMgMzcxLjY0MyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTEwNS4wODQgMzguMjcxaDE2My43Njh2MjBIMTA1LjA4NHoiLz48cGF0aCBkPSJNMzExLjU5NiAxOTAuMTg5Yy03LjQ0MS05LjM0Ny0xOC40MDMtMTYuMjA2LTMyLjc0My0yMC41MjJWMzBjMC0xNi41NDItMTMuNDU4LTMwLTMwLTMwSDEyNS4wODRjLTE2LjU0MiAwLTMwIDEzLjQ1OC0zMCAzMHYxMjAuMTQzaC04LjI5NmMtMTYuNTQyIDAtMzAgMTMuNDU4LTMwIDMwdjEuMzMzYTI5LjgwNCAyOS44MDQgMCAwIDAgNC42MDMgMTUuOTM5Yy03LjM0IDUuNDc0LTEyLjEwMyAxNC4yMjEtMTIuMTAzIDI0LjA2MXYxLjMzM2MwIDkuODQgNC43NjMgMTguNTg3IDEyLjEwMyAyNC4wNjJhMjkuODEgMjkuODEgMCAwIDAtNC42MDMgMTUuOTM4djEuMzMzYzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMGg4LjMyNGMuNDI3IDExLjYzMSA3LjUwMyAyMS41ODcgMTcuNTM0IDI2LjE3Ny45MzEgMTAuNTAzIDQuMDg0IDMwLjE4NyAxNC43NjggNDUuNTM3YTkuOTg4IDkuOTg4IDAgMCAwIDguMjE2IDQuMjg4IDkuOTU4IDkuOTU4IDAgMCAwIDUuNzA0LTEuNzkzYzQuNTMzLTMuMTU1IDUuNjUtOS4zODggMi40OTUtMTMuOTIxLTYuNzk4LTkuNzY3LTkuNjAyLTIyLjYwOC0xMC43Ni0zMS40aDgyLjY4NWMuMjcyLjQxNC41NDUuODE4LjgxNSAxLjIxIDMuMTQyIDQuNTQxIDkuMzcyIDUuNjc5IDEzLjkxMyAyLjUzNCA0LjU0Mi0zLjE0MiA1LjY3Ny05LjM3MSAyLjUzNS0xMy45MTMtMTEuOTE5LTE3LjIyOS04Ljc4Ny0zNS44ODQgOS41ODEtNTcuMDEyIDMuMDY3LTIuNjUyIDEyLjMwNy0xMS43MzIgMTEuMjE3LTI0LjAzMy0uODI4LTkuMzQzLTcuMTA5LTE3LjE5NC0xOC42NjktMjMuMzM3YTkuODU3IDkuODU3IDAgMCAwLTEuMDYxLS40ODZjLS40NjYtLjE4Mi0xMS40MDMtNC41NzktOS43NDEtMTUuNzA2IDEuMDA3LTYuNzM3IDE0Ljc2OC04LjI3MyAyMy43NjYtNy42NjYgMjMuMTU2IDEuNTY5IDM5LjY5OCA3LjgwMyA0Ny44MzYgMTguMDI2IDUuNzUyIDcuMjI1IDcuNjA3IDE2LjYyMyA1LjY3MyAyOC43MzMtLjQxMyAyLjU4NS0uODI0IDUuMjQxLTEuMjQ1IDcuOTU5LTUuNzU2IDM3LjE5NC0xMi45MTkgODMuNDgzLTQ5Ljg3IDExNC42NjEtNC4yMjEgMy41NjEtNC43NTYgOS44Ny0xLjE5NCAxNC4wOTJhOS45OCA5Ljk4IDAgMCAwIDcuNjQ4IDMuNTUxIDkuOTU1IDkuOTU1IDAgMCAwIDYuNDQ0LTIuMzU4YzQyLjY3Mi0zNi4wMDUgNTAuODAyLTg4LjUzMyA1Ni43MzctMTI2Ljg4OC40MTUtMi42ODQuODIxLTUuMzA5IDEuMjI5LTcuODYzIDIuODM0LTE3LjcyMS0uNDU1LTMyLjY0MS05Ljc3Mi00NC4zNDV6bS0yMzIuMzA4IDQyLjYyYy01LjUxNCAwLTEwLTQuNDg2LTEwLTEwdi0xLjMzM2MwLTUuNTE0IDQuNDg2LTEwIDEwLTEwaDE1djIxLjMzM2gtMTV6bS0yLjUtNTIuNjY2YzAtNS41MTQgNC40ODYtMTAgMTAtMTBoNy41djIxLjMzM2gtNy41Yy01LjUxNCAwLTEwLTQuNDg2LTEwLTEwdi0xLjMzM3ptMTcuNSA5My45OTloLTcuNWMtNS41MTQgMC0xMC00LjQ4Ni0xMC0xMHYtMS4zMzNjMC01LjUxNCA0LjQ4Ni0xMCAxMC0xMGg3LjV2MjEuMzMzem0zMC43OTYgMjguODg3Yy01LjUxNCAwLTEwLTQuNDg2LTEwLTEwdi04LjI3MWg5MS40NTdjLS44NTEgNi42NjgtLjQzNyAxMi43ODcuNzMxIDE4LjI3MWgtODIuMTg4em03OS40ODItMTEzLjY5OGMtMy4xMjQgMjAuOTA2IDEyLjQyNyAzMy4xODQgMjEuNjI1IDM3LjA0IDUuNDQxIDIuOTY4IDcuNTUxIDUuNjQ3IDcuNzAxIDcuMTg4LjIxIDIuMTUtMi41NTMgNS42ODQtNC40NzcgNy4yNTEtLjQ4Mi4zNzgtLjkyOS44LTEuMzM1IDEuMjYxLTYuOTg3IDcuOTM2LTExLjk4MiAxNS41Mi0xNS40MzIgMjIuNjg4aC05Ny41NjRWMzBjMC01LjUxNCA0LjQ4Ni0xMCAxMC0xMGgxMjMuNzY5YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB2MTM1LjU3OWMtMy4wMzItLjM4MS02LjE1LS42OTQtOS4zODktLjkxNC0yNS4xNTktMS42OTQtNDIuMzcgNy43NDgtNDQuODk4IDI0LjY2NnoiLz48cGF0aCBkPSJNMTc5LjEyOSA4My4xNjdoLTI0LjA2YTUgNSAwIDAgMC01IDV2MjQuMDYxYTUgNSAwIDAgMCA1IDVoMjQuMDZhNSA1IDAgMCAwIDUtNVY4OC4xNjdhNSA1IDAgMCAwLTUtNXpNMTcyLjYyOSAxNDIuODZoLTEyLjU2VjEzMC44YTUgNSAwIDEgMC0xMCAwdjE3LjA2MWE1IDUgMCAwIDAgNSA1aDE3LjU2YTUgNSAwIDEgMCAwLTEwLjAwMXpNMjE2LjU2OCA4My4xNjdoLTI0LjA2YTUgNSAwIDAgMC01IDV2MjQuMDYxYTUgNSAwIDAgMCA1IDVoMjQuMDZhNSA1IDAgMCAwIDUtNVY4OC4xNjdhNSA1IDAgMCAwLTUtNXptLTUgMjQuMDYxaC0xNC4wNlY5My4xNjdoMTQuMDZ2MTQuMDYxek0yMTEuNjY5IDEyNS45MzZIMTk3LjQxYTUgNSAwIDAgMC01IDV2MTQuMjU3YTUgNSAwIDAgMCA1IDVoMTQuMjU5YTUgNSAwIDAgMCA1LTV2LTE0LjI1N2E1IDUgMCAwIDAtNS01eiIvPjwvc3ZnPg==';
269
+ // https://scanapp.org/html5-qrcode-docs/docs/apis/enums/Html5QrcodeScannerState
270
+ var Html5QrcodeScannerState;
271
+ (function (Html5QrcodeScannerState) {
272
+ // Invalid internal state, do not set to this state.
273
+ Html5QrcodeScannerState[Html5QrcodeScannerState["UNKNOWN"] = 0] = "UNKNOWN";
274
+ // Indicates the scanning is not running or user is using file based
275
+ // scanning.
276
+ Html5QrcodeScannerState[Html5QrcodeScannerState["NOT_STARTED"] = 1] = "NOT_STARTED";
277
+ // Camera scan is running.
278
+ Html5QrcodeScannerState[Html5QrcodeScannerState["SCANNING"] = 2] = "SCANNING";
279
+ // Camera scan is paused but camera is running.
280
+ Html5QrcodeScannerState[Html5QrcodeScannerState["PAUSED"] = 3] = "PAUSED";
281
+ })(Html5QrcodeScannerState || (Html5QrcodeScannerState = {}));
282
+
283
+ function createScanner(cameraElementId) {
284
+ return __awaiter(this, void 0, void 0, function () {
285
+ var window;
286
+ return __generator(this, function (_a) {
287
+ switch (_a.label) {
288
+ case 0: return [4 /*yield*/, qrPromise];
289
+ case 1:
290
+ _a.sent();
291
+ window = featheryWindow();
292
+ return [2 /*return*/, new window.Html5Qrcode(cameraElementId)];
293
+ }
294
+ });
295
+ });
296
+ }
297
+ function QRScanner(_a) {
298
+ var _b;
299
+ var _this = this;
300
+ var _c, _d, _e, _f;
301
+ var element = _a.element, fieldLabel = _a.fieldLabel, responsiveStyles = _a.responsiveStyles, editMode = _a.editMode, _g = _a.elementProps, elementProps = _g === void 0 ? {} : _g, _h = _a.disabled, disabled = _h === void 0 ? false : _h, _j = _a.onChange, onChange = _j === void 0 ? function () { } : _j, _k = _a.fieldVal, fieldVal = _k === void 0 ? '' : _k, children = _a.children;
302
+ var servar = (_c = element.servar) !== null && _c !== void 0 ? _c : {};
303
+ var cameraElementId = React__default.useId();
304
+ var scanner = React__default.useRef(undefined);
305
+ var fileInput = React__default.useRef(null);
306
+ var _l = __read(React__default.useState(''), 2), message = _l[0], setMessage = _l[1];
307
+ var _m = __read(React__default.useState(false), 2), zoomSettings = _m[0], setZoomSettings = _m[1];
308
+ var _o = __read(React__default.useState(1), 2), zoom = _o[0], setZoom = _o[1];
309
+ var _p = __read(React__default.useState([]), 2), cameraList = _p[0], setCameraList = _p[1];
310
+ var _q = __read(React__default.useState(''), 2), selectedCamera = _q[0], setSelectedCamera = _q[1];
311
+ var _r = __read(React__default.useState(Html5QrcodeScannerState.NOT_STARTED), 2), scanningState = _r[0], setScanningState = _r[1];
312
+ useEffect(function () {
313
+ if (disabled)
314
+ return;
315
+ loadQRScanner();
316
+ }, [disabled]);
317
+ useEffect(function () {
318
+ return function () {
319
+ handleStop(true);
320
+ };
321
+ }, []);
322
+ function applyZoom(value) {
323
+ var _a;
324
+ // scanner must exist
325
+ if (!scanner.current) {
326
+ return;
327
+ }
328
+ // scanner must be running
329
+ if (scanner.current.getState() !== Html5QrcodeScannerState.SCANNING) {
330
+ return;
331
+ }
332
+ // TODO: figure out how to type this properly
333
+ (_a = scanner.current) === null || _a === void 0 ? void 0 : _a.applyVideoConstraints({
334
+ zoom: value
335
+ });
336
+ }
337
+ function onScanSuccess(decodedText) {
338
+ var _a;
339
+ if ((_a = servar.metadata) === null || _a === void 0 ? void 0 : _a.close_on_scan) {
340
+ handleStop();
341
+ }
342
+ if (editMode || !decodedText)
343
+ return;
344
+ if (decodedText !== fieldVal)
345
+ onChange(decodedText);
346
+ }
347
+ var handleStart = useCallback(function (cameraId) { return __awaiter(_this, void 0, void 0, function () {
348
+ var _a, camera, result, bestCameraId, allCameras, zoomCapabilities;
349
+ var _b;
350
+ return __generator(this, function (_c) {
351
+ switch (_c.label) {
352
+ case 0:
353
+ if (disabled)
354
+ return [2 /*return*/];
355
+ if (!!scanner.current) return [3 /*break*/, 2];
356
+ _a = scanner;
357
+ return [4 /*yield*/, createScanner(cameraElementId)];
358
+ case 1:
359
+ _a.current = _c.sent();
360
+ _c.label = 2;
361
+ case 2:
362
+ setScanningState(Html5QrcodeScannerState.SCANNING);
363
+ setMessage('');
364
+ if (!(((_b = scanner.current) === null || _b === void 0 ? void 0 : _b.getState()) === Html5QrcodeScannerState.NOT_STARTED)) return [3 /*break*/, 6];
365
+ camera = cameraId !== null && cameraId !== void 0 ? cameraId : selectedCamera;
366
+ if (!!camera) return [3 /*break*/, 4];
367
+ return [4 /*yield*/, selectCamera()];
368
+ case 3:
369
+ result = _c.sent();
370
+ if (result) {
371
+ bestCameraId = result.bestCameraId, allCameras = result.allCameras;
372
+ setCameraList(allCameras);
373
+ camera = bestCameraId;
374
+ setSelectedCamera(camera);
375
+ }
376
+ if (!camera) {
377
+ setMessage('No camera found');
378
+ return [2 /*return*/];
379
+ }
380
+ _c.label = 4;
381
+ case 4: return [4 /*yield*/, scanner.current.start(camera, SCAN_CONFIG, onScanSuccess, undefined)];
382
+ case 5:
383
+ _c.sent();
384
+ zoomCapabilities = getZoomSettings(scanner.current);
385
+ if (zoomCapabilities) {
386
+ setZoomSettings(zoomCapabilities);
387
+ setZoom(zoomCapabilities.current);
388
+ applyZoom(zoomCapabilities.current);
389
+ }
390
+ else {
391
+ setZoomSettings(false);
392
+ setZoom(1);
393
+ }
394
+ _c.label = 6;
395
+ case 6: return [2 /*return*/];
396
+ }
397
+ });
398
+ }); }, [selectedCamera]);
399
+ var handleStop = useCallback(function (clearScanner) {
400
+ if (clearScanner === void 0) { clearScanner = false; }
401
+ return __awaiter(_this, void 0, void 0, function () {
402
+ var _a;
403
+ return __generator(this, function (_b) {
404
+ if (scanner.current) {
405
+ if (((_a = scanner.current) === null || _a === void 0 ? void 0 : _a.getState()) === Html5QrcodeScannerState.SCANNING) {
406
+ setCameraPreferences({
407
+ device_id: scanner.current.getRunningTrackSettings().deviceId
408
+ });
409
+ scanner.current
410
+ .stop()
411
+ .catch(function (e) {
412
+ console.error('Error stopping scanner:', e);
413
+ })
414
+ .finally(function () {
415
+ if (clearScanner) {
416
+ scanner.current = null;
417
+ }
418
+ });
419
+ }
420
+ else if (clearScanner) {
421
+ scanner.current = null;
422
+ }
423
+ }
424
+ setZoomSettings(false);
425
+ setZoom(1);
426
+ if (fileInput.current) {
427
+ fileInput.current.value = '';
428
+ }
429
+ setMessage('');
430
+ setScanningState(Html5QrcodeScannerState.NOT_STARTED);
431
+ return [2 /*return*/];
432
+ });
433
+ });
434
+ }, []);
435
+ useDeviceRotation(handleStop, {
436
+ enabled: scanningState === Html5QrcodeScannerState.SCANNING
437
+ });
438
+ function changeCamera(newCameraId) {
439
+ return __awaiter(this, void 0, void 0, function () {
440
+ return __generator(this, function (_a) {
441
+ switch (_a.label) {
442
+ case 0:
443
+ setSelectedCamera(newCameraId);
444
+ return [4 /*yield*/, handleStop()];
445
+ case 1:
446
+ _a.sent();
447
+ return [4 /*yield*/, handleStart(newCameraId)];
448
+ case 2:
449
+ _a.sent();
450
+ return [2 /*return*/];
451
+ }
452
+ });
453
+ });
454
+ }
455
+ var handleZoom = useCallback(throttle(function (value) {
456
+ applyZoom(value);
457
+ setZoom(value);
458
+ }, 10), []);
459
+ return (jsx(Fragment, { children: 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, jsx("span", __assign({ style: { pointerEvents: 'none' } }, { children: fieldLabel })), jsxs("div", __assign({ css: __assign({ position: 'relative', overflow: 'hidden', border: '1px solid #e7e7e7' }, responsiveStyles.getTarget('sub-fc')) }, { children: [jsxs("div", __assign({ style: {
460
+ width: '100%',
461
+ minHeight: 150,
462
+ textAlign: 'center',
463
+ position: 'relative',
464
+ display: 'flex',
465
+ flexDirection: 'column',
466
+ justifyContent: 'flex-end',
467
+ alignItems: 'center',
468
+ gap: 10,
469
+ paddingBottom: 16
470
+ } }, { children: [jsx("div", { id: cameraElementId, style: {
471
+ width: '100%',
472
+ aspectRatio: SCAN_CONFIG.aspectRatio.toString(),
473
+ display: scanningState !== Html5QrcodeScannerState.SCANNING
474
+ ? 'none'
475
+ : 'grid',
476
+ overflow: 'hidden',
477
+ placeContent: 'center'
478
+ } }), scanningState === Html5QrcodeScannerState.NOT_STARTED && (jsxs(Fragment, { children: [jsx("img", { width: '64', src: PLACEHOLDER_IMAGE, alt: 'Camera based scan', style: { opacity: '0.8', marginBottom: 10, marginTop: 16 } }), jsx("button", __assign({ disabled: disabled, type: 'button', onClick: function () { return handleStart(); } }, { children: fieldVal ? 'Scan Again' : 'Start Scanning' }))] })), scanningState === Html5QrcodeScannerState.SCANNING && (jsxs(Fragment, { children: [jsx(SliderStyles, { customStyles: (_b = {},
479
+ _b['.rc-slider-handle'.repeat(2)] = {
480
+ height: 30,
481
+ width: 30,
482
+ marginTop: -9,
483
+ opacity: 1,
484
+ userSelect: 'none'
485
+ },
486
+ _b['.rc-slider-track'.repeat(3)] = {
487
+ height: 12
488
+ },
489
+ _b['.rc-slider-rail'.repeat(3)] = {
490
+ height: 12
491
+ },
492
+ _b['.rc-slider'.repeat(3)] = {
493
+ height: 12,
494
+ padding: '10px 0'
495
+ },
496
+ _b) }), Boolean(zoomSettings) && (jsx("div", __assign({ style: {
497
+ display: 'flex',
498
+ alignSelf: 'stretch',
499
+ marginInline: 30,
500
+ marginBottom: 20
501
+ } }, { children: jsx(Slider, { value: zoom, min: (_d = zoomSettings === null || zoomSettings === void 0 ? void 0 : zoomSettings.min) !== null && _d !== void 0 ? _d : 0, max: (_e = zoomSettings === null || zoomSettings === void 0 ? void 0 : zoomSettings.max) !== null && _e !== void 0 ? _e : 100, step: (_f = zoomSettings === null || zoomSettings === void 0 ? void 0 : zoomSettings.step) !== null && _f !== void 0 ? _f : 0.1, onChange: handleZoom, style: {
502
+ flex: 1,
503
+ paddingBlock: 10
504
+ } }) }))), jsxs("div", __assign({ style: {
505
+ alignSelf: 'stretch',
506
+ display: 'flex',
507
+ alignItems: 'center',
508
+ justifyContent: 'space-between',
509
+ marginInline: 15
510
+ } }, { children: [jsx("button", __assign({ type: 'button', onClick: function () { return handleStop(); } }, { children: "Stop Scanning" })), cameraList.length > 1 && (jsx("select", __assign({ value: selectedCamera, onChange: function (event) { return changeCamera(event.target.value); } }, { children: cameraList.map(function (camera) { return (jsx("option", __assign({ value: camera.deviceId }, { children: camera.label }), camera.deviceId)); }) })))] }))] })), message && jsx("div", __assign({ style: { paddingTop: 16 } }, { children: message }))] })), jsx(ErrorInput, { id: servar.key, "aria-label": element.properties.aria_label })] }))] })) }));
511
+ }
512
+
513
+ export { QRScanner as default };
@@ -0,0 +1,35 @@
1
+ import { _ as __read, u as useBorder, j as jsxs, a as __assign, h as hoverStylesGuard, b as jsx, r as resetStyles } from './fthry_index.diObxaBS.js';
2
+ import { memo, useState, useRef } from 'react';
3
+ import { P as Placeholder } from './fthry_Placeholder.Dns0M5df.js';
4
+ import { I as InlineTooltip } from './fthry_InlineTooltip.CKU9xvD_.js';
5
+ import 'react/jsx-runtime';
6
+ import 'react-dom/client';
7
+ import 'stream';
8
+ import 'events';
9
+ import 'buffer';
10
+ import 'util';
11
+ import 'react-dom';
12
+ import './fthry_Overlay.CAkqWcqE.js';
13
+
14
+ function TextArea(_a) {
15
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, fieldLabel = _a.fieldLabel, _b = _a.elementProps, elementProps = _b === void 0 ? {} : _b, _c = _a.required, required = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, editMode = _a.editMode, _e = _a.onChange, onChange = _e === void 0 ? function () { } : _e, _f = _a.setRef, setRef = _f === void 0 ? function () { } : _f, _g = _a.rawValue, rawValue = _g === void 0 ? '' : _g, inlineError = _a.inlineError, _h = _a.repeatIndex, repeatIndex = _h === void 0 ? null : _h, children = _a.children;
16
+ var _j = __read(useState(false), 2), focused = _j[0], setFocused = _j[1];
17
+ var containerRef = useRef(null);
18
+ var _k = useBorder({
19
+ element: element,
20
+ error: inlineError,
21
+ breakpoint: responsiveStyles.getMobileBreakpoint()
22
+ }), borderStyles = _k.borderStyles, customBorder = _k.customBorder;
23
+ var servar = element.servar;
24
+ return (jsxs("div", __assign({ ref: containerRef, css: __assign({ maxWidth: '100%', position: 'relative', pointerEvents: editMode ? 'none' : 'auto', width: '100%', height: '100%' }, responsiveStyles.getTarget('fc')) }, elementProps, { children: [children, fieldLabel, jsxs("div", __assign({ css: __assign(__assign(__assign({ position: 'relative', width: '100%',
25
+ // Prevent placeholder overflow
26
+ overflowX: 'clip' }, responsiveStyles.getTarget('sub-fc')), (disabled ? responsiveStyles.getTarget('disabled') : {})), { '&:hover': hoverStylesGuard(disabled
27
+ ? {}
28
+ : __assign(__assign({}, responsiveStyles.getTarget('hover')), borderStyles.hover)), '&&': focused
29
+ ? __assign(__assign({}, responsiveStyles.getTarget('active')), borderStyles.active) : {} }) }, { children: [customBorder, jsx("textarea", { id: servar.key, css: __assign(__assign(__assign(__assign({ position: 'relative', height: '100%', width: '100%', border: 'none', margin: 0, backgroundColor: 'transparent', resize: 'none' }, resetStyles), { padding: '0.5rem 0.75rem' }), responsiveStyles.getTarget('field')), (focused || rawValue || !element.properties.placeholder
30
+ ? {}
31
+ : { color: 'transparent !important' })), "aria-label": element.properties.aria_label, maxLength: servar.max_length || 4096, minLength: servar.min_length, required: required, onChange: onChange, onFocus: function () { return setFocused(true); }, onBlur: function () { return setFocused(false); }, placeholder: '', disabled: disabled, value: rawValue, rows: element.styles.num_rows, ref: setRef }), jsx(Placeholder, { value: rawValue, element: element, responsiveStyles: responsiveStyles, type: 'textarea', repeatIndex: repeatIndex }), jsx(InlineTooltip, { containerRef: containerRef, id: element.id, text: element.properties.tooltipText, responsiveStyles: responsiveStyles, repeat: element.repeat })] }))] })));
32
+ }
33
+ var index = memo(TextArea);
34
+
35
+ export { index as default };