stimulus-library 0.7.5 → 0.9.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 (358) hide show
  1. package/dist/controllers/ajax/async_block_controller.js +30 -0
  2. package/dist/controllers/ajax/{index.d.ts → index.js} +0 -1
  3. package/dist/controllers/ajax/lazy_block_controller.js +37 -0
  4. package/dist/controllers/ajax/load_block_controller.js +63 -0
  5. package/dist/controllers/ajax/poll_block_controller.js +35 -0
  6. package/dist/controllers/anchor_spy_controller.js +47 -0
  7. package/dist/controllers/back_link_controller.js +25 -0
  8. package/dist/controllers/clipboard_controller.js +35 -0
  9. package/dist/controllers/confirm_controller.js +33 -0
  10. package/dist/controllers/confirm_navigation_controller.js +29 -0
  11. package/dist/controllers/debug_controller.js +7 -0
  12. package/dist/controllers/disable_with_controller.js +66 -0
  13. package/dist/controllers/dismissable_controller.js +8 -0
  14. package/dist/controllers/element_save_controller.js +80 -0
  15. package/dist/controllers/empty_dom_controller.js +42 -0
  16. package/dist/controllers/equalize_controller.js +39 -0
  17. package/dist/controllers/forms/auto_submit_form_controller.js +62 -0
  18. package/dist/controllers/forms/autosize_controller.js +32 -0
  19. package/dist/controllers/forms/char_count_controller.js +37 -0
  20. package/dist/controllers/forms/checkbox_disable_inputs_controller.js +32 -0
  21. package/dist/controllers/forms/checkbox_enable_inputs_controller.js +32 -0
  22. package/dist/controllers/forms/checkbox_select_all_controller.js +35 -0
  23. package/dist/controllers/forms/checkbox_xor_controller.js +24 -0
  24. package/dist/controllers/forms/detect_dirty_controller.js +98 -0
  25. package/dist/controllers/forms/detect_dirty_form_controller.js +107 -0
  26. package/dist/controllers/forms/enable_inputs_controller.js +21 -0
  27. package/dist/controllers/forms/focus_steal_controller.js +28 -0
  28. package/dist/controllers/forms/form_rc_controller.js +47 -0
  29. package/dist/controllers/forms/form_save_controller.js +109 -0
  30. package/dist/controllers/forms/{index.d.ts → index.js} +0 -1
  31. package/dist/controllers/forms/limited_selection_checkboxes_controller.js +28 -0
  32. package/dist/controllers/forms/navigate_form_errors_controller.js +154 -0
  33. package/dist/controllers/forms/nested_form_controller.js +49 -0
  34. package/dist/controllers/forms/password_confirm_controller.js +26 -0
  35. package/dist/controllers/forms/password_peek_controller.js +21 -0
  36. package/dist/controllers/forms/remote_form_controller.js +26 -0
  37. package/dist/controllers/forms/sync_inputs_controller.js +67 -0
  38. package/dist/controllers/forms/value_warn_controller.js +45 -0
  39. package/dist/controllers/forms/word_count_controller.js +37 -0
  40. package/dist/controllers/{index.d.ts → index.js} +3 -1
  41. package/dist/controllers/media/fallback_image_controller.js +44 -0
  42. package/dist/controllers/media/{index.d.ts → index.js} +0 -1
  43. package/dist/controllers/media/lightbox_image_controller.js +71 -0
  44. package/dist/controllers/media/media_player_controller.js +31 -0
  45. package/dist/controllers/persisted_dismissable_controller.js +19 -0
  46. package/dist/controllers/prefetch_controller.js +74 -0
  47. package/dist/controllers/print_button_controller.js +18 -0
  48. package/dist/controllers/responsive_iframe_controller.js +35 -0
  49. package/dist/controllers/scroll/{index.d.ts → index.js} +0 -1
  50. package/dist/controllers/scroll/scroll_container_controller.js +81 -0
  51. package/dist/controllers/scroll/scroll_into_focus_controller.js +20 -0
  52. package/dist/controllers/scroll/scroll_to_bottom_controller.js +37 -0
  53. package/dist/controllers/scroll/scroll_to_controller.js +22 -0
  54. package/dist/controllers/scroll/scroll_to_top_controller.js +37 -0
  55. package/dist/controllers/self_destruct_controller.js +11 -0
  56. package/dist/controllers/signal/events.js +12 -0
  57. package/dist/controllers/signal/expressions.js +54 -0
  58. package/dist/controllers/signal/{index.d.ts → index.js} +0 -1
  59. package/dist/controllers/signal/signal_action_controller.js +31 -0
  60. package/dist/controllers/signal/signal_dom_children_controller.js +40 -0
  61. package/dist/controllers/signal/signal_input_controller.js +36 -0
  62. package/dist/controllers/signal/signal_visibility_controller.js +44 -0
  63. package/dist/controllers/sticky_controller.js +44 -0
  64. package/dist/controllers/tables/{index.d.ts → index.js} +0 -1
  65. package/dist/controllers/tables/table_sort_controller.js +97 -0
  66. package/dist/controllers/tables/table_truncate_controller.js +81 -0
  67. package/dist/controllers/teleport_controller.js +48 -0
  68. package/dist/controllers/temporary_state_controller.js +65 -0
  69. package/dist/controllers/toggle_class_controller.js +115 -0
  70. package/dist/controllers/trix_modifier_controller.js +121 -0
  71. package/dist/controllers/turbo_frame_rc_controller.js +65 -0
  72. package/dist/controllers/turbo_frame_refresh_controller.js +32 -0
  73. package/dist/controllers/utility/alert_controller.js +7 -0
  74. package/dist/controllers/utility/fullscreen_controller.js +10 -0
  75. package/dist/controllers/utility/{index.d.ts → index.js} +0 -1
  76. package/dist/controllers/utility/intersection_controller.js +25 -0
  77. package/dist/controllers/utility/interval_controller.js +16 -0
  78. package/dist/controllers/utility/presence_controller.js +19 -0
  79. package/dist/controllers/utility/print_controller.js +7 -0
  80. package/dist/controllers/utility/timeout_controller.js +13 -0
  81. package/dist/controllers/utility/user_focus_controller.js +23 -0
  82. package/dist/controllers/visual/clock_controller.js +51 -0
  83. package/dist/controllers/visual/countdown_controller.js +116 -0
  84. package/dist/controllers/visual/duration_controller.js +79 -0
  85. package/dist/controllers/visual/{index.d.ts → index.js} +0 -1
  86. package/dist/controllers/visual/tabs_controller.js +79 -0
  87. package/dist/controllers/visual/time_distance_controller.js +50 -0
  88. package/dist/controllers/visual/tree_view_controller.js +92 -0
  89. package/dist/{index.d.ts → index.js} +3 -1
  90. package/dist/mixins/create_mixin.js +11 -0
  91. package/dist/mixins/{index.d.ts → index.js} +0 -1
  92. package/dist/mixins/install_class_methods.js +28 -0
  93. package/dist/mixins/use_click_outside.js +17 -0
  94. package/dist/mixins/use_event_bus.js +19 -0
  95. package/dist/mixins/use_event_listener.js +34 -0
  96. package/dist/mixins/use_fullscreen.js +42 -0
  97. package/dist/mixins/use_geolocation.js +62 -0
  98. package/dist/mixins/use_hover.js +29 -0
  99. package/dist/mixins/use_injected_html.js +37 -0
  100. package/dist/mixins/use_intersection.js +45 -0
  101. package/dist/mixins/use_interval.js +13 -0
  102. package/dist/mixins/use_localstorage.js +122 -0
  103. package/dist/mixins/use_mutation_observer.js +9 -0
  104. package/dist/mixins/use_temporary_content.js +38 -0
  105. package/dist/mixins/use_timeout.js +20 -0
  106. package/dist/mixins/use_trix_modifiers.js +71 -0
  107. package/dist/polyfills/string.replaceAll.js +13 -0
  108. package/dist/utilities/arrays.js +3 -0
  109. package/dist/utilities/base_controller.js +56 -0
  110. package/dist/utilities/elements.js +102 -0
  111. package/dist/utilities/ephemeral_controller.js +42 -0
  112. package/dist/utilities/event_bus.js +2 -0
  113. package/dist/utilities/events.js +10 -0
  114. package/dist/utilities/fetchRetry.js +22 -0
  115. package/dist/utilities/{index.d.ts → index.js} +0 -1
  116. package/dist/utilities/logging.js +82 -0
  117. package/dist/utilities/reactive.js +23 -0
  118. package/dist/utilities/request_submit.js +20 -0
  119. package/dist/utilities/scroll.js +89 -0
  120. package/dist/utilities/stimulus.js +13 -0
  121. package/dist/utilities/strings.js +5 -0
  122. package/dist/utilities/turbo.js +3 -0
  123. package/package.json +17 -24
  124. package/CHANGELOG.md +0 -513
  125. package/dist/controllers/ajax/async_block_controller.d.ts +0 -18
  126. package/dist/controllers/ajax/async_block_controller.d.ts.map +0 -1
  127. package/dist/controllers/ajax/index.d.ts.map +0 -1
  128. package/dist/controllers/ajax/lazy_block_controller.d.ts +0 -10
  129. package/dist/controllers/ajax/lazy_block_controller.d.ts.map +0 -1
  130. package/dist/controllers/ajax/load_block_controller.d.ts +0 -24
  131. package/dist/controllers/ajax/load_block_controller.d.ts.map +0 -1
  132. package/dist/controllers/ajax/poll_block_controller.d.ts +0 -16
  133. package/dist/controllers/ajax/poll_block_controller.d.ts.map +0 -1
  134. package/dist/controllers/anchor_spy_controller.d.ts +0 -21
  135. package/dist/controllers/anchor_spy_controller.d.ts.map +0 -1
  136. package/dist/controllers/back_link_controller.d.ts +0 -17
  137. package/dist/controllers/back_link_controller.d.ts.map +0 -1
  138. package/dist/controllers/clipboard_controller.d.ts +0 -19
  139. package/dist/controllers/clipboard_controller.d.ts.map +0 -1
  140. package/dist/controllers/confirm_controller.d.ts +0 -13
  141. package/dist/controllers/confirm_controller.d.ts.map +0 -1
  142. package/dist/controllers/confirm_navigation_controller.d.ts +0 -15
  143. package/dist/controllers/confirm_navigation_controller.d.ts.map +0 -1
  144. package/dist/controllers/debug_controller.d.ts +0 -7
  145. package/dist/controllers/debug_controller.d.ts.map +0 -1
  146. package/dist/controllers/disable_with_controller.d.ts +0 -20
  147. package/dist/controllers/disable_with_controller.d.ts.map +0 -1
  148. package/dist/controllers/dismissable_controller.d.ts +0 -7
  149. package/dist/controllers/dismissable_controller.d.ts.map +0 -1
  150. package/dist/controllers/element_save_controller.d.ts +0 -31
  151. package/dist/controllers/element_save_controller.d.ts.map +0 -1
  152. package/dist/controllers/empty_dom_controller.d.ts +0 -22
  153. package/dist/controllers/empty_dom_controller.d.ts.map +0 -1
  154. package/dist/controllers/equalize_controller.d.ts +0 -16
  155. package/dist/controllers/equalize_controller.d.ts.map +0 -1
  156. package/dist/controllers/forms/auto_submit_form_controller.d.ts +0 -23
  157. package/dist/controllers/forms/auto_submit_form_controller.d.ts.map +0 -1
  158. package/dist/controllers/forms/autosize_controller.d.ts +0 -9
  159. package/dist/controllers/forms/autosize_controller.d.ts.map +0 -1
  160. package/dist/controllers/forms/char_count_controller.d.ts +0 -21
  161. package/dist/controllers/forms/char_count_controller.d.ts.map +0 -1
  162. package/dist/controllers/forms/checkbox_disable_inputs_controller.d.ts +0 -17
  163. package/dist/controllers/forms/checkbox_disable_inputs_controller.d.ts.map +0 -1
  164. package/dist/controllers/forms/checkbox_enable_inputs_controller.d.ts +0 -17
  165. package/dist/controllers/forms/checkbox_enable_inputs_controller.d.ts.map +0 -1
  166. package/dist/controllers/forms/checkbox_select_all_controller.d.ts +0 -14
  167. package/dist/controllers/forms/checkbox_select_all_controller.d.ts.map +0 -1
  168. package/dist/controllers/forms/checkbox_xor_controller.d.ts +0 -9
  169. package/dist/controllers/forms/checkbox_xor_controller.d.ts.map +0 -1
  170. package/dist/controllers/forms/detect_dirty_controller.d.ts +0 -15
  171. package/dist/controllers/forms/detect_dirty_controller.d.ts.map +0 -1
  172. package/dist/controllers/forms/detect_dirty_form_controller.d.ts +0 -18
  173. package/dist/controllers/forms/detect_dirty_form_controller.d.ts.map +0 -1
  174. package/dist/controllers/forms/enable_inputs_controller.d.ts +0 -14
  175. package/dist/controllers/forms/enable_inputs_controller.d.ts.map +0 -1
  176. package/dist/controllers/forms/focus_steal_controller.d.ts +0 -12
  177. package/dist/controllers/forms/focus_steal_controller.d.ts.map +0 -1
  178. package/dist/controllers/forms/form_rc_controller.d.ts +0 -18
  179. package/dist/controllers/forms/form_rc_controller.d.ts.map +0 -1
  180. package/dist/controllers/forms/form_save_controller.d.ts +0 -32
  181. package/dist/controllers/forms/form_save_controller.d.ts.map +0 -1
  182. package/dist/controllers/forms/index.d.ts.map +0 -1
  183. package/dist/controllers/forms/limited_selection_checkboxes_controller.d.ts +0 -17
  184. package/dist/controllers/forms/limited_selection_checkboxes_controller.d.ts.map +0 -1
  185. package/dist/controllers/forms/navigate_form_errors_controller.d.ts +0 -41
  186. package/dist/controllers/forms/navigate_form_errors_controller.d.ts.map +0 -1
  187. package/dist/controllers/forms/nested_form_controller.d.ts +0 -22
  188. package/dist/controllers/forms/nested_form_controller.d.ts.map +0 -1
  189. package/dist/controllers/forms/password_confirm_controller.d.ts +0 -12
  190. package/dist/controllers/forms/password_confirm_controller.d.ts.map +0 -1
  191. package/dist/controllers/forms/password_peek_controller.d.ts +0 -9
  192. package/dist/controllers/forms/password_peek_controller.d.ts.map +0 -1
  193. package/dist/controllers/forms/remote_form_controller.d.ts +0 -14
  194. package/dist/controllers/forms/remote_form_controller.d.ts.map +0 -1
  195. package/dist/controllers/forms/sync_inputs_controller.d.ts +0 -20
  196. package/dist/controllers/forms/sync_inputs_controller.d.ts.map +0 -1
  197. package/dist/controllers/forms/value_warn_controller.d.ts +0 -31
  198. package/dist/controllers/forms/value_warn_controller.d.ts.map +0 -1
  199. package/dist/controllers/forms/word_count_controller.d.ts +0 -21
  200. package/dist/controllers/forms/word_count_controller.d.ts.map +0 -1
  201. package/dist/controllers/index.d.ts.map +0 -1
  202. package/dist/controllers/media/fallback_image_controller.d.ts +0 -20
  203. package/dist/controllers/media/fallback_image_controller.d.ts.map +0 -1
  204. package/dist/controllers/media/index.d.ts.map +0 -1
  205. package/dist/controllers/media/lightbox_image_controller.d.ts +0 -31
  206. package/dist/controllers/media/lightbox_image_controller.d.ts.map +0 -1
  207. package/dist/controllers/media/media_player_controller.d.ts +0 -10
  208. package/dist/controllers/media/media_player_controller.d.ts.map +0 -1
  209. package/dist/controllers/prefetch_controller.d.ts +0 -17
  210. package/dist/controllers/prefetch_controller.d.ts.map +0 -1
  211. package/dist/controllers/print_button_controller.d.ts +0 -8
  212. package/dist/controllers/print_button_controller.d.ts.map +0 -1
  213. package/dist/controllers/responsive_iframe_controller.d.ts +0 -17
  214. package/dist/controllers/responsive_iframe_controller.d.ts.map +0 -1
  215. package/dist/controllers/scroll/index.d.ts.map +0 -1
  216. package/dist/controllers/scroll/scroll_container_controller.d.ts +0 -22
  217. package/dist/controllers/scroll/scroll_container_controller.d.ts.map +0 -1
  218. package/dist/controllers/scroll/scroll_into_focus_controller.d.ts +0 -16
  219. package/dist/controllers/scroll/scroll_into_focus_controller.d.ts.map +0 -1
  220. package/dist/controllers/scroll/scroll_to_bottom_controller.d.ts +0 -12
  221. package/dist/controllers/scroll/scroll_to_bottom_controller.d.ts.map +0 -1
  222. package/dist/controllers/scroll/scroll_to_controller.d.ts +0 -18
  223. package/dist/controllers/scroll/scroll_to_controller.d.ts.map +0 -1
  224. package/dist/controllers/scroll/scroll_to_top_controller.d.ts +0 -12
  225. package/dist/controllers/scroll/scroll_to_top_controller.d.ts.map +0 -1
  226. package/dist/controllers/self_destruct_controller.d.ts +0 -9
  227. package/dist/controllers/self_destruct_controller.d.ts.map +0 -1
  228. package/dist/controllers/signal/events.d.ts +0 -5
  229. package/dist/controllers/signal/events.d.ts.map +0 -1
  230. package/dist/controllers/signal/expressions.d.ts +0 -2
  231. package/dist/controllers/signal/expressions.d.ts.map +0 -1
  232. package/dist/controllers/signal/index.d.ts.map +0 -1
  233. package/dist/controllers/signal/signal_action_controller.d.ts +0 -15
  234. package/dist/controllers/signal/signal_action_controller.d.ts.map +0 -1
  235. package/dist/controllers/signal/signal_dom_children_controller.d.ts +0 -17
  236. package/dist/controllers/signal/signal_dom_children_controller.d.ts.map +0 -1
  237. package/dist/controllers/signal/signal_input_controller.d.ts +0 -20
  238. package/dist/controllers/signal/signal_input_controller.d.ts.map +0 -1
  239. package/dist/controllers/signal/signal_visibility_controller.d.ts +0 -18
  240. package/dist/controllers/signal/signal_visibility_controller.d.ts.map +0 -1
  241. package/dist/controllers/sticky_controller.d.ts +0 -16
  242. package/dist/controllers/sticky_controller.d.ts.map +0 -1
  243. package/dist/controllers/tables/index.d.ts.map +0 -1
  244. package/dist/controllers/tables/table_sort_controller.d.ts +0 -20
  245. package/dist/controllers/tables/table_sort_controller.d.ts.map +0 -1
  246. package/dist/controllers/tables/table_truncate_controller.d.ts +0 -26
  247. package/dist/controllers/tables/table_truncate_controller.d.ts.map +0 -1
  248. package/dist/controllers/teleport_controller.d.ts +0 -16
  249. package/dist/controllers/teleport_controller.d.ts.map +0 -1
  250. package/dist/controllers/temporary_state_controller.d.ts +0 -27
  251. package/dist/controllers/temporary_state_controller.d.ts.map +0 -1
  252. package/dist/controllers/toggle_class_controller.d.ts +0 -36
  253. package/dist/controllers/toggle_class_controller.d.ts.map +0 -1
  254. package/dist/controllers/trix_modifier_controller.d.ts +0 -88
  255. package/dist/controllers/trix_modifier_controller.d.ts.map +0 -1
  256. package/dist/controllers/turbo_frame_rc_controller.d.ts +0 -21
  257. package/dist/controllers/turbo_frame_rc_controller.d.ts.map +0 -1
  258. package/dist/controllers/turbo_frame_refresh_controller.d.ts +0 -14
  259. package/dist/controllers/turbo_frame_refresh_controller.d.ts.map +0 -1
  260. package/dist/controllers/utility/alert_controller.d.ts +0 -9
  261. package/dist/controllers/utility/alert_controller.d.ts.map +0 -1
  262. package/dist/controllers/utility/fullscreen_controller.d.ts +0 -8
  263. package/dist/controllers/utility/fullscreen_controller.d.ts.map +0 -1
  264. package/dist/controllers/utility/index.d.ts.map +0 -1
  265. package/dist/controllers/utility/intersection_controller.d.ts +0 -14
  266. package/dist/controllers/utility/intersection_controller.d.ts.map +0 -1
  267. package/dist/controllers/utility/interval_controller.d.ts +0 -11
  268. package/dist/controllers/utility/interval_controller.d.ts.map +0 -1
  269. package/dist/controllers/utility/presence_controller.d.ts +0 -14
  270. package/dist/controllers/utility/presence_controller.d.ts.map +0 -1
  271. package/dist/controllers/utility/print_controller.d.ts +0 -5
  272. package/dist/controllers/utility/print_controller.d.ts.map +0 -1
  273. package/dist/controllers/utility/timeout_controller.d.ts +0 -10
  274. package/dist/controllers/utility/timeout_controller.d.ts.map +0 -1
  275. package/dist/controllers/utility/user_focus_controller.d.ts +0 -9
  276. package/dist/controllers/utility/user_focus_controller.d.ts.map +0 -1
  277. package/dist/controllers/visual/clock_controller.d.ts +0 -16
  278. package/dist/controllers/visual/clock_controller.d.ts.map +0 -1
  279. package/dist/controllers/visual/countdown_controller.d.ts +0 -46
  280. package/dist/controllers/visual/countdown_controller.d.ts.map +0 -1
  281. package/dist/controllers/visual/duration_controller.d.ts +0 -26
  282. package/dist/controllers/visual/duration_controller.d.ts.map +0 -1
  283. package/dist/controllers/visual/index.d.ts.map +0 -1
  284. package/dist/controllers/visual/tabs_controller.d.ts +0 -30
  285. package/dist/controllers/visual/tabs_controller.d.ts.map +0 -1
  286. package/dist/controllers/visual/time_distance_controller.d.ts +0 -16
  287. package/dist/controllers/visual/time_distance_controller.d.ts.map +0 -1
  288. package/dist/controllers/visual/tree_view_controller.d.ts +0 -26
  289. package/dist/controllers/visual/tree_view_controller.d.ts.map +0 -1
  290. package/dist/index.d.ts.map +0 -1
  291. package/dist/mixins/create_mixin.d.ts +0 -3
  292. package/dist/mixins/create_mixin.d.ts.map +0 -1
  293. package/dist/mixins/index.d.ts.map +0 -1
  294. package/dist/mixins/install_class_methods.d.ts +0 -6
  295. package/dist/mixins/install_class_methods.d.ts.map +0 -1
  296. package/dist/mixins/use_click_outside.d.ts +0 -5
  297. package/dist/mixins/use_click_outside.d.ts.map +0 -1
  298. package/dist/mixins/use_event_bus.d.ts +0 -8
  299. package/dist/mixins/use_event_bus.d.ts.map +0 -1
  300. package/dist/mixins/use_event_listener.d.ts +0 -20
  301. package/dist/mixins/use_event_listener.d.ts.map +0 -1
  302. package/dist/mixins/use_fullscreen.d.ts +0 -9
  303. package/dist/mixins/use_fullscreen.d.ts.map +0 -1
  304. package/dist/mixins/use_geolocation.d.ts +0 -19
  305. package/dist/mixins/use_geolocation.d.ts.map +0 -1
  306. package/dist/mixins/use_hover.d.ts +0 -5
  307. package/dist/mixins/use_hover.d.ts.map +0 -1
  308. package/dist/mixins/use_injected_html.d.ts +0 -11
  309. package/dist/mixins/use_injected_html.d.ts.map +0 -1
  310. package/dist/mixins/use_intersection.d.ts +0 -14
  311. package/dist/mixins/use_intersection.d.ts.map +0 -1
  312. package/dist/mixins/use_interval.d.ts +0 -3
  313. package/dist/mixins/use_interval.d.ts.map +0 -1
  314. package/dist/mixins/use_localstorage.d.ts +0 -21
  315. package/dist/mixins/use_localstorage.d.ts.map +0 -1
  316. package/dist/mixins/use_mutation_observer.d.ts +0 -3
  317. package/dist/mixins/use_mutation_observer.d.ts.map +0 -1
  318. package/dist/mixins/use_temporary_content.d.ts +0 -6
  319. package/dist/mixins/use_temporary_content.d.ts.map +0 -1
  320. package/dist/mixins/use_timeout.d.ts +0 -3
  321. package/dist/mixins/use_timeout.d.ts.map +0 -1
  322. package/dist/mixins/use_trix_modifiers.d.ts +0 -11
  323. package/dist/mixins/use_trix_modifiers.d.ts.map +0 -1
  324. package/dist/stimulus-library.cjs.js +0 -2
  325. package/dist/stimulus-library.cjs.js.map +0 -1
  326. package/dist/stimulus-library.es.js +0 -5094
  327. package/dist/stimulus-library.es.js.map +0 -1
  328. package/dist/stimulus-library.umd.js +0 -2
  329. package/dist/stimulus-library.umd.js.map +0 -1
  330. package/dist/utilities/arrays.d.ts +0 -2
  331. package/dist/utilities/arrays.d.ts.map +0 -1
  332. package/dist/utilities/base_controller.d.ts +0 -11
  333. package/dist/utilities/base_controller.d.ts.map +0 -1
  334. package/dist/utilities/elements.d.ts +0 -49
  335. package/dist/utilities/elements.d.ts.map +0 -1
  336. package/dist/utilities/ephemeral_controller.d.ts +0 -6
  337. package/dist/utilities/ephemeral_controller.d.ts.map +0 -1
  338. package/dist/utilities/event_bus.d.ts +0 -4
  339. package/dist/utilities/event_bus.d.ts.map +0 -1
  340. package/dist/utilities/events.d.ts +0 -3
  341. package/dist/utilities/events.d.ts.map +0 -1
  342. package/dist/utilities/fetchRetry.d.ts +0 -2
  343. package/dist/utilities/fetchRetry.d.ts.map +0 -1
  344. package/dist/utilities/index.d.ts.map +0 -1
  345. package/dist/utilities/logging.d.ts +0 -6
  346. package/dist/utilities/logging.d.ts.map +0 -1
  347. package/dist/utilities/reactive.d.ts +0 -2
  348. package/dist/utilities/reactive.d.ts.map +0 -1
  349. package/dist/utilities/request_submit.d.ts +0 -3
  350. package/dist/utilities/request_submit.d.ts.map +0 -1
  351. package/dist/utilities/scroll.d.ts +0 -11
  352. package/dist/utilities/scroll.d.ts.map +0 -1
  353. package/dist/utilities/stimulus.d.ts +0 -3
  354. package/dist/utilities/stimulus.d.ts.map +0 -1
  355. package/dist/utilities/strings.d.ts +0 -2
  356. package/dist/utilities/strings.d.ts.map +0 -1
  357. package/dist/utilities/turbo.d.ts +0 -2
  358. package/dist/utilities/turbo.d.ts.map +0 -1
