@verbb/formie-browser 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE.md +40 -0
  3. package/README.md +34 -0
  4. package/dist/chunks/address-finder-DfMCiW89.js +47 -0
  5. package/dist/chunks/api-CbqEMQT5.js +181 -0
  6. package/dist/chunks/api-DE7LfK-R.js +960 -0
  7. package/dist/chunks/api-DOfDzYC_.js +538 -0
  8. package/dist/chunks/async-B3DUf1GZ.js +26 -0
  9. package/dist/chunks/bpoint-Ciy3yY9Q.js +34 -0
  10. package/dist/chunks/calculations-CkYAqO_-.js +197 -0
  11. package/dist/chunks/captcha-eu-DnOWhMwr.js +43 -0
  12. package/dist/chunks/checkbox-radio-0x7Tc0br.js +197 -0
  13. package/dist/chunks/chunk-K6L4z4UQ.js +24 -0
  14. package/dist/chunks/conditions-4fXKhEJS.js +609 -0
  15. package/dist/chunks/date-picker-B6iZkjHS.js +6204 -0
  16. package/dist/chunks/debug-KnZeKYBI.js +39 -0
  17. package/dist/chunks/dist-D09GnXMW.js +2663 -0
  18. package/dist/chunks/event-names-DamGPtXR.js +51 -0
  19. package/dist/chunks/eway-DEAYcwT0.js +86 -0
  20. package/dist/chunks/field-references.keys-BpBZ_quS.js +24 -0
  21. package/dist/chunks/field-references.resolver-Ba6xhiJC.js +183 -0
  22. package/dist/chunks/file-upload-Bh63PQSE.js +430 -0
  23. package/dist/chunks/friendly-captcha-v1-CqO4WVre.js +40 -0
  24. package/dist/chunks/friendly-captcha-v2-CyykcJcM.js +47 -0
  25. package/dist/chunks/friendly-challenge-Dg8XkStd.js +1101 -0
  26. package/dist/chunks/go-cardless-CuND59rR.js +26 -0
  27. package/dist/chunks/google-address--uR8WDSm.js +208 -0
  28. package/dist/chunks/hcaptcha-CmaFUesv.js +72 -0
  29. package/dist/chunks/hidden-CYnZYple.js +36 -0
  30. package/dist/chunks/http-18nn97DZ.js +29 -0
  31. package/dist/chunks/i18n-vUh-KGiH.js +55 -0
  32. package/dist/chunks/loqate-BICNJlVK.js +97 -0
  33. package/dist/chunks/mollie-DwlsgHZ1.js +26 -0
  34. package/dist/chunks/moneris-B_IFZFTx.js +159 -0
  35. package/dist/chunks/opayo-U2x_TOII.js +192 -0
  36. package/dist/chunks/paddle-BqXFrc79.js +75 -0
  37. package/dist/chunks/paypal-Cn_DYGDb.js +121 -0
  38. package/dist/chunks/payway-Rnq796eC.js +75 -0
  39. package/dist/chunks/phone-country-B6Me4lK0.js +3317 -0
  40. package/dist/chunks/place-kit-ldUl-u9w.js +56 -0
  41. package/dist/chunks/placekit-autocomplete.esm-D-lGeaZl.js +1771 -0
  42. package/dist/chunks/recaptcha-enterprise-DPJNyv1X.js +72 -0
  43. package/dist/chunks/recaptcha-shared-DTI4qWVR.js +22 -0
  44. package/dist/chunks/recaptcha-v2-checkbox-zFjpvJ5c.js +49 -0
  45. package/dist/chunks/recaptcha-v2-invisible-CnYtkNvz.js +62 -0
  46. package/dist/chunks/recaptcha-v3-EAlWhnkX.js +33 -0
  47. package/dist/chunks/repeater-CXD1eLSn.js +151 -0
  48. package/dist/chunks/rich-text-DkmZRhGj.js +442 -0
  49. package/dist/chunks/scripts-BGD_iU_6.js +41 -0
  50. package/dist/chunks/sdk-B7u9fTlP.js +2103 -0
  51. package/dist/chunks/shared-DC6_1u8X.js +85 -0
  52. package/dist/chunks/signature-E9KyYXS1.js +765 -0
  53. package/dist/chunks/snaptcha-CCDunGeb.js +8 -0
  54. package/dist/chunks/square-BLqK51rS.js +61 -0
  55. package/dist/chunks/stripe-B8gHpZNC.js +273 -0
  56. package/dist/chunks/styles-BIh6g7V_.js +22 -0
  57. package/dist/chunks/summary-EcNE0cvg.js +191 -0
  58. package/dist/chunks/table-yxEDL6kA.js +124 -0
  59. package/dist/chunks/text-limit-D0H_Ca2c.js +179 -0
  60. package/dist/chunks/theme-classes-vSHpdCUO.js +59 -0
  61. package/dist/chunks/turnstile-DP0bdR7T.js +68 -0
  62. package/dist/chunks/utils-ByrEVYrJ.js +49584 -0
  63. package/dist/css/formie-base.css +78 -0
  64. package/dist/css/formie-theme.css +19 -0
  65. package/dist/css/formie.css +2 -0
  66. package/dist/css/theme/_buttons.css +249 -0
  67. package/dist/css/theme/_loading.css +37 -0
  68. package/dist/css/theme/_messages.css +39 -0
  69. package/dist/css/theme/_progress.css +62 -0
  70. package/dist/css/theme/_tokens.css +361 -0
  71. package/dist/css/theme/_typography.css +70 -0
  72. package/dist/css/theme/fields/_address.css +17 -0
  73. package/dist/css/theme/fields/_check-radio.css +108 -0
  74. package/dist/css/theme/fields/_file.css +58 -0
  75. package/dist/css/theme/fields/_group.css +13 -0
  76. package/dist/css/theme/fields/_input.css +48 -0
  77. package/dist/css/theme/fields/_nested.css +19 -0
  78. package/dist/css/theme/fields/_repeater.css +69 -0
  79. package/dist/css/theme/fields/_rich-text.css +201 -0
  80. package/dist/css/theme/fields/_select.css +37 -0
  81. package/dist/css/theme/fields/_signature.css +39 -0
  82. package/dist/css/theme/fields/_summary.css +53 -0
  83. package/dist/css/theme/fields/_table.css +121 -0
  84. package/dist/css/theme/fields/_text-limit.css +10 -0
  85. package/dist/css/theme/forms/_field.css +62 -0
  86. package/dist/css/theme/forms/_form.css +166 -0
  87. package/dist/css/theme/integrations/_payment-modal.css +32 -0
  88. package/dist/css/theme/integrations/_paypal.css +10 -0
  89. package/dist/css/theme/integrations/_payway.css +10 -0
  90. package/dist/css/theme/integrations/_stripe.css +24 -0
  91. package/dist/css/theme/utilities/_accessibility.css +13 -0
  92. package/dist/css/theme-base/_controls.css +41 -0
  93. package/dist/css/theme-base/_primitives.css +34 -0
  94. package/dist/index.d.ts +30 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +3206 -0
  97. package/dist/js/compatibility/dom-adapter.d.ts +12 -0
  98. package/dist/js/compatibility/dom-adapter.d.ts.map +1 -0
  99. package/dist/js/compatibility/event-map.d.ts +25 -0
  100. package/dist/js/compatibility/event-map.d.ts.map +1 -0
  101. package/dist/js/compatibility/validator-adapter.d.ts +17 -0
  102. package/dist/js/compatibility/validator-adapter.d.ts.map +1 -0
  103. package/dist/js/contracts/client.d.ts +40 -0
  104. package/dist/js/contracts/client.d.ts.map +1 -0
  105. package/dist/js/contracts/common.d.ts +5 -0
  106. package/dist/js/contracts/common.d.ts.map +1 -0
  107. package/dist/js/contracts/modules.d.ts +47 -0
  108. package/dist/js/contracts/modules.d.ts.map +1 -0
  109. package/dist/js/contracts/schema.d.ts +79 -0
  110. package/dist/js/contracts/schema.d.ts.map +1 -0
  111. package/dist/js/contracts/theme.d.ts +2 -0
  112. package/dist/js/contracts/theme.d.ts.map +1 -0
  113. package/dist/js/core/create-formie-client.d.ts +3 -0
  114. package/dist/js/core/create-formie-client.d.ts.map +1 -0
  115. package/dist/js/core/dom-events.d.ts +2 -0
  116. package/dist/js/core/dom-events.d.ts.map +1 -0
  117. package/dist/js/core/formie.d.ts +27 -0
  118. package/dist/js/core/formie.d.ts.map +1 -0
  119. package/dist/js/core/hydrate-modules.d.ts +22 -0
  120. package/dist/js/core/hydrate-modules.d.ts.map +1 -0
  121. package/dist/js/core/page-client-event.d.ts +9 -0
  122. package/dist/js/core/page-client-event.d.ts.map +1 -0
  123. package/dist/js/core/page-tab-errors.d.ts +2 -0
  124. package/dist/js/core/page-tab-errors.d.ts.map +1 -0
  125. package/dist/js/core/submit-flow.d.ts +21 -0
  126. package/dist/js/core/submit-flow.d.ts.map +1 -0
  127. package/dist/js/core/submit-result-state.d.ts +8 -0
  128. package/dist/js/core/submit-result-state.d.ts.map +1 -0
  129. package/dist/js/core/submit-result-ui.d.ts +10 -0
  130. package/dist/js/core/submit-result-ui.d.ts.map +1 -0
  131. package/dist/js/events/event-bus.d.ts +21 -0
  132. package/dist/js/events/event-bus.d.ts.map +1 -0
  133. package/dist/js/modules/address/address-finder.d.ts +2 -0
  134. package/dist/js/modules/address/address-finder.d.ts.map +1 -0
  135. package/dist/js/modules/address/api.d.ts +8 -0
  136. package/dist/js/modules/address/api.d.ts.map +1 -0
  137. package/dist/js/modules/address/constants.d.ts +15 -0
  138. package/dist/js/modules/address/constants.d.ts.map +1 -0
  139. package/dist/js/modules/address/factories.d.ts +35 -0
  140. package/dist/js/modules/address/factories.d.ts.map +1 -0
  141. package/dist/js/modules/address/google-address.d.ts +2 -0
  142. package/dist/js/modules/address/google-address.d.ts.map +1 -0
  143. package/dist/js/modules/address/host.d.ts +30 -0
  144. package/dist/js/modules/address/host.d.ts.map +1 -0
  145. package/dist/js/modules/address/index.d.ts +3 -0
  146. package/dist/js/modules/address/index.d.ts.map +1 -0
  147. package/dist/js/modules/address/loqate.d.ts +2 -0
  148. package/dist/js/modules/address/loqate.d.ts.map +1 -0
  149. package/dist/js/modules/address/place-kit.d.ts +2 -0
  150. package/dist/js/modules/address/place-kit.d.ts.map +1 -0
  151. package/dist/js/modules/captchas/api.d.ts +9 -0
  152. package/dist/js/modules/captchas/api.d.ts.map +1 -0
  153. package/dist/js/modules/captchas/captcha-eu.d.ts +2 -0
  154. package/dist/js/modules/captchas/captcha-eu.d.ts.map +1 -0
  155. package/dist/js/modules/captchas/constants.d.ts +5 -0
  156. package/dist/js/modules/captchas/constants.d.ts.map +1 -0
  157. package/dist/js/modules/captchas/factories.d.ts +63 -0
  158. package/dist/js/modules/captchas/factories.d.ts.map +1 -0
  159. package/dist/js/modules/captchas/friendly-captcha-v1.d.ts +2 -0
  160. package/dist/js/modules/captchas/friendly-captcha-v1.d.ts.map +1 -0
  161. package/dist/js/modules/captchas/friendly-captcha-v2.d.ts +2 -0
  162. package/dist/js/modules/captchas/friendly-captcha-v2.d.ts.map +1 -0
  163. package/dist/js/modules/captchas/hcaptcha.d.ts +2 -0
  164. package/dist/js/modules/captchas/hcaptcha.d.ts.map +1 -0
  165. package/dist/js/modules/captchas/host.d.ts +78 -0
  166. package/dist/js/modules/captchas/host.d.ts.map +1 -0
  167. package/dist/js/modules/captchas/index.d.ts +3 -0
  168. package/dist/js/modules/captchas/index.d.ts.map +1 -0
  169. package/dist/js/modules/captchas/recaptcha-enterprise.d.ts +2 -0
  170. package/dist/js/modules/captchas/recaptcha-enterprise.d.ts.map +1 -0
  171. package/dist/js/modules/captchas/recaptcha-shared.d.ts +26 -0
  172. package/dist/js/modules/captchas/recaptcha-shared.d.ts.map +1 -0
  173. package/dist/js/modules/captchas/recaptcha-v2-checkbox.d.ts +2 -0
  174. package/dist/js/modules/captchas/recaptcha-v2-checkbox.d.ts.map +1 -0
  175. package/dist/js/modules/captchas/recaptcha-v2-invisible.d.ts +2 -0
  176. package/dist/js/modules/captchas/recaptcha-v2-invisible.d.ts.map +1 -0
  177. package/dist/js/modules/captchas/recaptcha-v3.d.ts +2 -0
  178. package/dist/js/modules/captchas/recaptcha-v3.d.ts.map +1 -0
  179. package/dist/js/modules/captchas/snaptcha.d.ts +2 -0
  180. package/dist/js/modules/captchas/snaptcha.d.ts.map +1 -0
  181. package/dist/js/modules/captchas/turnstile.d.ts +2 -0
  182. package/dist/js/modules/captchas/turnstile.d.ts.map +1 -0
  183. package/dist/js/modules/captchas/utils.d.ts +13 -0
  184. package/dist/js/modules/captchas/utils.d.ts.map +1 -0
  185. package/dist/js/modules/fields/calculations.d.ts +3 -0
  186. package/dist/js/modules/fields/calculations.d.ts.map +1 -0
  187. package/dist/js/modules/fields/checkbox-radio.d.ts +3 -0
  188. package/dist/js/modules/fields/checkbox-radio.d.ts.map +1 -0
  189. package/dist/js/modules/fields/conditions/config.d.ts +5 -0
  190. package/dist/js/modules/fields/conditions/config.d.ts.map +1 -0
  191. package/dist/js/modules/fields/conditions/effects.d.ts +2 -0
  192. package/dist/js/modules/fields/conditions/effects.d.ts.map +1 -0
  193. package/dist/js/modules/fields/conditions/evaluator.d.ts +6 -0
  194. package/dist/js/modules/fields/conditions/evaluator.d.ts.map +1 -0
  195. package/dist/js/modules/fields/conditions/references.d.ts +5 -0
  196. package/dist/js/modules/fields/conditions/references.d.ts.map +1 -0
  197. package/dist/js/modules/fields/conditions/transforms.d.ts +3 -0
  198. package/dist/js/modules/fields/conditions/transforms.d.ts.map +1 -0
  199. package/dist/js/modules/fields/conditions/types.d.ts +30 -0
  200. package/dist/js/modules/fields/conditions/types.d.ts.map +1 -0
  201. package/dist/js/modules/fields/conditions/values.d.ts +5 -0
  202. package/dist/js/modules/fields/conditions/values.d.ts.map +1 -0
  203. package/dist/js/modules/fields/conditions.d.ts +3 -0
  204. package/dist/js/modules/fields/conditions.d.ts.map +1 -0
  205. package/dist/js/modules/fields/date-picker.d.ts +3 -0
  206. package/dist/js/modules/fields/date-picker.d.ts.map +1 -0
  207. package/dist/js/modules/fields/file-upload.d.ts +3 -0
  208. package/dist/js/modules/fields/file-upload.d.ts.map +1 -0
  209. package/dist/js/modules/fields/hidden.d.ts +3 -0
  210. package/dist/js/modules/fields/hidden.d.ts.map +1 -0
  211. package/dist/js/modules/fields/index.d.ts +3 -0
  212. package/dist/js/modules/fields/index.d.ts.map +1 -0
  213. package/dist/js/modules/fields/phone-country.d.ts +3 -0
  214. package/dist/js/modules/fields/phone-country.d.ts.map +1 -0
  215. package/dist/js/modules/fields/repeater.d.ts +3 -0
  216. package/dist/js/modules/fields/repeater.d.ts.map +1 -0
  217. package/dist/js/modules/fields/rich-text.d.ts +3 -0
  218. package/dist/js/modules/fields/rich-text.d.ts.map +1 -0
  219. package/dist/js/modules/fields/shared.d.ts +20 -0
  220. package/dist/js/modules/fields/shared.d.ts.map +1 -0
  221. package/dist/js/modules/fields/signature.d.ts +3 -0
  222. package/dist/js/modules/fields/signature.d.ts.map +1 -0
  223. package/dist/js/modules/fields/summary.d.ts +3 -0
  224. package/dist/js/modules/fields/summary.d.ts.map +1 -0
  225. package/dist/js/modules/fields/table.d.ts +3 -0
  226. package/dist/js/modules/fields/table.d.ts.map +1 -0
  227. package/dist/js/modules/fields/text-limit.d.ts +3 -0
  228. package/dist/js/modules/fields/text-limit.d.ts.map +1 -0
  229. package/dist/js/modules/loader.d.ts +11 -0
  230. package/dist/js/modules/loader.d.ts.map +1 -0
  231. package/dist/js/modules/payments/api.d.ts +8 -0
  232. package/dist/js/modules/payments/api.d.ts.map +1 -0
  233. package/dist/js/modules/payments/bpoint.d.ts +2 -0
  234. package/dist/js/modules/payments/bpoint.d.ts.map +1 -0
  235. package/dist/js/modules/payments/constants.d.ts +5 -0
  236. package/dist/js/modules/payments/constants.d.ts.map +1 -0
  237. package/dist/js/modules/payments/eway.d.ts +9 -0
  238. package/dist/js/modules/payments/eway.d.ts.map +1 -0
  239. package/dist/js/modules/payments/factories.d.ts +54 -0
  240. package/dist/js/modules/payments/factories.d.ts.map +1 -0
  241. package/dist/js/modules/payments/go-cardless.d.ts +2 -0
  242. package/dist/js/modules/payments/go-cardless.d.ts.map +1 -0
  243. package/dist/js/modules/payments/host.d.ts +70 -0
  244. package/dist/js/modules/payments/host.d.ts.map +1 -0
  245. package/dist/js/modules/payments/index.d.ts +3 -0
  246. package/dist/js/modules/payments/index.d.ts.map +1 -0
  247. package/dist/js/modules/payments/mollie.d.ts +2 -0
  248. package/dist/js/modules/payments/mollie.d.ts.map +1 -0
  249. package/dist/js/modules/payments/moneris.d.ts +2 -0
  250. package/dist/js/modules/payments/moneris.d.ts.map +1 -0
  251. package/dist/js/modules/payments/opayo.d.ts +25 -0
  252. package/dist/js/modules/payments/opayo.d.ts.map +1 -0
  253. package/dist/js/modules/payments/paddle.d.ts +2 -0
  254. package/dist/js/modules/payments/paddle.d.ts.map +1 -0
  255. package/dist/js/modules/payments/paypal.d.ts +2 -0
  256. package/dist/js/modules/payments/paypal.d.ts.map +1 -0
  257. package/dist/js/modules/payments/payway.d.ts +2 -0
  258. package/dist/js/modules/payments/payway.d.ts.map +1 -0
  259. package/dist/js/modules/payments/square.d.ts +2 -0
  260. package/dist/js/modules/payments/square.d.ts.map +1 -0
  261. package/dist/js/modules/payments/stripe.d.ts +2 -0
  262. package/dist/js/modules/payments/stripe.d.ts.map +1 -0
  263. package/dist/js/modules/payments/utils.d.ts +17 -0
  264. package/dist/js/modules/payments/utils.d.ts.map +1 -0
  265. package/dist/js/modules/registry.d.ts +9 -0
  266. package/dist/js/modules/registry.d.ts.map +1 -0
  267. package/dist/js/modules/styles.d.ts +2 -0
  268. package/dist/js/modules/styles.d.ts.map +1 -0
  269. package/dist/js/submit/pipeline.d.ts +18 -0
  270. package/dist/js/submit/pipeline.d.ts.map +1 -0
  271. package/dist/js/theme/theme-classes.d.ts +10 -0
  272. package/dist/js/theme/theme-classes.d.ts.map +1 -0
  273. package/dist/js/transport/forms-api.d.ts +11 -0
  274. package/dist/js/transport/forms-api.d.ts.map +1 -0
  275. package/dist/js/utils/async.d.ts +8 -0
  276. package/dist/js/utils/async.d.ts.map +1 -0
  277. package/dist/js/utils/debug.d.ts +10 -0
  278. package/dist/js/utils/debug.d.ts.map +1 -0
  279. package/dist/js/utils/event-names.d.ts +13 -0
  280. package/dist/js/utils/event-names.d.ts.map +1 -0
  281. package/dist/js/utils/field-references.d.ts +6 -0
  282. package/dist/js/utils/field-references.d.ts.map +1 -0
  283. package/dist/js/utils/field-references.keys.d.ts +4 -0
  284. package/dist/js/utils/field-references.keys.d.ts.map +1 -0
  285. package/dist/js/utils/field-references.parser.d.ts +3 -0
  286. package/dist/js/utils/field-references.parser.d.ts.map +1 -0
  287. package/dist/js/utils/field-references.registry.d.ts +3 -0
  288. package/dist/js/utils/field-references.registry.d.ts.map +1 -0
  289. package/dist/js/utils/field-references.resolver.d.ts +4 -0
  290. package/dist/js/utils/field-references.resolver.d.ts.map +1 -0
  291. package/dist/js/utils/field-references.types.d.ts +27 -0
  292. package/dist/js/utils/field-references.types.d.ts.map +1 -0
  293. package/dist/js/utils/fields.d.ts +5 -0
  294. package/dist/js/utils/fields.d.ts.map +1 -0
  295. package/dist/js/utils/http.d.ts +9 -0
  296. package/dist/js/utils/http.d.ts.map +1 -0
  297. package/dist/js/utils/i18n.d.ts +7 -0
  298. package/dist/js/utils/i18n.d.ts.map +1 -0
  299. package/dist/js/utils/scripts.d.ts +13 -0
  300. package/dist/js/utils/scripts.d.ts.map +1 -0
  301. package/dist/js/utils/unload-warning.d.ts +10 -0
  302. package/dist/js/utils/unload-warning.d.ts.map +1 -0
  303. package/dist/js/validation/rules/email.d.ts +4 -0
  304. package/dist/js/validation/rules/email.d.ts.map +1 -0
  305. package/dist/js/validation/rules/match.d.ts +4 -0
  306. package/dist/js/validation/rules/match.d.ts.map +1 -0
  307. package/dist/js/validation/rules/number.d.ts +4 -0
  308. package/dist/js/validation/rules/number.d.ts.map +1 -0
  309. package/dist/js/validation/rules/required.d.ts +4 -0
  310. package/dist/js/validation/rules/required.d.ts.map +1 -0
  311. package/dist/js/validation/rules/shared.d.ts +7 -0
  312. package/dist/js/validation/rules/shared.d.ts.map +1 -0
  313. package/dist/js/validation/rules/url.d.ts +4 -0
  314. package/dist/js/validation/rules/url.d.ts.map +1 -0
  315. package/dist/js/validation/rules.d.ts +10 -0
  316. package/dist/js/validation/rules.d.ts.map +1 -0
  317. package/dist/js/validation/types.d.ts +44 -0
  318. package/dist/js/validation/types.d.ts.map +1 -0
  319. package/dist/js/validation/validator.d.ts +53 -0
  320. package/dist/js/validation/validator.d.ts.map +1 -0
  321. package/package.json +78 -0
  322. package/src/css/formie-base.css +78 -0
  323. package/src/css/formie-theme.css +19 -0
  324. package/src/css/formie.css +2 -0
  325. package/src/css/theme/_buttons.css +249 -0
  326. package/src/css/theme/_loading.css +37 -0
  327. package/src/css/theme/_messages.css +39 -0
  328. package/src/css/theme/_progress.css +62 -0
  329. package/src/css/theme/_tokens.css +361 -0
  330. package/src/css/theme/_typography.css +70 -0
  331. package/src/css/theme/fields/_address.css +17 -0
  332. package/src/css/theme/fields/_check-radio.css +108 -0
  333. package/src/css/theme/fields/_file.css +58 -0
  334. package/src/css/theme/fields/_group.css +13 -0
  335. package/src/css/theme/fields/_input.css +48 -0
  336. package/src/css/theme/fields/_nested.css +19 -0
  337. package/src/css/theme/fields/_repeater.css +69 -0
  338. package/src/css/theme/fields/_rich-text.css +201 -0
  339. package/src/css/theme/fields/_select.css +37 -0
  340. package/src/css/theme/fields/_signature.css +39 -0
  341. package/src/css/theme/fields/_summary.css +53 -0
  342. package/src/css/theme/fields/_table.css +121 -0
  343. package/src/css/theme/fields/_text-limit.css +10 -0
  344. package/src/css/theme/forms/_field.css +62 -0
  345. package/src/css/theme/forms/_form.css +166 -0
  346. package/src/css/theme/integrations/_payment-modal.css +32 -0
  347. package/src/css/theme/integrations/_paypal.css +10 -0
  348. package/src/css/theme/integrations/_payway.css +10 -0
  349. package/src/css/theme/integrations/_stripe.css +24 -0
  350. package/src/css/theme/utilities/_accessibility.css +13 -0
  351. package/src/css/theme-base/_controls.css +41 -0
  352. package/src/css/theme-base/_primitives.css +34 -0
  353. package/src/icons/rich-text/aligncenter.svg +6 -0
  354. package/src/icons/rich-text/alignleft.svg +6 -0
  355. package/src/icons/rich-text/alignright.svg +6 -0
  356. package/src/icons/rich-text/bold.svg +4 -0
  357. package/src/icons/rich-text/clear.svg +6 -0
  358. package/src/icons/rich-text/code.svg +4 -0
  359. package/src/icons/rich-text/heading1.svg +3 -0
  360. package/src/icons/rich-text/heading2.svg +3 -0
  361. package/src/icons/rich-text/image.svg +6 -0
  362. package/src/icons/rich-text/italic.svg +5 -0
  363. package/src/icons/rich-text/line.svg +3 -0
  364. package/src/icons/rich-text/link.svg +4 -0
  365. package/src/icons/rich-text/olist.svg +8 -0
  366. package/src/icons/rich-text/paragraph.svg +3 -0
  367. package/src/icons/rich-text/quote.svg +4 -0
  368. package/src/icons/rich-text/strikethrough.svg +4 -0
  369. package/src/icons/rich-text/ulist.svg +8 -0
  370. package/src/icons/rich-text/underline.svg +4 -0
  371. package/src/index.ts +125 -0
  372. package/src/js/compatibility/dom-adapter.ts +129 -0
  373. package/src/js/compatibility/event-map.ts +72 -0
  374. package/src/js/compatibility/validator-adapter.ts +105 -0
  375. package/src/js/contracts/client.ts +43 -0
  376. package/src/js/contracts/common.ts +14 -0
  377. package/src/js/contracts/modules.ts +53 -0
  378. package/src/js/contracts/schema.ts +83 -0
  379. package/src/js/contracts/theme.ts +1 -0
  380. package/src/js/core/create-formie-client.ts +1519 -0
  381. package/src/js/core/dom-events.ts +8 -0
  382. package/src/js/core/formie.ts +242 -0
  383. package/src/js/core/hydrate-modules.ts +102 -0
  384. package/src/js/core/page-client-event.ts +129 -0
  385. package/src/js/core/page-tab-errors.ts +37 -0
  386. package/src/js/core/submit-flow.ts +120 -0
  387. package/src/js/core/submit-result-state.ts +597 -0
  388. package/src/js/core/submit-result-ui.ts +448 -0
  389. package/src/js/events/event-bus.ts +109 -0
  390. package/src/js/modules/address/address-finder.ts +85 -0
  391. package/src/js/modules/address/api.ts +22 -0
  392. package/src/js/modules/address/constants.ts +15 -0
  393. package/src/js/modules/address/factories.ts +203 -0
  394. package/src/js/modules/address/google-address.ts +345 -0
  395. package/src/js/modules/address/host.ts +137 -0
  396. package/src/js/modules/address/index.ts +10 -0
  397. package/src/js/modules/address/loqate.ts +128 -0
  398. package/src/js/modules/address/place-kit.ts +94 -0
  399. package/src/js/modules/captchas/api.ts +25 -0
  400. package/src/js/modules/captchas/captcha-eu.ts +86 -0
  401. package/src/js/modules/captchas/constants.ts +4 -0
  402. package/src/js/modules/captchas/factories.ts +485 -0
  403. package/src/js/modules/captchas/friendly-captcha-v1.ts +65 -0
  404. package/src/js/modules/captchas/friendly-captcha-v2.ts +84 -0
  405. package/src/js/modules/captchas/hcaptcha.ts +153 -0
  406. package/src/js/modules/captchas/host.ts +448 -0
  407. package/src/js/modules/captchas/index.ts +16 -0
  408. package/src/js/modules/captchas/recaptcha-enterprise.ts +138 -0
  409. package/src/js/modules/captchas/recaptcha-shared.ts +69 -0
  410. package/src/js/modules/captchas/recaptcha-v2-checkbox.ts +72 -0
  411. package/src/js/modules/captchas/recaptcha-v2-invisible.ts +108 -0
  412. package/src/js/modules/captchas/recaptcha-v3.ts +62 -0
  413. package/src/js/modules/captchas/snaptcha.ts +10 -0
  414. package/src/js/modules/captchas/turnstile.ts +131 -0
  415. package/src/js/modules/captchas/utils.ts +85 -0
  416. package/src/js/modules/fields/calculations.ts +273 -0
  417. package/src/js/modules/fields/checkbox-radio.ts +295 -0
  418. package/src/js/modules/fields/conditions/config.ts +79 -0
  419. package/src/js/modules/fields/conditions/effects.ts +166 -0
  420. package/src/js/modules/fields/conditions/evaluator.ts +44 -0
  421. package/src/js/modules/fields/conditions/references.ts +165 -0
  422. package/src/js/modules/fields/conditions/transforms.ts +206 -0
  423. package/src/js/modules/fields/conditions/types.ts +33 -0
  424. package/src/js/modules/fields/conditions/values.ts +115 -0
  425. package/src/js/modules/fields/conditions.ts +229 -0
  426. package/src/js/modules/fields/date-picker.ts +272 -0
  427. package/src/js/modules/fields/file-upload.ts +628 -0
  428. package/src/js/modules/fields/hidden.ts +58 -0
  429. package/src/js/modules/fields/index.ts +19 -0
  430. package/src/js/modules/fields/phone-country.ts +226 -0
  431. package/src/js/modules/fields/repeater.ts +231 -0
  432. package/src/js/modules/fields/rich-text.ts +217 -0
  433. package/src/js/modules/fields/shared.ts +238 -0
  434. package/src/js/modules/fields/signature.ts +202 -0
  435. package/src/js/modules/fields/summary.ts +272 -0
  436. package/src/js/modules/fields/table.ts +197 -0
  437. package/src/js/modules/fields/text-limit.ts +280 -0
  438. package/src/js/modules/loader.ts +331 -0
  439. package/src/js/modules/payments/api.ts +20 -0
  440. package/src/js/modules/payments/bpoint.ts +48 -0
  441. package/src/js/modules/payments/constants.ts +17 -0
  442. package/src/js/modules/payments/eway.ts +132 -0
  443. package/src/js/modules/payments/factories.ts +332 -0
  444. package/src/js/modules/payments/go-cardless.ts +37 -0
  445. package/src/js/modules/payments/host.ts +459 -0
  446. package/src/js/modules/payments/index.ts +17 -0
  447. package/src/js/modules/payments/mollie.ts +38 -0
  448. package/src/js/modules/payments/moneris.ts +216 -0
  449. package/src/js/modules/payments/opayo.ts +272 -0
  450. package/src/js/modules/payments/paddle.ts +111 -0
  451. package/src/js/modules/payments/payment.ts +183 -0
  452. package/src/js/modules/payments/paypal.ts +214 -0
  453. package/src/js/modules/payments/payway.ts +114 -0
  454. package/src/js/modules/payments/square.ts +106 -0
  455. package/src/js/modules/payments/stripe.ts +426 -0
  456. package/src/js/modules/payments/stub-payment-module.ts +87 -0
  457. package/src/js/modules/payments/utils.ts +60 -0
  458. package/src/js/modules/registry.ts +38 -0
  459. package/src/js/modules/styles.ts +29 -0
  460. package/src/js/submit/pipeline.ts +514 -0
  461. package/src/js/theme/theme-classes.ts +106 -0
  462. package/src/js/transport/forms-api.ts +345 -0
  463. package/src/js/utils/async.ts +81 -0
  464. package/src/js/utils/debug.ts +59 -0
  465. package/src/js/utils/event-names.ts +60 -0
  466. package/src/js/utils/field-references.keys.ts +47 -0
  467. package/src/js/utils/field-references.parser.ts +121 -0
  468. package/src/js/utils/field-references.registry.ts +50 -0
  469. package/src/js/utils/field-references.resolver.ts +115 -0
  470. package/src/js/utils/field-references.ts +11 -0
  471. package/src/js/utils/field-references.types.ts +31 -0
  472. package/src/js/utils/fields.ts +58 -0
  473. package/src/js/utils/http.ts +51 -0
  474. package/src/js/utils/i18n.ts +98 -0
  475. package/src/js/utils/scripts.ts +84 -0
  476. package/src/js/utils/unload-warning.ts +190 -0
  477. package/src/js/validation/rules/email.ts +18 -0
  478. package/src/js/validation/rules/match.ts +26 -0
  479. package/src/js/validation/rules/minmax.ts +47 -0
  480. package/src/js/validation/rules/number.ts +55 -0
  481. package/src/js/validation/rules/pattern.ts +29 -0
  482. package/src/js/validation/rules/required.ts +30 -0
  483. package/src/js/validation/rules/shared.ts +47 -0
  484. package/src/js/validation/rules/url.ts +23 -0
  485. package/src/js/validation/rules.ts +16 -0
  486. package/src/js/validation/types.ts +50 -0
  487. package/src/js/validation/validator.ts +643 -0
  488. package/src/vendor.d.ts +100 -0
  489. package/src/vite-env.d.ts +22 -0
  490. package/vite-dev.mjs +22 -0