@@ -0,0 +1,74 @@
1
+ import { BaseController } from "../utilities/base_controller";
2
+ import { useEventListener } from "../mixins/use_event_listener";
3
+ import { warn } from "../utilities/logging";
4
+ export class PrefetchController extends BaseController {
5
+ get _mode() {
6
+ return this.hasModeValue ? this.modeValue : "mouseover";
7
+ }
8
+ get _supportsPrefetch() {
9
+ var _a, _b;
10
+ const link = document.createElement('link');
11
+ return ((_a = link.relList) === null || _a === void 0 ? void 0 : _a.supports) && ((_b = link.relList) === null || _b === void 0 ? void 0 : _b.supports('prefetch'));
12
+ }
13
+ get _href() {
14
+ return this.el.href;
15
+ }
16
+ get _existingPrefetch() {
17
+ return (document.head.querySelectorAll(`link[rel="prefetch"][href="${this._href}"]`) || []).length > 0;
18
+ }
19
+ get _connectionSuitable() {
20
+ // @ts-ignore
21
+ const connection = navigator.connection;
22
+ // no way to know what network state is. Allow prefetching
23
+ if (!connection) {
24
+ return true;
25
+ }
26
+ // Don't prefetch if network conditions are poor or user has enabled data-saving mode
27
+ if (connection) {
28
+ // @ts-ignore Experimental API
29
+ if (connection.saveData) {
30
+ warn(this, 'Data Saving is enabled');
31
+ return false;
32
+ }
33
+ // @ts-ignore Experimental API
34
+ if (/2g/.test(connection.effectiveType)) {
35
+ warn(this, "Network is too slow");
36
+ return false;
37
+ }
38
+ }
39
+ return true;
40
+ }
41
+ connect() {
42
+ if (!this._supportsPrefetch) {
43
+ return;
44
+ }
45
+ switch (this._mode) {
46
+ case "intersect":
47
+ this._setupObserver();
48
+ break;
49
+ case "mouseover":
50
+ useEventListener(this, this.el, "mouseover", this.prefetch, { once: true });
51
+ break;
52
+ default:
53
+ throw new Error(`'${this._mode}' is not a supported prefetch mode`);
54
+ }
55
+ }
56
+ _setupObserver() {
57
+ const observer = new IntersectionObserver(([entry], observer) => {
58
+ if (entry.isIntersecting) {
59
+ this.prefetch();
60
+ observer.unobserve(entry.target);
61
+ }
62
+ });
63
+ observer.observe(this.element);
64
+ }
65
+ prefetch() {
66
+ if (this._existingPrefetch || !this._connectionSuitable) {
67
+ return;
68
+ }
69
+ const link = document.createElement('link');
70
+ Object.assign(link, { rel: 'prefetch', href: this._href, as: 'document' });
71
+ document.head.appendChild(link);
72
+ }
73
+ }
74
+ PrefetchController.values = { mode: String };
@@ -0,0 +1,18 @@
1
+ import { PrintController } from "./utility/print_controller";
2
+ import { useEventListener } from "../mixins/use_event_listener";
3
+ import { installClassMethods } from "../mixins/install_class_methods";
4
+ export class PrintButtonController extends PrintController {
5
+ get defaultUnsupportedClasses() {
6
+ return ["unsupported"];
7
+ }
8
+ connect() {
9
+ installClassMethods(this);
10
+ if (!("print" in window)) {
11
+ this.addUnsupportedClasses();
12
+ }
13
+ useEventListener(this, this.el, 'click', this.print);
14
+ }
15
+ }
16
+ PrintButtonController.classes = [
17
+ 'unsupported',
18
+ ];
@@ -0,0 +1,35 @@
1
+ import { BaseController } from "../utilities/base_controller";
2
+ import { useEventListener } from "../mixins/use_event_listener";
3
+ export class ResponsiveIframeWrapperController extends BaseController {
4
+ connect() {
5
+ useEventListener(this, window, "message", this.messageReceived);
6
+ }
7
+ messageReceived(message) {
8
+ let data = message.data;
9
+ if (data.hasOwnProperty("name") && data.name === "iframe-body" && data.hasOwnProperty("height")) {
10
+ this.resize(data.height);
11
+ }
12
+ }
13
+ resize(height) {
14
+ this.el.style.height = `${height}px`;
15
+ }
16
+ }
17
+ export class ResponsiveIframeBodyController extends BaseController {
18
+ connect() {
19
+ // If this Window is inside a frame
20
+ if (window.self !== window.top) {
21
+ useEventListener(this, window, "resize", this.postUpdate, { debounce: 200 });
22
+ this.postUpdate();
23
+ }
24
+ }
25
+ postUpdate() {
26
+ let payload = { name: "iframe-body", height: this.getHeight() };
27
+ window.parent.postMessage(payload, "*");
28
+ }
29
+ getHeight() {
30
+ const body = document.body;
31
+ const html = document.documentElement;
32
+ // Get the largest height out of body and html's various height measurements
33
+ return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
34
+ }
35
+ }
@@ -3,4 +3,3 @@ export * from './scroll_into_focus_controller';
3
3
  export * from './scroll_to_bottom_controller';
4
4
  export * from './scroll_to_controller';
5
5
  export * from './scroll_to_top_controller';
6
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,81 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { BaseController } from "../../utilities/base_controller";
11
+ import { scrollAbsoluteBottom, scrollAbsoluteLeft, scrollAbsoluteTop, scrollDown, scrollLeft, scrollRight, scrollUp } from "../../utilities/scroll";
12
+ export class ScrollContainerController extends BaseController {
13
+ get _increment() {
14
+ return this.hasIncrementValue ? this.incrementValue : 50;
15
+ }
16
+ get _behaviour() {
17
+ if (this.hasBehaviourValue) {
18
+ if (["auto", "smooth"].includes(this.behaviourValue)) {
19
+ return this.behaviourValue;
20
+ }
21
+ else {
22
+ throw new Error(`'${this.behaviourValue}' is not a recognised scroll behaviour`);
23
+ }
24
+ }
25
+ else {
26
+ return "auto";
27
+ }
28
+ }
29
+ scrollTop(event) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ event === null || event === void 0 ? void 0 : event.preventDefault();
32
+ yield scrollAbsoluteTop(this.el, { behavior: this._behaviour });
33
+ });
34
+ }
35
+ scrollBottom(event) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ event === null || event === void 0 ? void 0 : event.preventDefault();
38
+ yield scrollAbsoluteBottom(this.el, { behavior: this._behaviour });
39
+ });
40
+ }
41
+ scrollLeft(event) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ event === null || event === void 0 ? void 0 : event.preventDefault();
44
+ yield scrollAbsoluteLeft(this.el, { behavior: this._behaviour });
45
+ });
46
+ }
47
+ scrollRight(event) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ event === null || event === void 0 ? void 0 : event.preventDefault();
50
+ yield scrollAbsoluteLeft(this.el, { behavior: this._behaviour });
51
+ });
52
+ }
53
+ up(event) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ event === null || event === void 0 ? void 0 : event.preventDefault();
56
+ yield scrollUp(this.el, this._increment, { behavior: this._behaviour });
57
+ });
58
+ }
59
+ down(event) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ event === null || event === void 0 ? void 0 : event.preventDefault();
62
+ yield scrollDown(this.el, this._increment, { behavior: this._behaviour });
63
+ });
64
+ }
65
+ left(event) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ event === null || event === void 0 ? void 0 : event.preventDefault();
68
+ yield scrollLeft(this.el, this._increment, { behavior: this._behaviour });
69
+ });
70
+ }
71
+ right(event) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ event === null || event === void 0 ? void 0 : event.preventDefault();
74
+ yield scrollRight(this.el, this._increment, { behavior: this._behaviour });
75
+ });
76
+ }
77
+ }
78
+ ScrollContainerController.values = {
79
+ behaviour: String,
80
+ increment: Number,
81
+ };
@@ -0,0 +1,20 @@
1
+ import { EphemeralController } from "../../utilities/ephemeral_controller";
2
+ import { scrollToElement } from "../../utilities/scroll";
3
+ export class ScrollIntoFocusController extends EphemeralController {
4
+ connect() {
5
+ requestAnimationFrame(() => {
6
+ // Attempt smooth scrolling, with polyfill
7
+ scrollToElement(this.el, {
8
+ behavior: this.hasBehaviorValue ? this.behaviorValue : "smooth",
9
+ block: this.hasBlockValue ? this.blockValue : "center",
10
+ inline: this.hasInlineValue ? this.inlineValue : "center",
11
+ }).catch(() => this.el.scrollIntoView()); // Fallback to snap-scrolling
12
+ this._cleanupSelf();
13
+ });
14
+ }
15
+ }
16
+ ScrollIntoFocusController.values = {
17
+ behavior: String,
18
+ block: String,
19
+ inline: String,
20
+ };
@@ -0,0 +1,37 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { BaseController } from "../../utilities/base_controller";
11
+ import { getScrollParent, scrollAbsoluteBottom } from "../../utilities/scroll";
12
+ export class ScrollToBottomController extends BaseController {
13
+ get _mode() {
14
+ return this.hasModeValue ? this.modeValue : "document";
15
+ }
16
+ get _scrollTarget() {
17
+ let target;
18
+ if (this._mode == "document") {
19
+ target = window;
20
+ }
21
+ else {
22
+ target = getScrollParent(this.el);
23
+ }
24
+ return target;
25
+ }
26
+ scroll(event) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ event === null || event === void 0 ? void 0 : event.preventDefault();
29
+ if (this._scrollTarget) {
30
+ yield scrollAbsoluteBottom(this._scrollTarget);
31
+ }
32
+ });
33
+ }
34
+ }
35
+ ScrollToBottomController.values = {
36
+ mode: String,
37
+ };
@@ -0,0 +1,22 @@
1
+ import { BaseController } from "../../utilities/base_controller";
2
+ import { scrollToElement } from "../../utilities/scroll";
3
+ export class ScrollToController extends BaseController {
4
+ scroll() {
5
+ let target = document.querySelector(this.selectorValue);
6
+ if (!target) {
7
+ console.warn(`Could not find target for '${this.selectorValue}'`);
8
+ return;
9
+ }
10
+ scrollToElement(target, {
11
+ behavior: this.hasBehaviorValue ? this.behaviorValue : "smooth",
12
+ block: this.hasBlockValue ? this.blockValue : "center",
13
+ inline: this.hasInlineValue ? this.inlineValue : "center",
14
+ }).catch(() => target.scrollIntoView()); // Fallback to snap-scrolling
15
+ }
16
+ }
17
+ ScrollToController.values = {
18
+ selector: String,
19
+ behavior: String,
20
+ block: String,
21
+ inline: String,
22
+ };
@@ -0,0 +1,37 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { BaseController } from "../../utilities/base_controller";
11
+ import { getScrollParent, scrollAbsoluteTop } from "../../utilities/scroll";
12
+ export class ScrollToTopController extends BaseController {
13
+ get _mode() {
14
+ return this.hasModeValue ? this.modeValue : "document";
15
+ }
16
+ get _scrollTarget() {
17
+ let target;
18
+ if (this._mode == "document") {
19
+ target = window;
20
+ }
21
+ else {
22
+ target = getScrollParent(this.el);
23
+ }
24
+ return target;
25
+ }
26
+ scroll(event) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ event === null || event === void 0 ? void 0 : event.preventDefault();
29
+ if (this._scrollTarget) {
30
+ yield scrollAbsoluteTop(this._scrollTarget);
31
+ }
32
+ });
33
+ }
34
+ }
35
+ ScrollToTopController.values = {
36
+ mode: String,
37
+ };
@@ -0,0 +1,11 @@
1
+ import { BaseController } from "../utilities/base_controller";
2
+ import { useTimeout } from "../mixins/use_timeout";
3
+ export class SelfDestructController extends BaseController {
4
+ connect() {
5
+ requestAnimationFrame(() => {
6
+ // Only start countdown on first paint
7
+ useTimeout(this, () => this.el.remove(), this.secondsValue * 1000);
8
+ });
9
+ }
10
+ }
11
+ SelfDestructController.values = { seconds: Number };
@@ -0,0 +1,12 @@
1
+ export function signalEventName(name, type) {
2
+ return `signal:${type}:${name}`;
3
+ }
4
+ export function signalConnectEvent(name) {
5
+ return signalEventName(name, 'connect');
6
+ }
7
+ export function signalValueEvent(name) {
8
+ return signalEventName(name, 'value');
9
+ }
10
+ export function signalVisibilityEvent(name, action) {
11
+ return signalEventName(`${name}:${action}`, 'visibility');
12
+ }
@@ -0,0 +1,54 @@
1
+ export function extractPredicates(expressionString) {
2
+ expressionString = expressionString.trim();
3
+ let andExpression = expressionString.includes("&&");
4
+ let orExpression = expressionString.includes("||");
5
+ let groupings = expressionString.includes("(") || expressionString.includes(")");
6
+ if (andExpression && orExpression) {
7
+ throw new Error("Cannot have both && and || in the same expression.");
8
+ }
9
+ if (groupings) {
10
+ throw new Error("Cannot have logical groupings `(>3 && <= 9) || (>1 && <2)` in the expression. Only supports simple expressions like `>1 && <3`");
11
+ }
12
+ let expressions = expressionString.split(andExpression ? "&&" : "||");
13
+ if (andExpression) {
14
+ return expressions.map(ex => _predicateForExpression(ex));
15
+ }
16
+ else if (orExpression) {
17
+ return expressions.map(ex => _predicateForExpression(ex));
18
+ }
19
+ else {
20
+ return [_predicateForExpression(expressionString)];
21
+ }
22
+ }
23
+ function _predicateForExpression(expression) {
24
+ let operators = [">=", "<=", "==", "!=", ">", "<"];
25
+ let operator = operators.find(part => expression.includes(part));
26
+ if (!operator) {
27
+ throw new Error(`Could not find operator in expression: ${expression}`);
28
+ }
29
+ let expressionValue = expression.split(operator)[1].trim();
30
+ let isNumber = /^-?\d*(\.\d+)?$/.test(expressionValue);
31
+ if (isNumber) {
32
+ expressionValue = parseFloat(expressionValue);
33
+ }
34
+ if (expressionValue === "") {
35
+ throw new Error(`Could not find a value in expression: ${expression}`);
36
+ }
37
+ let notEmpty = (signalValue) => signalValue !== "";
38
+ switch (operator) {
39
+ case ">":
40
+ return (signalValue) => isNumber && notEmpty(signalValue) && signalValue > expressionValue;
41
+ case "<":
42
+ return (signalValue) => isNumber && notEmpty(signalValue) && signalValue < expressionValue;
43
+ case ">=":
44
+ return (signalValue) => isNumber && notEmpty(signalValue) && signalValue >= expressionValue;
45
+ case "<=":
46
+ return (signalValue) => isNumber && notEmpty(signalValue) && signalValue <= expressionValue;
47
+ case "==":
48
+ return (signalValue) => notEmpty(signalValue) && signalValue == expressionValue;
49
+ case "!=":
50
+ return (signalValue) => notEmpty(signalValue) && signalValue != expressionValue;
51
+ default:
52
+ throw new Error(`Unknown operator ${operator}`);
53
+ }
54
+ }
@@ -2,4 +2,3 @@ export * from './signal_action_controller';
2
2
  export * from './signal_dom_children_controller';