@@ -0,0 +1,1771 @@
1
+ //#region ../../node_modules/@placekit/autocomplete-js/dist/placekit-autocomplete.esm.mjs
2
+ /*! @placekit/autocomplete-js v2.2.1 | © placekit.io | MIT license | https://github.com/placekit/autocomplete-js#readme */
3
+ var extensions = /* @__PURE__ */ new Map();
4
+ function getUserAgent() {
5
+ const chunks = [];
6
+ if (typeof window !== "undefined" && navigator.userAgent) chunks.push(navigator.userAgent);
7
+ chunks.push(`PlaceKit/2.3.0 (Client=JavaScript)`);
8
+ if (typeof process !== "undefined" && process.version) chunks.push(`NodeJS/${process.version}`);
9
+ return chunks.join(" ");
10
+ }
11
+ function placekit(apiKey, options = {}) {
12
+ if (!["string", "undefined"].includes(typeof apiKey)) throw Error("PlaceKit: `apiKey` argument is invalid, expected a string.");
13
+ else if (!apiKey) console.warn("PlaceKit: missing or empty `apiKey` argument.");
14
+ let currentHost = 0;
15
+ const hosts = [`https://api.placekit.co`];
16
+ let hasGeolocation = false;
17
+ const globalParams = { maxResults: 5 };
18
+ if (typeof window !== "undefined" && navigator.language) globalParams.language = navigator.language.slice(0, 2);
19
+ const userAgent = getUserAgent();
20
+ function request(method = "POST", resource = "", opts = {}) {
21
+ const { timeout, forwardIP, ...params } = opts;
22
+ const controller = new AbortController();
23
+ const id = typeof timeout !== "undefined" ? setTimeout(() => controller.abort(), timeout) : void 0;
24
+ const url = new URL(resource.trim().replace(/^\/+/, ""), hosts[currentHost]);
25
+ if (["GET", "HEAD"].includes(method) && typeof params !== "undefined") Object.keys(params).forEach((k) => url.searchParams.append(k, params[k]));
26
+ const headers = {
27
+ "Content-Type": "application/json; charset=UTF-8",
28
+ "User-Agent": userAgent,
29
+ "x-placekit-api-key": apiKey
30
+ };
31
+ if (forwardIP) headers["x-forwarded-for"] = forwardIP;
32
+ return fetch(url, {
33
+ method,
34
+ headers,
35
+ signal: controller.signal,
36
+ body: !["GET", "HEAD"].includes(method) ? JSON.stringify(params) : void 0
37
+ }).then(async (res) => {
38
+ clearTimeout(id);
39
+ const body = await res.json();
40
+ if (!res.ok) throw {
41
+ status: res.status,
42
+ statusText: res.statusText,
43
+ ...body
44
+ };
45
+ return body;
46
+ }).catch((err) => {
47
+ if (err.name === "AbortError" || err.status && err.status >= 500) {
48
+ currentHost++;
49
+ if (currentHost < hosts.length - 1) return request(method, resource, opts);
50
+ }
51
+ throw err;
52
+ });
53
+ }
54
+ const client = {
55
+ get options() {
56
+ return globalParams;
57
+ },
58
+ get hasGeolocation() {
59
+ return hasGeolocation;
60
+ },
61
+ configure(opts = {}) {
62
+ if (!["object", "undefined"].includes(typeof opts) || Array.isArray(opts) || opts === null) throw Error("PlaceKit.configure: `opts` argument is invalid, expected an object.");
63
+ Object.assign(globalParams, opts);
64
+ },
65
+ requestGeolocation(opts = {}) {
66
+ if (!["object", "undefined"].includes(typeof opts) || Array.isArray(opts) || opts === null) throw Error("PlaceKit.requestGeolocation: `opts` argument is invalid, expected an object.");
67
+ return new Promise((resolve, reject) => {
68
+ if (typeof window === "undefined" || !navigator.geolocation) reject(Error("PlaceKit.requestGeolocation: geolocation is only available in the browser."));
69
+ else navigator.geolocation.getCurrentPosition((pos) => {
70
+ hasGeolocation = true;
71
+ globalParams.coordinates = `${pos.coords.latitude},${pos.coords.longitude}`;
72
+ resolve(pos);
73
+ }, (err) => {
74
+ hasGeolocation = false;
75
+ delete globalParams.coordinates;
76
+ reject(Error(`PlaceKit.requestGeolocation: (${err.code}) ${err.message}`));
77
+ }, opts);
78
+ });
79
+ },
80
+ clearGeolocation() {
81
+ hasGeolocation = false;
82
+ delete globalParams.coordinates;
83
+ }
84
+ };
85
+ for (const [resource, init] of extensions.entries()) {
86
+ if (resource in client) throw Error(`PlaceKit extend: \`client.${resource}\` already exists.`);
87
+ client[resource] = init(request, client);
88
+ }
89
+ client.configure(options);
90
+ return client;
91
+ }
92
+ placekit.extend = function(resource, init) {
93
+ if (!init?.call) throw Error("PlaceKit extend: `init` argument is invalid, expected a function.");
94
+ extensions.set(resource, init);
95
+ };
96
+ placekit.extend("search", (request, client) => (query, opts = {}) => {
97
+ if (!["string", "undefined"].includes(typeof query)) throw Error("PlaceKit `client.search`: `query` argument is invalid, expected a string.");
98
+ if (!["object", "undefined"].includes(typeof opts) || Array.isArray(opts) || opts === null) throw Error("PlaceKit.search: `opts` argument is invalid, expected an object.");
99
+ return request("POST", "search", {
100
+ ...client.options,
101
+ ...opts,
102
+ query
103
+ });
104
+ });
105
+ placekit.extend("reverse", (request, client) => (opts = {}) => {
106
+ if (!["object", "undefined"].includes(typeof opts) || Array.isArray(opts) || opts === null) throw Error("PlaceKit.reverse: `opts` argument is invalid, expected an object.");
107
+ return request("POST", "reverse", {
108
+ ...client.options,
109
+ ...opts
110
+ });
111
+ });
112
+ var top = "top";
113
+ var bottom = "bottom";
114
+ var right = "right";
115
+ var left = "left";
116
+ var auto = "auto";
117
+ var basePlacements = [
118
+ top,
119
+ bottom,
120
+ right,
121
+ left
122
+ ];
123
+ var start = "start";
124
+ var end = "end";
125
+ var clippingParents = "clippingParents";
126
+ var viewport = "viewport";
127
+ var popper = "popper";
128
+ var reference = "reference";
129
+ var variationPlacements = basePlacements.reduce(function(acc, placement) {
130
+ return acc.concat([placement + "-" + start, placement + "-" + end]);
131
+ }, []);
132
+ var placements = [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
133
+ return acc.concat([
134
+ placement,
135
+ placement + "-" + start,
136
+ placement + "-" + end
137
+ ]);
138
+ }, []);
139
+ var modifierPhases = [
140
+ "beforeRead",
141
+ "read",
142
+ "afterRead",
143
+ "beforeMain",
144
+ "main",
145
+ "afterMain",
146
+ "beforeWrite",
147
+ "write",
148
+ "afterWrite"
149
+ ];
150
+ function getNodeName(element) {
151
+ return element ? (element.nodeName || "").toLowerCase() : null;
152
+ }
153
+ function getWindow(node) {
154
+ if (node == null) return window;
155
+ if (node.toString() !== "[object Window]") {
156
+ var ownerDocument = node.ownerDocument;
157
+ return ownerDocument ? ownerDocument.defaultView || window : window;
158
+ }
159
+ return node;
160
+ }
161
+ function isElement(node) {
162
+ return node instanceof getWindow(node).Element || node instanceof Element;
163
+ }
164
+ function isHTMLElement(node) {
165
+ return node instanceof getWindow(node).HTMLElement || node instanceof HTMLElement;
166
+ }
167
+ function isShadowRoot(node) {
168
+ if (typeof ShadowRoot === "undefined") return false;
169
+ return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;
170
+ }
171
+ function applyStyles(_ref) {
172
+ var state = _ref.state;
173
+ Object.keys(state.elements).forEach(function(name) {
174
+ var style = state.styles[name] || {};
175
+ var attributes = state.attributes[name] || {};
176
+ var element = state.elements[name];
177
+ if (!isHTMLElement(element) || !getNodeName(element)) return;
178
+ Object.assign(element.style, style);
179
+ Object.keys(attributes).forEach(function(name) {
180
+ var value = attributes[name];
181
+ if (value === false) element.removeAttribute(name);
182
+ else element.setAttribute(name, value === true ? "" : value);
183
+ });
184
+ });
185
+ }
186
+ function effect$2(_ref2) {
187
+ var state = _ref2.state;
188
+ var initialStyles = {
189
+ popper: {
190
+ position: state.options.strategy,
191
+ left: "0",
192
+ top: "0",
193
+ margin: "0"
194
+ },
195
+ arrow: { position: "absolute" },
196
+ reference: {}
197
+ };
198
+ Object.assign(state.elements.popper.style, initialStyles.popper);
199
+ state.styles = initialStyles;
200
+ if (state.elements.arrow) Object.assign(state.elements.arrow.style, initialStyles.arrow);
201
+ return function() {
202
+ Object.keys(state.elements).forEach(function(name) {
203
+ var element = state.elements[name];
204
+ var attributes = state.attributes[name] || {};
205
+ var style = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]).reduce(function(style, property) {
206
+ style[property] = "";
207
+ return style;
208
+ }, {});
209
+ if (!isHTMLElement(element) || !getNodeName(element)) return;
210
+ Object.assign(element.style, style);
211
+ Object.keys(attributes).forEach(function(attribute) {
212
+ element.removeAttribute(attribute);
213
+ });
214
+ });
215
+ };
216
+ }
217
+ var applyStyles$1 = {
218
+ name: "applyStyles",
219
+ enabled: true,
220
+ phase: "write",
221
+ fn: applyStyles,
222
+ effect: effect$2,
223
+ requires: ["computeStyles"]
224
+ };
225
+ function getBasePlacement(placement) {
226
+ return placement.split("-")[0];
227
+ }
228
+ var max = Math.max;
229
+ var min = Math.min;
230
+ var round = Math.round;
231
+ function getUAString() {
232
+ var uaData = navigator.userAgentData;
233
+ if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) return uaData.brands.map(function(item) {
234
+ return item.brand + "/" + item.version;
235
+ }).join(" ");
236
+ return navigator.userAgent;
237
+ }
238
+ function isLayoutViewport() {
239
+ return !/^((?!chrome|android).)*safari/i.test(getUAString());
240
+ }
241
+ function getBoundingClientRect(element, includeScale, isFixedStrategy) {
242
+ if (includeScale === void 0) includeScale = false;
243
+ if (isFixedStrategy === void 0) isFixedStrategy = false;
244
+ var clientRect = element.getBoundingClientRect();
245
+ var scaleX = 1;
246
+ var scaleY = 1;
247
+ if (includeScale && isHTMLElement(element)) {
248
+ scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
249
+ scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
250
+ }
251
+ var visualViewport = (isElement(element) ? getWindow(element) : window).visualViewport;
252
+ var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
253
+ var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
254
+ var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
255
+ var width = clientRect.width / scaleX;
256
+ var height = clientRect.height / scaleY;
257
+ return {
258
+ width,
259
+ height,
260
+ top: y,
261
+ right: x + width,
262
+ bottom: y + height,
263
+ left: x,
264
+ x,
265
+ y
266
+ };
267
+ }
268
+ function getLayoutRect(element) {
269
+ var clientRect = getBoundingClientRect(element);
270
+ var width = element.offsetWidth;
271
+ var height = element.offsetHeight;
272
+ if (Math.abs(clientRect.width - width) <= 1) width = clientRect.width;
273
+ if (Math.abs(clientRect.height - height) <= 1) height = clientRect.height;
274
+ return {
275
+ x: element.offsetLeft,
276
+ y: element.offsetTop,
277
+ width,
278
+ height
279
+ };
280
+ }
281
+ function contains(parent, child) {
282
+ var rootNode = child.getRootNode && child.getRootNode();
283
+ if (parent.contains(child)) return true;
284
+ else if (rootNode && isShadowRoot(rootNode)) {
285
+ var next = child;
286
+ do {
287
+ if (next && parent.isSameNode(next)) return true;
288
+ next = next.parentNode || next.host;
289
+ } while (next);
290
+ }
291
+ return false;
292
+ }
293
+ function getComputedStyle(element) {
294
+ return getWindow(element).getComputedStyle(element);
295
+ }
296
+ function isTableElement(element) {
297
+ return [
298
+ "table",
299
+ "td",
300
+ "th"
301
+ ].indexOf(getNodeName(element)) >= 0;
302
+ }
303
+ function getDocumentElement(element) {
304
+ return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;
305
+ }
306
+ function getParentNode(element) {
307
+ if (getNodeName(element) === "html") return element;
308
+ return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);
309
+ }
310
+ function getTrueOffsetParent(element) {
311
+ if (!isHTMLElement(element) || getComputedStyle(element).position === "fixed") return null;
312
+ return element.offsetParent;
313
+ }
314
+ function getContainingBlock(element) {
315
+ var isFirefox = /firefox/i.test(getUAString());
316
+ if (/Trident/i.test(getUAString()) && isHTMLElement(element)) {
317
+ if (getComputedStyle(element).position === "fixed") return null;
318
+ }
319
+ var currentNode = getParentNode(element);
320
+ if (isShadowRoot(currentNode)) currentNode = currentNode.host;
321
+ while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
322
+ var css = getComputedStyle(currentNode);
323
+ if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") return currentNode;
324
+ else currentNode = currentNode.parentNode;
325
+ }
326
+ return null;
327
+ }
328
+ function getOffsetParent(element) {
329
+ var window = getWindow(element);
330
+ var offsetParent = getTrueOffsetParent(element);
331
+ while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === "static") offsetParent = getTrueOffsetParent(offsetParent);
332
+ if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static")) return window;
333
+ return offsetParent || getContainingBlock(element) || window;
334
+ }
335
+ function getMainAxisFromPlacement(placement) {
336
+ return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
337
+ }
338
+ function within(min$1, value, max$1) {
339
+ return max(min$1, min(value, max$1));
340
+ }
341
+ function withinMaxClamp(min, value, max) {
342
+ var v = within(min, value, max);
343
+ return v > max ? max : v;
344
+ }
345
+ function getFreshSideObject() {
346
+ return {
347
+ top: 0,
348
+ right: 0,
349
+ bottom: 0,
350
+ left: 0
351
+ };
352
+ }
353
+ function mergePaddingObject(paddingObject) {
354
+ return Object.assign({}, getFreshSideObject(), paddingObject);
355
+ }
356
+ function expandToHashMap(value, keys) {
357
+ return keys.reduce(function(hashMap, key) {
358
+ hashMap[key] = value;
359
+ return hashMap;
360
+ }, {});
361
+ }
362
+ var toPaddingObject = function toPaddingObject(padding, state) {
363
+ padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { placement: state.placement })) : padding;
364
+ return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
365
+ };
366
+ function arrow(_ref) {
367
+ var _state$modifiersData$;
368
+ var state = _ref.state, name = _ref.name, options = _ref.options;
369
+ var arrowElement = state.elements.arrow;
370
+ var popperOffsets = state.modifiersData.popperOffsets;
371
+ var basePlacement = getBasePlacement(state.placement);
372
+ var axis = getMainAxisFromPlacement(basePlacement);
373
+ var len = [left, right].indexOf(basePlacement) >= 0 ? "height" : "width";
374
+ if (!arrowElement || !popperOffsets) return;
375
+ var paddingObject = toPaddingObject(options.padding, state);
376
+ var arrowRect = getLayoutRect(arrowElement);
377
+ var minProp = axis === "y" ? top : left;
378
+ var maxProp = axis === "y" ? bottom : right;
379
+ var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
380
+ var startDiff = popperOffsets[axis] - state.rects.reference[axis];
381
+ var arrowOffsetParent = getOffsetParent(arrowElement);
382
+ var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
383
+ var centerToReference = endDiff / 2 - startDiff / 2;
384
+ var min = paddingObject[minProp];
385
+ var max = clientSize - arrowRect[len] - paddingObject[maxProp];
386
+ var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
387
+ var offset = within(min, center, max);
388
+ var axisProp = axis;
389
+ state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
390
+ }
391
+ function effect$1(_ref2) {
392
+ var state = _ref2.state;
393
+ var _options$element = _ref2.options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
394
+ if (arrowElement == null) return;
395
+ if (typeof arrowElement === "string") {
396
+ arrowElement = state.elements.popper.querySelector(arrowElement);
397
+ if (!arrowElement) return;
398
+ }
399
+ if (!contains(state.elements.popper, arrowElement)) return;
400
+ state.elements.arrow = arrowElement;
401
+ }
402
+ var arrow$1 = {
403
+ name: "arrow",
404
+ enabled: true,
405
+ phase: "main",
406
+ fn: arrow,
407
+ effect: effect$1,
408
+ requires: ["popperOffsets"],
409
+ requiresIfExists: ["preventOverflow"]
410
+ };
411
+ function getVariation(placement) {
412
+ return placement.split("-")[1];
413
+ }
414
+ var unsetSides = {
415
+ top: "auto",
416
+ right: "auto",
417
+ bottom: "auto",
418
+ left: "auto"
419
+ };
420
+ function roundOffsetsByDPR(_ref, win) {
421
+ var x = _ref.x, y = _ref.y;
422
+ var dpr = win.devicePixelRatio || 1;
423
+ return {
424
+ x: round(x * dpr) / dpr || 0,
425
+ y: round(y * dpr) / dpr || 0
426
+ };
427
+ }
428
+ function mapToStyles(_ref2) {
429
+ var _Object$assign2;
430
+ var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
431
+ var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
432
+ var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
433
+ x,
434
+ y
435
+ }) : {
436
+ x,
437
+ y
438
+ };
439
+ x = _ref3.x;
440
+ y = _ref3.y;
441
+ var hasX = offsets.hasOwnProperty("x");
442
+ var hasY = offsets.hasOwnProperty("y");
443
+ var sideX = left;
444
+ var sideY = top;
445
+ var win = window;
446
+ if (adaptive) {
447
+ var offsetParent = getOffsetParent(popper);
448
+ var heightProp = "clientHeight";
449
+ var widthProp = "clientWidth";
450
+ if (offsetParent === getWindow(popper)) {
451
+ offsetParent = getDocumentElement(popper);
452
+ if (getComputedStyle(offsetParent).position !== "static" && position === "absolute") {
453
+ heightProp = "scrollHeight";
454
+ widthProp = "scrollWidth";
455
+ }
456
+ }
457
+ offsetParent = offsetParent;
458
+ if (placement === top || (placement === left || placement === right) && variation === end) {
459
+ sideY = bottom;
460
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
461
+ y -= offsetY - popperRect.height;
462
+ y *= gpuAcceleration ? 1 : -1;
463
+ }
464
+ if (placement === left || (placement === top || placement === bottom) && variation === end) {
465
+ sideX = right;
466
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
467
+ x -= offsetX - popperRect.width;
468
+ x *= gpuAcceleration ? 1 : -1;
469
+ }
470
+ }
471
+ var commonStyles = Object.assign({ position }, adaptive && unsetSides);
472
+ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
473
+ x,
474
+ y
475
+ }, getWindow(popper)) : {
476
+ x,
477
+ y
478
+ };
479
+ x = _ref4.x;
480
+ y = _ref4.y;
481
+ if (gpuAcceleration) {
482
+ var _Object$assign;
483
+ return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
484
+ }
485
+ return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
486
+ }
487
+ function computeStyles(_ref5) {
488
+ var state = _ref5.state, options = _ref5.options;
489
+ var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
490
+ var commonStyles = {
491
+ placement: getBasePlacement(state.placement),
492
+ variation: getVariation(state.placement),
493
+ popper: state.elements.popper,
494
+ popperRect: state.rects.popper,
495
+ gpuAcceleration,
496
+ isFixed: state.options.strategy === "fixed"
497
+ };
498
+ if (state.modifiersData.popperOffsets != null) state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
499
+ offsets: state.modifiersData.popperOffsets,
500
+ position: state.options.strategy,
501
+ adaptive,
502
+ roundOffsets
503
+ })));
504
+ if (state.modifiersData.arrow != null) state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
505
+ offsets: state.modifiersData.arrow,
506
+ position: "absolute",
507
+ adaptive: false,
508
+ roundOffsets
509
+ })));
510
+ state.attributes.popper = Object.assign({}, state.attributes.popper, { "data-popper-placement": state.placement });
511
+ }
512
+ var computeStyles$1 = {
513
+ name: "computeStyles",
514
+ enabled: true,
515
+ phase: "beforeWrite",
516
+ fn: computeStyles,
517
+ data: {}
518
+ };
519
+ var passive = { passive: true };
520
+ function effect(_ref) {
521
+ var state = _ref.state, instance = _ref.instance, options = _ref.options;
522
+ var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
523
+ var window = getWindow(state.elements.popper);
524
+ var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
525
+ if (scroll) scrollParents.forEach(function(scrollParent) {
526
+ scrollParent.addEventListener("scroll", instance.update, passive);
527
+ });
528
+ if (resize) window.addEventListener("resize", instance.update, passive);
529
+ return function() {
530
+ if (scroll) scrollParents.forEach(function(scrollParent) {
531
+ scrollParent.removeEventListener("scroll", instance.update, passive);
532
+ });
533
+ if (resize) window.removeEventListener("resize", instance.update, passive);
534
+ };
535
+ }
536
+ var eventListeners = {
537
+ name: "eventListeners",
538
+ enabled: true,
539
+ phase: "write",
540
+ fn: function fn() {},
541
+ effect,
542
+ data: {}
543
+ };
544
+ var hash$1 = {
545
+ left: "right",
546
+ right: "left",
547
+ bottom: "top",
548
+ top: "bottom"
549
+ };
550
+ function getOppositePlacement(placement) {
551
+ return placement.replace(/left|right|bottom|top/g, function(matched) {
552
+ return hash$1[matched];
553
+ });
554
+ }
555
+ var hash = {
556
+ start: "end",
557
+ end: "start"
558
+ };
559
+ function getOppositeVariationPlacement(placement) {
560
+ return placement.replace(/start|end/g, function(matched) {
561
+ return hash[matched];
562
+ });
563
+ }
564
+ function getWindowScroll(node) {
565
+ var win = getWindow(node);
566
+ return {
567
+ scrollLeft: win.pageXOffset,
568
+ scrollTop: win.pageYOffset
569
+ };
570
+ }
571
+ function getWindowScrollBarX(element) {
572
+ return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
573
+ }
574
+ function getViewportRect(element, strategy) {
575
+ var win = getWindow(element);
576
+ var html = getDocumentElement(element);
577
+ var visualViewport = win.visualViewport;
578
+ var width = html.clientWidth;
579
+ var height = html.clientHeight;
580
+ var x = 0;
581
+ var y = 0;
582
+ if (visualViewport) {
583
+ width = visualViewport.width;
584
+ height = visualViewport.height;
585
+ var layoutViewport = isLayoutViewport();
586
+ if (layoutViewport || !layoutViewport && strategy === "fixed") {
587
+ x = visualViewport.offsetLeft;
588
+ y = visualViewport.offsetTop;
589
+ }
590
+ }
591
+ return {
592
+ width,
593
+ height,
594
+ x: x + getWindowScrollBarX(element),
595
+ y
596
+ };
597
+ }
598
+ function getDocumentRect(element) {
599
+ var _element$ownerDocumen;
600
+ var html = getDocumentElement(element);
601
+ var winScroll = getWindowScroll(element);
602
+ var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
603
+ var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
604
+ var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
605
+ var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
606
+ var y = -winScroll.scrollTop;
607
+ if (getComputedStyle(body || html).direction === "rtl") x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
608
+ return {
609
+ width,
610
+ height,
611
+ x,
612
+ y
613
+ };
614
+ }
615
+ function isScrollParent(element) {
616
+ var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
617
+ return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
618
+ }
619
+ function getScrollParent(node) {
620
+ if ([
621
+ "html",
622
+ "body",
623
+ "#document"
624
+ ].indexOf(getNodeName(node)) >= 0) return node.ownerDocument.body;
625
+ if (isHTMLElement(node) && isScrollParent(node)) return node;
626
+ return getScrollParent(getParentNode(node));
627
+ }
628
+ function listScrollParents(element, list) {
629
+ var _element$ownerDocumen;
630
+ if (list === void 0) list = [];
631
+ var scrollParent = getScrollParent(element);
632
+ var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
633
+ var win = getWindow(scrollParent);
634
+ var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
635
+ var updatedList = list.concat(target);
636
+ return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
637
+ }
638
+ function rectToClientRect(rect) {
639
+ return Object.assign({}, rect, {
640
+ left: rect.x,
641
+ top: rect.y,
642
+ right: rect.x + rect.width,
643
+ bottom: rect.y + rect.height
644
+ });
645
+ }
646
+ function getInnerBoundingClientRect(element, strategy) {
647
+ var rect = getBoundingClientRect(element, false, strategy === "fixed");
648
+ rect.top = rect.top + element.clientTop;
649
+ rect.left = rect.left + element.clientLeft;
650
+ rect.bottom = rect.top + element.clientHeight;
651
+ rect.right = rect.left + element.clientWidth;
652
+ rect.width = element.clientWidth;
653
+ rect.height = element.clientHeight;
654
+ rect.x = rect.left;
655
+ rect.y = rect.top;
656
+ return rect;
657
+ }
658
+ function getClientRectFromMixedType(element, clippingParent, strategy) {
659
+ return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
660
+ }
661
+ function getClippingParents(element) {
662
+ var clippingParents = listScrollParents(getParentNode(element));
663
+ var clipperElement = ["absolute", "fixed"].indexOf(getComputedStyle(element).position) >= 0 && isHTMLElement(element) ? getOffsetParent(element) : element;
664
+ if (!isElement(clipperElement)) return [];
665
+ return clippingParents.filter(function(clippingParent) {
666
+ return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
667
+ });
668
+ }
669
+ function getClippingRect(element, boundary, rootBoundary, strategy) {
670
+ var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
671
+ var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
672
+ var firstClippingParent = clippingParents[0];
673
+ var clippingRect = clippingParents.reduce(function(accRect, clippingParent) {
674
+ var rect = getClientRectFromMixedType(element, clippingParent, strategy);
675
+ accRect.top = max(rect.top, accRect.top);
676
+ accRect.right = min(rect.right, accRect.right);
677
+ accRect.bottom = min(rect.bottom, accRect.bottom);
678
+ accRect.left = max(rect.left, accRect.left);
679
+ return accRect;
680
+ }, getClientRectFromMixedType(element, firstClippingParent, strategy));
681
+ clippingRect.width = clippingRect.right - clippingRect.left;
682
+ clippingRect.height = clippingRect.bottom - clippingRect.top;
683
+ clippingRect.x = clippingRect.left;
684
+ clippingRect.y = clippingRect.top;
685
+ return clippingRect;
686
+ }
687
+ function computeOffsets(_ref) {
688
+ var reference = _ref.reference, element = _ref.element, placement = _ref.placement;
689
+ var basePlacement = placement ? getBasePlacement(placement) : null;
690
+ var variation = placement ? getVariation(placement) : null;
691
+ var commonX = reference.x + reference.width / 2 - element.width / 2;
692
+ var commonY = reference.y + reference.height / 2 - element.height / 2;
693
+ var offsets;
694
+ switch (basePlacement) {
695
+ case top:
696
+ offsets = {
697
+ x: commonX,
698
+ y: reference.y - element.height
699
+ };
700
+ break;
701
+ case bottom:
702
+ offsets = {
703
+ x: commonX,
704
+ y: reference.y + reference.height
705
+ };
706
+ break;
707
+ case right:
708
+ offsets = {
709
+ x: reference.x + reference.width,
710
+ y: commonY
711
+ };
712
+ break;
713
+ case left:
714
+ offsets = {
715
+ x: reference.x - element.width,
716
+ y: commonY
717
+ };
718
+ break;
719
+ default: offsets = {
720
+ x: reference.x,
721
+ y: reference.y
722
+ };
723
+ }
724
+ var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
725
+ if (mainAxis != null) {
726
+ var len = mainAxis === "y" ? "height" : "width";
727
+ switch (variation) {
728
+ case start:
729
+ offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
730
+ break;
731
+ case end:
732
+ offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
733
+ break;
734
+ }
735
+ }
736
+ return offsets;
737
+ }
738
+ function detectOverflow(state, options) {
739
+ if (options === void 0) options = {};
740
+ var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
741
+ var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
742
+ var altContext = elementContext === popper ? reference : popper;
743
+ var popperRect = state.rects.popper;
744
+ var element = state.elements[altBoundary ? altContext : elementContext];
745
+ var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
746
+ var referenceClientRect = getBoundingClientRect(state.elements.reference);
747
+ var popperOffsets = computeOffsets({
748
+ reference: referenceClientRect,
749
+ element: popperRect,
750
+ strategy: "absolute",
751
+ placement
752
+ });
753
+ var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
754
+ var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
755
+ var overflowOffsets = {
756
+ top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
757
+ bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
758
+ left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
759
+ right: elementClientRect.right - clippingClientRect.right + paddingObject.right
760
+ };
761
+ var offsetData = state.modifiersData.offset;
762
+ if (elementContext === popper && offsetData) {
763
+ var offset = offsetData[placement];
764
+ Object.keys(overflowOffsets).forEach(function(key) {
765
+ var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
766
+ var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
767
+ overflowOffsets[key] += offset[axis] * multiply;
768
+ });
769
+ }
770
+ return overflowOffsets;
771
+ }
772
+ function computeAutoPlacement(state, options) {
773
+ if (options === void 0) options = {};
774
+ var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
775
+ var variation = getVariation(placement);
776
+ var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement) {
777
+ return getVariation(placement) === variation;
778
+ }) : basePlacements;
779
+ var allowedPlacements = placements$1.filter(function(placement) {
780
+ return allowedAutoPlacements.indexOf(placement) >= 0;
781
+ });
782
+ if (allowedPlacements.length === 0) allowedPlacements = placements$1;
783
+ var overflows = allowedPlacements.reduce(function(acc, placement) {
784
+ acc[placement] = detectOverflow(state, {
785
+ placement,
786
+ boundary,
787
+ rootBoundary,
788
+ padding
789
+ })[getBasePlacement(placement)];
790
+ return acc;
791
+ }, {});
792
+ return Object.keys(overflows).sort(function(a, b) {
793
+ return overflows[a] - overflows[b];
794
+ });
795
+ }
796
+ function getExpandedFallbackPlacements(placement) {
797
+ if (getBasePlacement(placement) === auto) return [];
798
+ var oppositePlacement = getOppositePlacement(placement);
799
+ return [
800
+ getOppositeVariationPlacement(placement),
801
+ oppositePlacement,
802
+ getOppositeVariationPlacement(oppositePlacement)
803
+ ];
804
+ }
805
+ function flip(_ref) {
806
+ var state = _ref.state, options = _ref.options, name = _ref.name;
807
+ if (state.modifiersData[name]._skip) return;
808
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
809
+ var preferredPlacement = state.options.placement;
810
+ var isBasePlacement = getBasePlacement(preferredPlacement) === preferredPlacement;
811
+ var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
812
+ var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement) {
813
+ return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
814
+ placement,
815
+ boundary,
816
+ rootBoundary,
817
+ padding,
818
+ flipVariations,
819
+ allowedAutoPlacements
820
+ }) : placement);
821
+ }, []);
822
+ var referenceRect = state.rects.reference;
823
+ var popperRect = state.rects.popper;
824
+ var checksMap = /* @__PURE__ */ new Map();
825
+ var makeFallbackChecks = true;
826
+ var firstFittingPlacement = placements[0];
827
+ for (var i = 0; i < placements.length; i++) {
828
+ var placement = placements[i];
829
+ var _basePlacement = getBasePlacement(placement);
830
+ var isStartVariation = getVariation(placement) === start;
831
+ var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
832
+ var len = isVertical ? "width" : "height";
833
+ var overflow = detectOverflow(state, {
834
+ placement,
835
+ boundary,
836
+ rootBoundary,
837
+ altBoundary,
838
+ padding
839
+ });
840
+ var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
841
+ if (referenceRect[len] > popperRect[len]) mainVariationSide = getOppositePlacement(mainVariationSide);
842
+ var altVariationSide = getOppositePlacement(mainVariationSide);
843
+ var checks = [];
844
+ if (checkMainAxis) checks.push(overflow[_basePlacement] <= 0);
845
+ if (checkAltAxis) checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
846
+ if (checks.every(function(check) {
847
+ return check;
848
+ })) {
849
+ firstFittingPlacement = placement;
850
+ makeFallbackChecks = false;
851
+ break;
852
+ }
853
+ checksMap.set(placement, checks);
854
+ }
855
+ if (makeFallbackChecks) {
856
+ var numberOfChecks = flipVariations ? 3 : 1;
857
+ var _loop = function _loop(_i) {
858
+ var fittingPlacement = placements.find(function(placement) {
859
+ var checks = checksMap.get(placement);
860
+ if (checks) return checks.slice(0, _i).every(function(check) {
861
+ return check;
862
+ });
863
+ });
864
+ if (fittingPlacement) {
865
+ firstFittingPlacement = fittingPlacement;
866
+ return "break";
867
+ }
868
+ };
869
+ for (var _i = numberOfChecks; _i > 0; _i--) if (_loop(_i) === "break") break;
870
+ }
871
+ if (state.placement !== firstFittingPlacement) {
872
+ state.modifiersData[name]._skip = true;
873
+ state.placement = firstFittingPlacement;
874
+ state.reset = true;
875
+ }
876
+ }
877
+ var flip$1 = {
878
+ name: "flip",
879
+ enabled: true,
880
+ phase: "main",
881
+ fn: flip,
882
+ requiresIfExists: ["offset"],
883
+ data: { _skip: false }
884
+ };
885
+ function getSideOffsets(overflow, rect, preventedOffsets) {
886
+ if (preventedOffsets === void 0) preventedOffsets = {
887
+ x: 0,
888
+ y: 0
889
+ };
890
+ return {
891
+ top: overflow.top - rect.height - preventedOffsets.y,
892
+ right: overflow.right - rect.width + preventedOffsets.x,
893
+ bottom: overflow.bottom - rect.height + preventedOffsets.y,
894
+ left: overflow.left - rect.width - preventedOffsets.x
895
+ };
896
+ }
897
+ function isAnySideFullyClipped(overflow) {
898
+ return [
899
+ top,
900
+ right,
901
+ bottom,
902
+ left
903
+ ].some(function(side) {
904
+ return overflow[side] >= 0;
905
+ });
906
+ }
907
+ function hide(_ref) {
908
+ var state = _ref.state, name = _ref.name;
909
+ var referenceRect = state.rects.reference;
910
+ var popperRect = state.rects.popper;
911
+ var preventedOffsets = state.modifiersData.preventOverflow;
912
+ var referenceOverflow = detectOverflow(state, { elementContext: "reference" });
913
+ var popperAltOverflow = detectOverflow(state, { altBoundary: true });
914
+ var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
915
+ var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
916
+ var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
917
+ var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
918
+ state.modifiersData[name] = {
919
+ referenceClippingOffsets,
920
+ popperEscapeOffsets,
921
+ isReferenceHidden,
922
+ hasPopperEscaped
923
+ };
924
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
925
+ "data-popper-reference-hidden": isReferenceHidden,
926
+ "data-popper-escaped": hasPopperEscaped
927
+ });
928
+ }
929
+ var hide$1 = {
930
+ name: "hide",
931
+ enabled: true,
932
+ phase: "main",
933
+ requiresIfExists: ["preventOverflow"],
934
+ fn: hide
935
+ };
936
+ function distanceAndSkiddingToXY(placement, rects, offset) {
937
+ var basePlacement = getBasePlacement(placement);
938
+ var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
939
+ var _ref = typeof offset === "function" ? offset(Object.assign({}, rects, { placement })) : offset, skidding = _ref[0], distance = _ref[1];
940
+ skidding = skidding || 0;
941
+ distance = (distance || 0) * invertDistance;
942
+ return [left, right].indexOf(basePlacement) >= 0 ? {
943
+ x: distance,
944
+ y: skidding
945
+ } : {
946
+ x: skidding,
947
+ y: distance
948
+ };
949
+ }
950
+ function offset(_ref2) {
951
+ var state = _ref2.state, options = _ref2.options, name = _ref2.name;
952
+ var _options$offset = options.offset, offset = _options$offset === void 0 ? [0, 0] : _options$offset;
953
+ var data = placements.reduce(function(acc, placement) {
954
+ acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
955
+ return acc;
956
+ }, {});
957
+ var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
958
+ if (state.modifiersData.popperOffsets != null) {
959
+ state.modifiersData.popperOffsets.x += x;
960
+ state.modifiersData.popperOffsets.y += y;
961
+ }
962
+ state.modifiersData[name] = data;
963
+ }
964
+ var offset$1 = {
965
+ name: "offset",
966
+ enabled: true,
967
+ phase: "main",
968
+ requires: ["popperOffsets"],
969
+ fn: offset
970
+ };
971
+ function popperOffsets(_ref) {
972
+ var state = _ref.state, name = _ref.name;
973
+ state.modifiersData[name] = computeOffsets({
974
+ reference: state.rects.reference,
975
+ element: state.rects.popper,
976
+ strategy: "absolute",
977
+ placement: state.placement
978
+ });
979
+ }
980
+ var popperOffsets$1 = {
981
+ name: "popperOffsets",
982
+ enabled: true,
983
+ phase: "read",
984
+ fn: popperOffsets,
985
+ data: {}
986
+ };
987
+ function getAltAxis(axis) {
988
+ return axis === "x" ? "y" : "x";
989
+ }
990
+ function preventOverflow(_ref) {
991
+ var state = _ref.state, options = _ref.options, name = _ref.name;
992
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
993
+ var overflow = detectOverflow(state, {
994
+ boundary,
995
+ rootBoundary,
996
+ padding,
997
+ altBoundary
998
+ });
999
+ var basePlacement = getBasePlacement(state.placement);
1000
+ var variation = getVariation(state.placement);
1001
+ var isBasePlacement = !variation;
1002
+ var mainAxis = getMainAxisFromPlacement(basePlacement);
1003
+ var altAxis = getAltAxis(mainAxis);
1004
+ var popperOffsets = state.modifiersData.popperOffsets;
1005
+ var referenceRect = state.rects.reference;
1006
+ var popperRect = state.rects.popper;
1007
+ var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset;
1008
+ var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
1009
+ mainAxis: tetherOffsetValue,
1010
+ altAxis: tetherOffsetValue
1011
+ } : Object.assign({
1012
+ mainAxis: 0,
1013
+ altAxis: 0
1014
+ }, tetherOffsetValue);
1015
+ var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
1016
+ var data = {
1017
+ x: 0,
1018
+ y: 0
1019
+ };
1020
+ if (!popperOffsets) return;
1021
+ if (checkMainAxis) {
1022
+ var _offsetModifierState$;
1023
+ var mainSide = mainAxis === "y" ? top : left;
1024
+ var altSide = mainAxis === "y" ? bottom : right;
1025
+ var len = mainAxis === "y" ? "height" : "width";
1026
+ var offset = popperOffsets[mainAxis];
1027
+ var min$1 = offset + overflow[mainSide];
1028
+ var max$1 = offset - overflow[altSide];
1029
+ var additive = tether ? -popperRect[len] / 2 : 0;
1030
+ var minLen = variation === start ? referenceRect[len] : popperRect[len];
1031
+ var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
1032
+ var arrowElement = state.elements.arrow;
1033
+ var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
1034
+ width: 0,
1035
+ height: 0
1036
+ };
1037
+ var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
1038
+ var arrowPaddingMin = arrowPaddingObject[mainSide];
1039
+ var arrowPaddingMax = arrowPaddingObject[altSide];
1040
+ var arrowLen = within(0, referenceRect[len], arrowRect[len]);
1041
+ var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
1042
+ var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
1043
+ var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
1044
+ var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
1045
+ var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
1046
+ var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
1047
+ var tetherMax = offset + maxOffset - offsetModifierValue;
1048
+ var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
1049
+ popperOffsets[mainAxis] = preventedOffset;
1050
+ data[mainAxis] = preventedOffset - offset;
1051
+ }
1052
+ if (checkAltAxis) {
1053
+ var _offsetModifierState$2;
1054
+ var _mainSide = mainAxis === "x" ? top : left;
1055
+ var _altSide = mainAxis === "x" ? bottom : right;
1056
+ var _offset = popperOffsets[altAxis];
1057
+ var _len = altAxis === "y" ? "height" : "width";
1058
+ var _min = _offset + overflow[_mainSide];
1059
+ var _max = _offset - overflow[_altSide];
1060
+ var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
1061
+ var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
1062
+ var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
1063
+ var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
1064
+ var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
1065
+ popperOffsets[altAxis] = _preventedOffset;
1066
+ data[altAxis] = _preventedOffset - _offset;
1067
+ }
1068
+ state.modifiersData[name] = data;
1069
+ }
1070
+ var preventOverflow$1 = {
1071
+ name: "preventOverflow",
1072
+ enabled: true,
1073
+ phase: "main",
1074
+ fn: preventOverflow,
1075
+ requiresIfExists: ["offset"]
1076
+ };
1077
+ function getHTMLElementScroll(element) {
1078
+ return {
1079
+ scrollLeft: element.scrollLeft,
1080
+ scrollTop: element.scrollTop
1081
+ };
1082
+ }
1083
+ function getNodeScroll(node) {
1084
+ if (node === getWindow(node) || !isHTMLElement(node)) return getWindowScroll(node);
1085
+ else return getHTMLElementScroll(node);
1086
+ }
1087
+ function isElementScaled(element) {
1088
+ var rect = element.getBoundingClientRect();
1089
+ var scaleX = round(rect.width) / element.offsetWidth || 1;
1090
+ var scaleY = round(rect.height) / element.offsetHeight || 1;
1091
+ return scaleX !== 1 || scaleY !== 1;
1092
+ }
1093
+ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
1094
+ if (isFixed === void 0) isFixed = false;
1095
+ var isOffsetParentAnElement = isHTMLElement(offsetParent);
1096
+ var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
1097
+ var documentElement = getDocumentElement(offsetParent);
1098
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
1099
+ var scroll = {
1100
+ scrollLeft: 0,
1101
+ scrollTop: 0
1102
+ };
1103
+ var offsets = {
1104
+ x: 0,
1105
+ y: 0
1106
+ };
1107
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
1108
+ if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) scroll = getNodeScroll(offsetParent);
1109
+ if (isHTMLElement(offsetParent)) {
1110
+ offsets = getBoundingClientRect(offsetParent, true);
1111
+ offsets.x += offsetParent.clientLeft;
1112
+ offsets.y += offsetParent.clientTop;
1113
+ } else if (documentElement) offsets.x = getWindowScrollBarX(documentElement);
1114
+ }
1115
+ return {
1116
+ x: rect.left + scroll.scrollLeft - offsets.x,
1117
+ y: rect.top + scroll.scrollTop - offsets.y,
1118
+ width: rect.width,
1119
+ height: rect.height
1120
+ };
1121
+ }
1122
+ function order(modifiers) {
1123
+ var map = /* @__PURE__ */ new Map();
1124
+ var visited = /* @__PURE__ */ new Set();
1125
+ var result = [];
1126
+ modifiers.forEach(function(modifier) {
1127
+ map.set(modifier.name, modifier);
1128
+ });
1129
+ function sort(modifier) {
1130
+ visited.add(modifier.name);
1131
+ [].concat(modifier.requires || [], modifier.requiresIfExists || []).forEach(function(dep) {
1132
+ if (!visited.has(dep)) {
1133
+ var depModifier = map.get(dep);
1134
+ if (depModifier) sort(depModifier);
1135
+ }
1136
+ });
1137
+ result.push(modifier);
1138
+ }
1139
+ modifiers.forEach(function(modifier) {
1140
+ if (!visited.has(modifier.name)) sort(modifier);
1141
+ });
1142
+ return result;
1143
+ }
1144
+ function orderModifiers(modifiers) {
1145
+ var orderedModifiers = order(modifiers);
1146
+ return modifierPhases.reduce(function(acc, phase) {
1147
+ return acc.concat(orderedModifiers.filter(function(modifier) {
1148
+ return modifier.phase === phase;
1149
+ }));
1150
+ }, []);
1151
+ }
1152
+ function debounce(fn) {
1153
+ var pending;
1154
+ return function() {
1155
+ if (!pending) pending = new Promise(function(resolve) {
1156
+ Promise.resolve().then(function() {
1157
+ pending = void 0;
1158
+ resolve(fn());
1159
+ });
1160
+ });
1161
+ return pending;
1162
+ };
1163
+ }
1164
+ function mergeByName(modifiers) {
1165
+ var merged = modifiers.reduce(function(merged, current) {
1166
+ var existing = merged[current.name];
1167
+ merged[current.name] = existing ? Object.assign({}, existing, current, {
1168
+ options: Object.assign({}, existing.options, current.options),
1169
+ data: Object.assign({}, existing.data, current.data)
1170
+ }) : current;
1171
+ return merged;
1172
+ }, {});
1173
+ return Object.keys(merged).map(function(key) {
1174
+ return merged[key];
1175
+ });
1176
+ }
1177
+ var DEFAULT_OPTIONS = {
1178
+ placement: "bottom",
1179
+ modifiers: [],
1180
+ strategy: "absolute"
1181
+ };
1182
+ function areValidElements() {
1183
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
1184
+ return !args.some(function(element) {
1185
+ return !(element && typeof element.getBoundingClientRect === "function");
1186
+ });
1187
+ }
1188
+ function popperGenerator(generatorOptions) {
1189
+ if (generatorOptions === void 0) generatorOptions = {};
1190
+ var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
1191
+ return function createPopper(reference, popper, options) {
1192
+ if (options === void 0) options = defaultOptions;
1193
+ var state = {
1194
+ placement: "bottom",
1195
+ orderedModifiers: [],
1196
+ options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
1197
+ modifiersData: {},
1198
+ elements: {
1199
+ reference,
1200
+ popper
1201
+ },
1202
+ attributes: {},
1203
+ styles: {}
1204
+ };
1205
+ var effectCleanupFns = [];
1206
+ var isDestroyed = false;
1207
+ var instance = {
1208
+ state,
1209
+ setOptions: function setOptions(setOptionsAction) {
1210
+ var options = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
1211
+ cleanupModifierEffects();
1212
+ state.options = Object.assign({}, defaultOptions, state.options, options);
1213
+ state.scrollParents = {
1214
+ reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
1215
+ popper: listScrollParents(popper)
1216
+ };
1217
+ var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers)));
1218
+ state.orderedModifiers = orderedModifiers.filter(function(m) {
1219
+ return m.enabled;
1220
+ });
1221
+ runModifierEffects();
1222
+ return instance.update();
1223
+ },
1224
+ forceUpdate: function forceUpdate() {
1225
+ if (isDestroyed) return;
1226
+ var _state$elements = state.elements, reference = _state$elements.reference, popper = _state$elements.popper;
1227
+ if (!areValidElements(reference, popper)) return;
1228
+ state.rects = {
1229
+ reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === "fixed"),
1230
+ popper: getLayoutRect(popper)
1231
+ };
1232
+ state.reset = false;
1233
+ state.placement = state.options.placement;
1234
+ state.orderedModifiers.forEach(function(modifier) {
1235
+ return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
1236
+ });
1237
+ for (var index = 0; index < state.orderedModifiers.length; index++) {
1238
+ if (state.reset === true) {
1239
+ state.reset = false;
1240
+ index = -1;
1241
+ continue;
1242
+ }
1243
+ var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
1244
+ if (typeof fn === "function") state = fn({
1245
+ state,
1246
+ options: _options,
1247
+ name,
1248
+ instance
1249
+ }) || state;
1250
+ }
1251
+ },
1252
+ update: debounce(function() {
1253
+ return new Promise(function(resolve) {
1254
+ instance.forceUpdate();
1255
+ resolve(state);
1256
+ });
1257
+ }),
1258
+ destroy: function destroy() {
1259
+ cleanupModifierEffects();
1260
+ isDestroyed = true;
1261
+ }
1262
+ };
1263
+ if (!areValidElements(reference, popper)) return instance;
1264
+ instance.setOptions(options).then(function(state) {
1265
+ if (!isDestroyed && options.onFirstUpdate) options.onFirstUpdate(state);
1266
+ });
1267
+ function runModifierEffects() {
1268
+ state.orderedModifiers.forEach(function(_ref) {
1269
+ var name = _ref.name, _ref$options = _ref.options, options = _ref$options === void 0 ? {} : _ref$options, effect = _ref.effect;
1270
+ if (typeof effect === "function") {
1271
+ var cleanupFn = effect({
1272
+ state,
1273
+ name,
1274
+ instance,
1275
+ options
1276
+ });
1277
+ effectCleanupFns.push(cleanupFn || function noopFn() {});
1278
+ }
1279
+ });
1280
+ }
1281
+ function cleanupModifierEffects() {
1282
+ effectCleanupFns.forEach(function(fn) {
1283
+ return fn();
1284
+ });
1285
+ effectCleanupFns = [];
1286
+ }
1287
+ return instance;
1288
+ };
1289
+ }
1290
+ popperGenerator();
1291
+ var createPopper = popperGenerator({ defaultModifiers: [
1292
+ eventListeners,
1293
+ popperOffsets$1,
1294
+ computeStyles$1,
1295
+ applyStyles$1,
1296
+ offset$1,
1297
+ flip$1,
1298
+ preventOverflow$1,
1299
+ arrow$1,
1300
+ hide$1
1301
+ ] });
1302
+ var isString = (v) => Object.prototype.toString.call(v) === "[object String]";
1303
+ var isObject = (v) => typeof v === "object" && !Array.isArray(v) && v !== null;
1304
+ var merge = (a, b) => {
1305
+ if (!isObject(a)) return b;
1306
+ Object.keys(b).forEach((k) => a[k] = isObject(b[k]) ? merge(a[k] || {}, b[k]) : b[k]);
1307
+ return a;
1308
+ };
1309
+ function placekitAutocomplete(apiKey, { target = "#placekit", ...initOptions } = {}) {
1310
+ const input = isString(target) ? document.querySelector(target) : target;
1311
+ if (!input) throw `Error: target not found.`;
1312
+ else if (input.tagName !== "INPUT" || !["text", "search"].includes(input.getAttribute("type"))) throw `Error: target must be an HTML input of type "text" or "search".`;
1313
+ const pk = placekit(apiKey);
1314
+ const handlers = /* @__PURE__ */ new Map();
1315
+ let suggestions = [];
1316
+ let userValue = null;
1317
+ let backupValue = null;
1318
+ let country = null;
1319
+ let globalSearchMode = false;
1320
+ const client = {};
1321
+ const state = {
1322
+ empty: !input.value,
1323
+ dirty: false,
1324
+ freeForm: true,
1325
+ geolocation: false,
1326
+ countryMode: false
1327
+ };
1328
+ const options = {
1329
+ panel: {
1330
+ className: "",
1331
+ offset: 4,
1332
+ strategy: "absolute",
1333
+ flip: false
1334
+ },
1335
+ format: {
1336
+ flag: (countrycode) => `<img class="pka-flag" src="https://flagcdn.com/64x48/${countrycode?.toLowerCase()}.png" alt="${countrycode}" loading="lazy" />`,
1337
+ icon: (name, label) => `<span class="pka-icon pka-icon-${name}" role="img" aria-label="${label || "icon"}"></span>`,
1338
+ sub: (item) => {
1339
+ switch (item.type) {
1340
+ case "administrative": return [item.country].filter((s) => s).join(" ");
1341
+ case "city": return [item.zipcode.sort()[0], item.country].filter((s) => s).join(" ");
1342
+ case "country": return "";
1343
+ case "county": return [item.administrative, item.country].filter((s) => s).join(" ");
1344
+ default: return [item.city, item.county].filter((s) => s).join(", ");
1345
+ }
1346
+ },
1347
+ noResults: (query) => `No results for ${query}`,
1348
+ value: (item) => item.name,
1349
+ applySuggestion: "Apply suggestion",
1350
+ suggestions: "Address suggestions",
1351
+ changeCountry: "Change country",
1352
+ cancel: "Cancel"
1353
+ },
1354
+ countryAutoFill: true,
1355
+ countrySelect: true
1356
+ };
1357
+ input.setAttribute("autocomplete", "off");
1358
+ input.setAttribute("aria-autocomplete", "list");
1359
+ input.setAttribute("aria-expanded", false);
1360
+ input.setAttribute("role", "combobox");
1361
+ const panel = document.createElement("div");
1362
+ panel.classList.add("pka-panel");
1363
+ panel.innerHTML = `
1364
+ <div class="pka-panel-loading" role="progressbar" aria-hidden="true">${options.format.icon("loading")}</div>
1365
+ <div class="pka-panel-suggestions" role="listbox" aria-label="${options.format.suggestions}"></div>
1366
+ <div class="pka-panel-footer">
1367
+ <div class="pka-panel-country">
1368
+ <input type="checkbox" id="pka-panel-country-mode" class="pka-sr-only" />
1369
+ <label for="pka-panel-country-mode" class="pka-panel-country-open" aria-label="${options.format.changeCountry}">
1370
+ </label>
1371
+ <label for="pka-panel-country-mode" class="pka-panel-country-close">
1372
+ ${options.format.icon("cancel")}
1373
+ <span class="pka-panel-country-label">${options.format.cancel}</span>
1374
+ </label>
1375
+ </div>
1376
+ <div class="pka-panel-credits">
1377
+ <span class="pka-panel-credits-text">Powered by</span>
1378
+ <a href="https://placekit.io/?utm_source=${encodeURI(window.location.hostname)}" target="_blank" class="pka-panel-credits-link" aria-label="PlaceKit.io">
1379
+ <svg viewBox="0 0 98 24" fill-rule="evenodd" fill="currentColor" height="14">
1380
+ <path d="M10.618 20.336a.506.506 0 0 1 .558-.414 8.009 8.009 0 0 0 1.867 0 .506.506 0 0 1 .557.414l.177 1a.504.504 0 0 1-.435.59 10.227 10.227 0 0 1-2.465 0 .51.51 0 0 1-.434-.59l.175-1Zm-6.577-5.521a.506.506 0 0 1 .639.28 8.12 8.12 0 0 0 2.971 3.542.504.504 0 0 1 .164.675c-.152.268-.35.612-.507.884a.508.508 0 0 1-.71.174 10.181 10.181 0 0 1-3.807-4.539.502.502 0 0 1 .293-.665c.294-.109.667-.245.957-.351Zm15.5.281a.504.504 0 0 1 .637-.278c.29.103.664.239.958.346a.503.503 0 0 1 .295.668 10.19 10.19 0 0 1-3.811 4.536.5.5 0 0 1-.707-.174c-.158-.27-.357-.614-.511-.88a.508.508 0 0 1 .165-.679 8.107 8.107 0 0 0 2.974-3.539Zm-11.003-.391-.008-.007a5.064 5.064 0 0 1 0-7.158 5.064 5.064 0 0 1 7.158 0 5.064 5.064 0 0 1 .001 7.157l.006.007-2.863 2.864a1.013 1.013 0 0 1-1.432 0l-2.862-2.863Zm3.575-5.601a2.015 2.015 0 0 1 0 4.028 2.015 2.015 0 0 1 0-4.028Zm9.023-.511a.507.507 0 0 1 .656.324c.236.775.382 1.591.426 2.433a.504.504 0 0 1-.505.527c-.312.002-.709.002-1.016.002a.507.507 0 0 1-.505-.481 7.986 7.986 0 0 0-.321-1.833.505.505 0 0 1 .31-.623l.955-.349Zm-18.707.324a.505.505 0 0 1 .654-.323c.295.106.667.242.956.347.253.092.39.367.311.624a7.988 7.988 0 0 0-.323 1.833.505.505 0 0 1-.504.479c-.308.002-.704.002-1.017.002a.508.508 0 0 1-.505-.529c.044-.842.191-1.658.428-2.433Zm11.349-6.499a.504.504 0 0 1 .607-.406 10.143 10.143 0 0 1 5.128 2.967.507.507 0 0 1-.049.726c-.238.203-.542.458-.778.656a.506.506 0 0 1-.697-.045 8.071 8.071 0 0 0-4.001-2.315.504.504 0 0 1-.385-.579c.051-.304.12-.695.175-1.004Zm-3.942-.404a.502.502 0 0 1 .604.405c.056.308.125.699.179 1.003a.506.506 0 0 1-.387.581 8.07 8.07 0 0 0-4.003 2.312.504.504 0 0 1-.694.044c-.237-.196-.541-.451-.781-.653a.506.506 0 0 1-.049-.728 10.136 10.136 0 0 1 5.131-2.964Z" />
1381
+ <path d="M30.315 20.5v-5.028c.597.868 1.483 1.321 2.55 1.321 2.496 0 4.087-1.845 4.087-5.137 0-3.165-1.555-5.1-4.087-5.1-1.067 0-1.935.489-2.55 1.375V6.828H28V20.5h2.315Zm61.146-6.999c0 2.17.94 3.292 2.911 3.292.633 0 1.158-.109 1.411-.236v-1.7h-.434c-1.284 0-1.573-.542-1.573-1.555V8.618h2.043v-1.79h-2.043V4.603h-2.315v2.225h-1.248v1.79h1.248v4.883Zm-28.412-3.237c-.326-2.478-2.062-3.708-4.268-3.708-2.785 0-4.576 1.845-4.576 5.137 0 3.146 1.736 5.1 4.594 5.1 2.188 0 3.888-1.14 4.322-3.563h-2.333c-.235 1.103-.94 1.646-1.935 1.646-1.465 0-2.26-1.14-2.26-3.183 0-2.08.759-3.22 2.188-3.22.976 0 1.736.525 1.953 1.791h2.315Zm-17.018-.253c.145-.923.741-1.538 1.845-1.538 1.284 0 1.88.67 1.88 1.917v.236c-1.627.018-2.875.126-4.159.56-1.483.488-2.225 1.483-2.225 2.803 0 1.863 1.357 2.804 3.256 2.804 1.157 0 2.351-.471 3.146-1.592.019.525.073.995.199 1.32h2.406c-.181-.506-.29-1.175-.29-2.369V10.39c0-2.242-1.374-3.834-4.069-3.834-2.441 0-4.015 1.303-4.322 3.455h2.333Zm27.905 3.345h-2.441c-.308 1.031-1.049 1.538-2.134 1.538-1.411 0-2.225-.977-2.333-2.749h6.836v-.543c0-3.129-1.754-5.046-4.594-5.046-2.821 0-4.63 1.845-4.63 5.137 0 3.164 1.791 5.1 4.721 5.1 2.315 0 4.051-1.194 4.575-3.437Zm12.425 3.165h2.315V6.828h-2.315v9.693Zm-47.365 0h2.315V3.5h-2.315v13.021Zm36.966 0h2.315v-4.684l3.653 4.684h2.839l-4.178-5.389 3.907-4.304h-2.713l-3.508 4.051V3.5h-2.315v13.021Zm-30.257-2.658c0-.977.76-1.754 4.051-1.809v.416c0 1.447-1.103 2.604-2.532 2.604-.94 0-1.519-.47-1.519-1.211Zm-13.256-5.39c1.356 0 2.116 1.14 2.116 3.183 0 2.08-.742 3.22-2.116 3.22-1.356 0-2.134-1.158-2.134-3.22 0-2.061.741-3.183 2.134-3.183Zm36.821-.018c1.212 0 1.953.796 2.17 2.243h-4.358c.217-1.465.958-2.243 2.188-2.243Zm17.091-2.712h2.315V3.5h-2.315v2.243Z" />
1382
+ </svg>
1383
+ </a>
1384
+ </div>
1385
+ </div>
1386
+ `;
1387
+ document.body.append(panel);
1388
+ const loading = panel.querySelector(".pka-panel-loading");
1389
+ const suggestionsList = panel.querySelector(".pka-panel-suggestions");
1390
+ const countryMode = panel.querySelector("#pka-panel-country-mode");
1391
+ const popper = createPopper(input, panel);
1392
+ function fireEvent(event, ...args) {
1393
+ if (handlers.has(event)) handlers.get(event).apply(client, args);
1394
+ }
1395
+ function setState(partial, silent = false) {
1396
+ if (!isObject(partial)) throw `TypeError: setState first argument must be a key/value object.`;
1397
+ let update = false;
1398
+ for (const k in state) if (k in partial && partial[k] !== state[k]) {
1399
+ state[k] = partial[k];
1400
+ update = true;
1401
+ if (!silent) fireEvent(k, state[k]);
1402
+ }
1403
+ if (update) fireEvent("state", state);
1404
+ }
1405
+ function setValue(value, { notify = false, focus = true } = {}) {
1406
+ if (isString(value)) {
1407
+ Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value").set.call(input, value);
1408
+ setState({ empty: !input.value });
1409
+ if (notify) {
1410
+ userValue = null;
1411
+ input.dispatchEvent(new Event("input", { bubbles: true }));
1412
+ input.dispatchEvent(new Event("change", { bubbles: true }));
1413
+ }
1414
+ if (focus) input.focus();
1415
+ }
1416
+ }
1417
+ function clearInput() {
1418
+ setValue("", {
1419
+ notify: true,
1420
+ focus: true
1421
+ });
1422
+ togglePanel(false);
1423
+ if (state.geolocation) search();
1424
+ else suggestions = [];
1425
+ }
1426
+ function restoreValue(clear = false) {
1427
+ if (userValue !== null) {
1428
+ setValue(userValue, { focus: false });
1429
+ if (clear) userValue = null;
1430
+ }
1431
+ }
1432
+ function togglePanel(bool) {
1433
+ const prev = panel.classList.contains("pka-open");
1434
+ const open = typeof bool === "undefined" ? !prev : bool;
1435
+ panel.classList.toggle("pka-open", open);
1436
+ input.setAttribute("aria-expanded", open);
1437
+ if (prev !== open) {
1438
+ if (!open) clearActive();
1439
+ fireEvent(open ? "open" : "close");
1440
+ }
1441
+ }
1442
+ function clearActive() {
1443
+ panel.querySelectorAll("[role=\"option\"]").forEach((node) => node.classList.remove("pka-active"));
1444
+ }
1445
+ function moveActive(index) {
1446
+ if (userValue === null) userValue = input.value;
1447
+ const children = Array.from(suggestionsList.children);
1448
+ const prev = children.findIndex((node) => node.classList.contains("pka-active"));
1449
+ clearActive();
1450
+ const steps = children.length + 1;
1451
+ const pos = (prev + 1 + index + steps) % steps;
1452
+ if (pos === 0) restoreValue();
1453
+ else {
1454
+ const current = children[pos - 1];
1455
+ current.classList.add("pka-active");
1456
+ suggestionsList.scrollTo({ top: current.offsetTop });
1457
+ setValue(options.format.value(suggestions[pos - 1]));
1458
+ }
1459
+ }
1460
+ function applySuggestion(index) {
1461
+ const children = Array.from(suggestionsList.children);
1462
+ if (typeof index === "undefined") index = children.findIndex((node) => node.classList.contains("pka-active"));
1463
+ if (!children[index]) return;
1464
+ const item = suggestions[index];
1465
+ if (state.countryMode) {
1466
+ setCountry(item);
1467
+ toggleCountryMode(false);
1468
+ } else {
1469
+ children.forEach((node, i) => {
1470
+ node.classList.toggle("pka-selected", i === index);
1471
+ node.setAttribute("aria-selected", i === index);
1472
+ });
1473
+ setValue(options.format.value(item), { notify: true });
1474
+ setState({
1475
+ dirty: true,
1476
+ freeForm: false
1477
+ });
1478
+ togglePanel(false);
1479
+ fireEvent("pick", input.value, item, index);
1480
+ }
1481
+ }
1482
+ let loadingTimeout;
1483
+ function setLoading(bool) {
1484
+ clearTimeout(loadingTimeout);
1485
+ loading.setAttribute("aria-hidden", true);
1486
+ if (bool) loadingTimeout = setTimeout(() => {
1487
+ loading.setAttribute("aria-hidden", false);
1488
+ }, 300);
1489
+ }
1490
+ async function search() {
1491
+ userValue = null;
1492
+ const query = input.value;
1493
+ setState({
1494
+ empty: !query,
1495
+ dirty: true,
1496
+ freeForm: true
1497
+ });
1498
+ setLoading(true);
1499
+ if (!countryMode.disabled) await detectCountry();
1500
+ const flagTypes = globalSearchMode ? ["city", "country"] : ["country"];
1501
+ pk.search(query, {
1502
+ countries: !!country ? [country.countrycode] : options.countries,
1503
+ types: state.countryMode ? ["country"] : options.types,
1504
+ maxResults: state.countryMode ? 20 : options.maxResults
1505
+ }).then(({ results }) => {
1506
+ setLoading(false);
1507
+ if (input.value !== query) return;
1508
+ suggestions = results;
1509
+ suggestionsList.innerHTML = results.length > 0 ? results.map((item) => `
1510
+ <div class="pka-panel-suggestion" role="option" tabindex="-1" aria-selected="false">
1511
+ ${flagTypes.includes(item.type) ? options.format.flag(item.countrycode) : options.format.icon(item.type || "pin", item.type)}
1512
+ <span class="pka-panel-suggestion-label">
1513
+ <span class="pka-panel-suggestion-label-name">${item.highlight}</span>
1514
+ <span class="pka-panel-suggestion-label-sub">${options.format.sub(item)}</span>
1515
+ </span>
1516
+ <button type="button" class="pka-panel-suggestion-action" aria-label="${options.format.applySuggestion}" />
1517
+ </div>
1518
+ `).join("") : `
1519
+ <div class="pka-panel-suggestion" role="option" tabindex="-1" aria-selected="false" aria-disabled="true">
1520
+ ${options.format.icon("noresults")}
1521
+ <span class="pka-panel-suggestion-label">
1522
+ <span class="pka-panel-suggestion-label-name">
1523
+ ${options.format.noResults?.call ? options.format.noResults(query) : options.format.noResults}
1524
+ </span>
1525
+ </span>
1526
+ </div>
1527
+ `;
1528
+ popper.update();
1529
+ fireEvent("results", query, results);
1530
+ }).catch((err) => fireEvent("error", err));
1531
+ }
1532
+ function setCountry(item) {
1533
+ panel.querySelector(".pka-panel-country-open").innerHTML = item === null ? "" : `
1534
+ ${options.format.flag(item.countrycode)}
1535
+ <span class="pka-panel-country-label">${item.name}</span>
1536
+ ${options.format.icon("switch")}
1537
+ `;
1538
+ if (item?.countrycode !== country?.countrycode) {
1539
+ country = item;
1540
+ fireEvent("countryChange", country);
1541
+ }
1542
+ }
1543
+ function toggleCountryMode(bool) {
1544
+ countryMode.checked = !countryMode.disabled && (typeof bool === "undefined" ? !countryMode.checked : bool);
1545
+ setState({ countryMode: countryMode.checked });
1546
+ if (state.countryMode) {
1547
+ backupValue = input.value;
1548
+ setValue(country.name);
1549
+ input.select();
1550
+ search();
1551
+ } else if (backupValue !== null) {
1552
+ setValue(backupValue);
1553
+ backupValue = null;
1554
+ search();
1555
+ }
1556
+ }
1557
+ function detectCountry() {
1558
+ return !!country ? Promise.resolve(country) : pk.reverse({
1559
+ maxResults: 1,
1560
+ types: ["country"]
1561
+ }).then(({ results }) => {
1562
+ if (results.length) {
1563
+ setCountry(results[0]);
1564
+ return results[0];
1565
+ }
1566
+ return null;
1567
+ }).catch((err) => fireEvent("error", err));
1568
+ }
1569
+ panel.addEventListener("mousemove", (e) => {
1570
+ if (!e.movementX && !e.movementY) return;
1571
+ clearActive();
1572
+ e.target.closest("[role=\"option\"]")?.classList.add("pka-active");
1573
+ });
1574
+ panel.addEventListener("click", (e) => {
1575
+ const target = e.target.closest("[role=\"option\"]");
1576
+ if (!target) return;
1577
+ e.stopPropagation();
1578
+ const index = Array.from(suggestionsList.children).indexOf(target);
1579
+ if (e.target.closest(".pka-panel-suggestion-action")) {
1580
+ const current = suggestions[index];
1581
+ if (current) {
1582
+ setValue(`${options.format.value(current)} `, { notify: true });
1583
+ setState({
1584
+ dirty: true,
1585
+ freeForm: false
1586
+ });
1587
+ }
1588
+ } else applySuggestion(index);
1589
+ });
1590
+ countryMode.addEventListener("change", (e) => {
1591
+ toggleCountryMode(e.target.checked);
1592
+ });
1593
+ function handleInput(e) {
1594
+ if (e instanceof InputEvent) {
1595
+ togglePanel(!!input.value.trim() || state.countryMode);
1596
+ search();
1597
+ }
1598
+ }
1599
+ input.addEventListener("input", handleInput);
1600
+ function handleFocus() {
1601
+ if (!state.dirty && !!input.value) {
1602
+ togglePanel(true);
1603
+ search();
1604
+ } else togglePanel(!!input.value.trim() || state.geolocation || state.countryMode);
1605
+ }
1606
+ input.addEventListener("click", handleFocus);
1607
+ input.addEventListener("focus", handleFocus);
1608
+ function handleClickOutside(e) {
1609
+ if (![input, panel].includes(e.target) && !panel.contains(e.target)) {
1610
+ togglePanel(false);
1611
+ restoreValue(true);
1612
+ }
1613
+ }
1614
+ window.addEventListener("click", handleClickOutside);
1615
+ function handleKeyNav(e) {
1616
+ if (input === document.activeElement) {
1617
+ const isPanelOpen = panel.classList.contains("pka-open");
1618
+ switch (e.key) {
1619
+ case "Up":
1620
+ case "ArrowUp":
1621
+ if (isPanelOpen) {
1622
+ e.preventDefault();
1623
+ if (e.altKey) togglePanel(false);
1624
+ else moveActive(-1);
1625
+ }
1626
+ break;
1627
+ case "Down":
1628
+ case "ArrowDown":
1629
+ if (suggestions.length > 0) {
1630
+ if (!isPanelOpen) {
1631
+ e.preventDefault();
1632
+ togglePanel(true);
1633
+ } else if (!e.altKey) {
1634
+ e.preventDefault();
1635
+ moveActive(1);
1636
+ }
1637
+ }
1638
+ break;
1639
+ case "Enter":
1640
+ if (isPanelOpen) {
1641
+ e.preventDefault();
1642
+ applySuggestion();
1643
+ }
1644
+ break;
1645
+ case "Esc":
1646
+ case "Escape":
1647
+ e.preventDefault();
1648
+ if (isPanelOpen) if (state.countryMode) toggleCountryMode(false);
1649
+ else {
1650
+ togglePanel(false);
1651
+ restoreValue(true);
1652
+ }
1653
+ else clearInput();
1654
+ break;
1655
+ case "Tab":
1656
+ togglePanel(false);
1657
+ break;
1658
+ }
1659
+ }
1660
+ }
1661
+ window.addEventListener("keydown", handleKeyNav);
1662
+ function handleResize() {
1663
+ window.requestAnimationFrame(() => {
1664
+ panel.style.width = `${input.offsetWidth}px`;
1665
+ popper.update();
1666
+ });
1667
+ }
1668
+ handleResize();
1669
+ const resizeObserver = new ResizeObserver(handleResize);
1670
+ resizeObserver.observe(input);
1671
+ function configure(opts = {}) {
1672
+ delete opts.target;
1673
+ const { panel: panelOptions, format: formatOptions, countryAutoFill, countrySelect, ...pkOptions } = merge(options, opts);
1674
+ pk.configure(pkOptions);
1675
+ panel.setAttribute("class", `pka-panel ${options.panel.className}`.trim());
1676
+ popper.setOptions({
1677
+ placement: "bottom-start",
1678
+ strategy: options.panel.strategy,
1679
+ modifiers: [{
1680
+ name: "flip",
1681
+ enabled: options.panel.flip
1682
+ }, {
1683
+ name: "offset",
1684
+ options: { offset: [0, options.panel.offset] }
1685
+ }]
1686
+ });
1687
+ const typesStr = options.types?.join(",").toLowerCase() ?? "";
1688
+ countryMode.disabled = options.countries || !options.countrySelect || typesStr === "country";
1689
+ panel.querySelector(".pka-panel-country").setAttribute("aria-hidden", countryMode.disabled);
1690
+ globalSearchMode = !options.countries && !options.countrySelect && [
1691
+ "city",
1692
+ "city,country",
1693
+ "country,city",
1694
+ "country"
1695
+ ].includes(typesStr);
1696
+ if (options.countryAutoFill && typesStr === "country" && !state.dirty && !input.value.trim()) detectCountry().then((item) => {
1697
+ setValue(item.name, {
1698
+ notify: true,
1699
+ focus: false
1700
+ });
1701
+ setState({ freeForm: false });
1702
+ fireEvent("pick", item.name, item, 0);
1703
+ });
1704
+ }
1705
+ configure(initOptions);
1706
+ Object.defineProperty(client, "input", { get: () => input });
1707
+ Object.defineProperty(client, "options", { get: () => ({
1708
+ target,
1709
+ ...options,
1710
+ ...pk.options
1711
+ }) });
1712
+ Object.defineProperty(client, "handlers", { get: () => Object.fromEntries(handlers) });
1713
+ Object.defineProperty(client, "state", { get: () => state });
1714
+ client.setValue = (value, notify = false) => {
1715
+ setValue(value, {
1716
+ notify,
1717
+ focus: false
1718
+ });
1719
+ return client;
1720
+ };
1721
+ client.clear = clearInput;
1722
+ client.on = (event, handler) => {
1723
+ if (!isString(event)) throw `Error: first argument 'event' must be a string.`;
1724
+ if (typeof handler !== "undefined" && !handler.call) throw `Error: second argument 'handler' must be a function if defined.`;
1725
+ if (handler) handlers.set(event, handler);
1726
+ else if (handlers.has(event)) handlers.delete(event);
1727
+ return client;
1728
+ };
1729
+ client.open = () => {
1730
+ togglePanel(true);
1731
+ return client;
1732
+ };
1733
+ client.close = () => {
1734
+ togglePanel(false);
1735
+ return client;
1736
+ };
1737
+ client.configure = (opts = {}) => {
1738
+ configure(opts);
1739
+ return client;
1740
+ };
1741
+ client.requestGeolocation = (opts = {}) => {
1742
+ return pk.requestGeolocation(opts).then((pos) => {
1743
+ setState({ geolocation: true }, true);
1744
+ fireEvent("geolocation", true, pos);
1745
+ setCountry(null);
1746
+ input.focus();
1747
+ search();
1748
+ return pos;
1749
+ }).catch((err) => {
1750
+ setState({ geolocation: false }, true);
1751
+ fireEvent("geolocation", false, void 0, err.message);
1752
+ });
1753
+ };
1754
+ client.clearGeolocation = () => {
1755
+ pk.clearGeolocation();
1756
+ setState({ geolocation: false });
1757
+ return client;
1758
+ };
1759
+ client.destroy = () => {
1760
+ input.removeEventListener("input", handleInput);
1761
+ input.removeEventListener("click", handleFocus);
1762
+ input.removeEventListener("focus", handleFocus);
1763
+ window.removeEventListener("keydown", handleKeyNav);
1764
+ window.removeEventListener("click", handleClickOutside);
1765
+ resizeObserver.unobserve(input);
1766
+ panel.remove();
1767
+ };
1768
+ return client;
1769
+ }
1770
+ //#endregion
1771
+ export { placekitAutocomplete as default };