3
3
  export * from './signal_input_controller';
4
4
  export * from './signal_visibility_controller';
5
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,31 @@
1
+ import { BaseController } from "../../utilities/base_controller";
2
+ import { extractPredicates } from "./expressions";
3
+ import { useEventBus } from "../../mixins/use_event_bus";
4
+ import { EventBus } from "../../utilities";
5
+ import { signalConnectEvent, signalEventName, signalValueEvent } from "./events";
6
+ export class SignalActionController extends BaseController {
7
+ get _predicates() {
8
+ return extractPredicates(this.whenValue);
9
+ }
10
+ connect() {
11
+ EventBus.emit(signalConnectEvent(this.nameValue));
12
+ useEventBus(this, signalValueEvent(this.nameValue), this._onSignal);
13
+ }
14
+ _onSignal(payload) {
15
+ let value = payload.value;
16
+ if (!this.hasWhenValue) {
17
+ this.dispatchEvent(this.el, signalEventName(this.nameValue, 'match'));
18
+ return;
19
+ }
20
+ if (this._predicates.every(predicate => predicate(value))) {
21
+ this.dispatchEvent(this.el, signalEventName(this.nameValue, 'match'), { detail: { element: this.el, value } });
22
+ }
23
+ else {
24
+ this.dispatchEvent(this.el, signalEventName(this.nameValue, 'no-match'), { detail: { element: this.el, value } });
25
+ }
26
+ }
27
+ }
28
+ SignalActionController.values = {
29
+ name: String,
30
+ when: String,
31
+ };
@@ -0,0 +1,40 @@
1
+ import { BaseController } from "../../utilities/base_controller";
2
+ import { EventBus } from "../../utilities";
3
+ import { signalConnectEvent, signalValueEvent } from "./events";
4
+ import { useMutationObserver } from "../../mixins/use_mutation_observer";
5
+ import { useEventBus } from "../../mixins/use_event_bus";
6
+ export class SignalDomChildrenController extends BaseController {
7
+ get _children() {
8
+ if (this.hasScopeSelectorValue) {
9
+ return Array.from(this.el.querySelectorAll(this.scopeSelectorValue));
10
+ }
11
+ else {
12
+ return Array.from(this.el.children);
13
+ }
14
+ }
15
+ get _name() {
16
+ if (this.hasNameValue) {
17
+ return this.nameValue;
18
+ }
19
+ else {
20
+ throw new Error("SignalEmptyDomController requires a nameValue to be provided");
21
+ }
22
+ }
23
+ connect() {
24
+ useEventBus(this, signalConnectEvent(this._name), this.emitChildCount);
25
+ EventBus.emit(signalConnectEvent(this._name));
26
+ useMutationObserver(this, this.el, this.mutate, { childList: true });
27
+ this.emitChildCount();
28
+ }
29
+ mutate(entries) {
30
+ this.emitChildCount();
31
+ }
32
+ emitChildCount() {
33
+ let childCount = this._children.length;
34
+ EventBus.emit(signalValueEvent(this._name), { element: this.el, value: childCount.toString() });
35
+ }
36
+ }
37
+ SignalDomChildrenController.values = {
38
+ name: String,
39
+ scopeSelector: String,
40
+ };
@@ -0,0 +1,36 @@
1
+ import { BaseController } from "../../utilities/base_controller";
2
+ import { EventBus } from "../../utilities/event_bus";
3
+ import { useEventListeners } from "../../mixins/use_event_listener";
4
+ import { getAllRadiosInGroup, isHTMLInputElement } from "../../utilities";
5
+ import { signalConnectEvent, signalValueEvent } from "./events";
6
+ import { useEventBus } from "../../mixins/use_event_bus";
7
+ export class SignalInputController extends BaseController {
8
+ get _debounceTimeout() {
9
+ return this.hasDebounceIntervalValue ? this.debounceIntervalValue : 1;
10
+ }
11
+ get _name() {
12
+ return this.hasNameValue ? this.nameValue : this.element.name;
13
+ }
14
+ connect() {
15
+ useEventBus(this, signalConnectEvent(this._name), () => this.emitValue());
16
+ useEventListeners(this, this.el, ["input", "change"], this.emitValue, { debounce: this._debounceTimeout || undefined });
17
+ requestAnimationFrame(() => this.emitValue());
18
+ }
19
+ emitValue() {
20
+ var _a;
21
+ let value = this.el.value;
22
+ if (isHTMLInputElement(this.el) && this.el.type === "checkbox") {
23
+ value = this.el.checked ? "true" : "false";
24
+ }
25
+ else if (isHTMLInputElement(this.el) && this.el.type === "radio") {
26
+ let selectedValue = (_a = getAllRadiosInGroup(this.el).find(el => el.checked)) === null || _a === void 0 ? void 0 : _a.value;
27
+ value = selectedValue ? selectedValue : "";
28
+ }
29
+ this.dispatchEvent(this.el, signalValueEvent(this._name), { detail: { value } });
30
+ EventBus.emit(signalValueEvent(this._name), { element: this.el, value });
31
+ }
32
+ }
33
+ SignalInputController.values = {
34
+ name: String,
35
+ debounceInterval: Number,
36
+ };
@@ -0,0 +1,44 @@
1
+ import { BaseController } from "../../utilities/base_controller";
2
+ import { useEventBus } from "../../mixins/use_event_bus";
3
+ import { extractPredicates } from "./expressions";
4
+ import { signalConnectEvent, signalValueEvent, signalVisibilityEvent } from "./events";
5
+ import { EventBus } from "../../utilities";
6
+ import { installClassMethods } from "../../mixins/install_class_methods";
7
+ export class SignalVisibilityController extends BaseController {
8
+ get _predicates() {
9
+ return extractPredicates(this.showValue);
10
+ }
11
+ get defaultHideClasses() {
12
+ return ["hide"];
13
+ }
14
+ connect() {
15
+ installClassMethods(this);
16
+ EventBus.emit(signalConnectEvent(this.nameValue));
17
+ useEventBus(this, signalValueEvent(this.nameValue), this._onSignal);
18
+ }
19
+ _onSignal(payload) {
20
+ let value = payload.value;
21
+ if (this.showValue == "default") {
22
+ if (value == "") {
23
+ this.removeHideClasses(this.el);
24
+ }
25
+ else {
26
+ this.addHideClasses(this.el);
27
+ }
28
+ return;
29
+ }
30
+ if (this._predicates.every(predicate => predicate(value))) {
31
+ this.dispatchEvent(this.el, signalVisibilityEvent(this.nameValue, "show"), { detail: { predicate: this.showValue, value } });
32
+ this.removeHideClasses(this.el);
33
+ }
34
+ else {
35
+ this.dispatchEvent(this.el, signalVisibilityEvent(this.nameValue, "hide"), { detail: { predicate: this.showValue, value } });
36
+ this.addHideClasses(this.el);
37
+ }
38
+ }
39
+ }
40
+ SignalVisibilityController.values = {
41
+ name: String,
42
+ show: String,
43
+ };
44
+ SignalVisibilityController.classes = ['hide'];
@@ -0,0 +1,44 @@
1
+ import { BaseController } from "../utilities/base_controller";
2
+ import { useInjectedElement } from "../mixins/use_injected_html";
3
+ export class StickyController extends BaseController {
4
+ constructor() {
5
+ super(...arguments);
6
+ this._magicElement = null;
7
+ }
8
+ get defaultStuckClasses() {
9
+ return ["stuck"];
10
+ }
11
+ get _mode() {
12
+ if (this.hasModeValue) {
13
+ if (!['top', 'bottom'].includes(this.modeValue)) {
14
+ throw new Error(`The modeValue provided '${this.modeValue}' is not one of the recognised configuration options`);
15
+ }
16
+ if (this.modeValue === 'top') {
17
+ return 'beforebegin';
18
+ }
19
+ }
20
+ return "afterend";
21
+ }
22
+ connect() {
23
+ this._magicElement = document.createElement("div");
24
+ useInjectedElement(this, this.el, this._mode, this._magicElement);
25
+ const observer = new IntersectionObserver(entries => {
26
+ entries.forEach(entry => {
27
+ if (entry.target !== this._magicElement) {
28
+ return;
29
+ }
30
+ if (entry.intersectionRatio === 0) {
31
+ this.addStuckClasses();
32
+ }
33
+ else if (entry.intersectionRatio === 1) {
34
+ this.removeStuckClasses();
35
+ }
36
+ });
37
+ }, {
38
+ threshold: [0, 1],
39
+ });
40
+ observer.observe(this._magicElement);
41
+ }
42
+ }
43
+ StickyController.classes = ["stuck"];
44
+ StickyController.values = { mode: String };
@@ -1,3 +1,2 @@
1
1
  export * from './table_sort_controller';
2
2
  export * from './table_truncate_controller';
3
- //# sourceMappingURL=index.d.ts.map