yattho_view_components 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (991) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +0 -0
  3. data/README.md +17 -0
  4. data/app/assets/javascripts/app/components/yattho/alpha/dropdown/menu.d.ts +1 -0
  5. data/app/assets/javascripts/app/components/yattho/alpha/dropdown.d.ts +1 -0
  6. data/app/assets/javascripts/app/components/yattho/alpha/image_crop.d.ts +1 -0
  7. data/app/assets/javascripts/app/components/yattho/alpha/modal_dialog.d.ts +18 -0
  8. data/app/assets/javascripts/app/components/yattho/alpha/nav_list.d.ts +25 -0
  9. data/app/assets/javascripts/app/components/yattho/alpha/segmented_control.d.ts +12 -0
  10. data/app/assets/javascripts/app/components/yattho/alpha/tab_container.d.ts +1 -0
  11. data/app/assets/javascripts/app/components/yattho/alpha/toggle_switch.d.ts +29 -0
  12. data/app/assets/javascripts/app/components/yattho/alpha/tool_tip.d.ts +25 -0
  13. data/app/assets/javascripts/app/components/yattho/alpha/x_banner.d.ts +11 -0
  14. data/app/assets/javascripts/app/components/yattho/beta/auto_complete/auto_complete.d.ts +1 -0
  15. data/app/assets/javascripts/app/components/yattho/beta/clipboard_copy.d.ts +1 -0
  16. data/app/assets/javascripts/app/components/yattho/local_time.d.ts +1 -0
  17. data/app/assets/javascripts/app/components/yattho/time_ago_component.d.ts +1 -0
  18. data/app/assets/javascripts/app/components/yattho/yattho.d.ts +16 -0
  19. data/app/assets/javascripts/lib/yattho/forms/toggle_switch_input.d.ts +5 -0
  20. data/app/assets/javascripts/lib/yattho/forms/yattho_multi_input.d.ts +10 -0
  21. data/app/assets/javascripts/lib/yattho/forms/yattho_text_field.d.ts +1 -0
  22. data/app/assets/javascripts/yattho_view_components.js +2 -0
  23. data/app/assets/javascripts/yattho_view_components.js.map +1 -0
  24. data/app/assets/styles/yattho_view_components.css +5958 -0
  25. data/app/assets/styles/yattho_view_components.css.map +1 -0
  26. data/app/components/yattho/alpha/action_list/divider.rb +35 -0
  27. data/app/components/yattho/alpha/action_list/heading.html.erb +8 -0
  28. data/app/components/yattho/alpha/action_list/heading.rb +38 -0
  29. data/app/components/yattho/alpha/action_list/item.html.erb +39 -0
  30. data/app/components/yattho/alpha/action_list/item.rb +242 -0
  31. data/app/components/yattho/alpha/action_list.css +697 -0
  32. data/app/components/yattho/alpha/action_list.css.json +1 -0
  33. data/app/components/yattho/alpha/action_list.css.map +1 -0
  34. data/app/components/yattho/alpha/action_list.html.erb +15 -0
  35. data/app/components/yattho/alpha/action_list.pcss +682 -0
  36. data/app/components/yattho/alpha/action_list.rb +112 -0
  37. data/app/components/yattho/alpha/auto_complete/auto_complete.html.erb +24 -0
  38. data/app/components/yattho/alpha/auto_complete/item.rb +46 -0
  39. data/app/components/yattho/alpha/auto_complete.css +130 -0
  40. data/app/components/yattho/alpha/auto_complete.css.json +1 -0
  41. data/app/components/yattho/alpha/auto_complete.css.map +1 -0
  42. data/app/components/yattho/alpha/auto_complete.pcss +118 -0
  43. data/app/components/yattho/alpha/auto_complete.rb +159 -0
  44. data/app/components/yattho/alpha/banner.css +131 -0
  45. data/app/components/yattho/alpha/banner.css.json +1 -0
  46. data/app/components/yattho/alpha/banner.css.map +1 -0
  47. data/app/components/yattho/alpha/banner.html.erb +33 -0
  48. data/app/components/yattho/alpha/banner.pcss +126 -0
  49. data/app/components/yattho/alpha/banner.rb +138 -0
  50. data/app/components/yattho/alpha/button_marketing.css +211 -0
  51. data/app/components/yattho/alpha/button_marketing.css.json +1 -0
  52. data/app/components/yattho/alpha/button_marketing.css.map +1 -0
  53. data/app/components/yattho/alpha/button_marketing.pcss +175 -0
  54. data/app/components/yattho/alpha/button_marketing.rb +70 -0
  55. data/app/components/yattho/alpha/dialog/body.rb +28 -0
  56. data/app/components/yattho/alpha/dialog/footer.rb +34 -0
  57. data/app/components/yattho/alpha/dialog/header.html.erb +15 -0
  58. data/app/components/yattho/alpha/dialog/header.rb +40 -0
  59. data/app/components/yattho/alpha/dialog.css +613 -0
  60. data/app/components/yattho/alpha/dialog.css.json +1 -0
  61. data/app/components/yattho/alpha/dialog.css.map +1 -0
  62. data/app/components/yattho/alpha/dialog.html.erb +12 -0
  63. data/app/components/yattho/alpha/dialog.pcss +484 -0
  64. data/app/components/yattho/alpha/dialog.rb +164 -0
  65. data/app/components/yattho/alpha/dropdown/menu.d.ts +1 -0
  66. data/app/components/yattho/alpha/dropdown/menu.html.erb +24 -0
  67. data/app/components/yattho/alpha/dropdown/menu.js +1 -0
  68. data/app/components/yattho/alpha/dropdown/menu.rb +108 -0
  69. data/app/components/yattho/alpha/dropdown/menu.ts +1 -0
  70. data/app/components/yattho/alpha/dropdown.css +264 -0
  71. data/app/components/yattho/alpha/dropdown.css.json +1 -0
  72. data/app/components/yattho/alpha/dropdown.css.map +1 -0
  73. data/app/components/yattho/alpha/dropdown.d.ts +1 -0
  74. data/app/components/yattho/alpha/dropdown.html.erb +8 -0
  75. data/app/components/yattho/alpha/dropdown.js +1 -0
  76. data/app/components/yattho/alpha/dropdown.pcss +260 -0
  77. data/app/components/yattho/alpha/dropdown.rb +154 -0
  78. data/app/components/yattho/alpha/dropdown.ts +1 -0
  79. data/app/components/yattho/alpha/hellip_button.rb +41 -0
  80. data/app/components/yattho/alpha/hidden_text_expander.rb +57 -0
  81. data/app/components/yattho/alpha/image.rb +50 -0
  82. data/app/components/yattho/alpha/image_crop.d.ts +1 -0
  83. data/app/components/yattho/alpha/image_crop.html.erb +12 -0
  84. data/app/components/yattho/alpha/image_crop.js +1 -0
  85. data/app/components/yattho/alpha/image_crop.rb +39 -0
  86. data/app/components/yattho/alpha/image_crop.ts +1 -0
  87. data/app/components/yattho/alpha/layout.css +398 -0
  88. data/app/components/yattho/alpha/layout.css.json +1 -0
  89. data/app/components/yattho/alpha/layout.css.map +1 -0
  90. data/app/components/yattho/alpha/layout.html.erb +5 -0
  91. data/app/components/yattho/alpha/layout.pcss +268 -0
  92. data/app/components/yattho/alpha/layout.rb +282 -0
  93. data/app/components/yattho/alpha/menu.css +117 -0
  94. data/app/components/yattho/alpha/menu.css.json +1 -0
  95. data/app/components/yattho/alpha/menu.css.map +1 -0
  96. data/app/components/yattho/alpha/menu.html.erb +6 -0
  97. data/app/components/yattho/alpha/menu.pcss +119 -0
  98. data/app/components/yattho/alpha/menu.rb +76 -0
  99. data/app/components/yattho/alpha/modal_dialog.d.ts +18 -0
  100. data/app/components/yattho/alpha/modal_dialog.js +162 -0
  101. data/app/components/yattho/alpha/modal_dialog.ts +173 -0
  102. data/app/components/yattho/alpha/nav_list/item.html.erb +13 -0
  103. data/app/components/yattho/alpha/nav_list/item.rb +125 -0
  104. data/app/components/yattho/alpha/nav_list/section.html.erb +3 -0
  105. data/app/components/yattho/alpha/nav_list/section.rb +85 -0
  106. data/app/components/yattho/alpha/nav_list.d.ts +25 -0
  107. data/app/components/yattho/alpha/nav_list.html.erb +10 -0
  108. data/app/components/yattho/alpha/nav_list.js +130 -0
  109. data/app/components/yattho/alpha/nav_list.rb +112 -0
  110. data/app/components/yattho/alpha/nav_list.ts +129 -0
  111. data/app/components/yattho/alpha/octicon_symbols.html.erb +3 -0
  112. data/app/components/yattho/alpha/octicon_symbols.rb +60 -0
  113. data/app/components/yattho/alpha/segmented_control/item.html.erb +13 -0
  114. data/app/components/yattho/alpha/segmented_control/item.rb +29 -0
  115. data/app/components/yattho/alpha/segmented_control.css +164 -0
  116. data/app/components/yattho/alpha/segmented_control.css.json +1 -0
  117. data/app/components/yattho/alpha/segmented_control.css.map +1 -0
  118. data/app/components/yattho/alpha/segmented_control.d.ts +12 -0
  119. data/app/components/yattho/alpha/segmented_control.html.erb +7 -0
  120. data/app/components/yattho/alpha/segmented_control.js +47 -0
  121. data/app/components/yattho/alpha/segmented_control.pcss +134 -0
  122. data/app/components/yattho/alpha/segmented_control.rb +96 -0
  123. data/app/components/yattho/alpha/segmented_control.ts +41 -0
  124. data/app/components/yattho/alpha/tab_container.d.ts +1 -0
  125. data/app/components/yattho/alpha/tab_container.js +1 -0
  126. data/app/components/yattho/alpha/tab_container.rb +43 -0
  127. data/app/components/yattho/alpha/tab_container.ts +1 -0
  128. data/app/components/yattho/alpha/tab_nav.css +106 -0
  129. data/app/components/yattho/alpha/tab_nav.css.json +1 -0
  130. data/app/components/yattho/alpha/tab_nav.css.map +1 -0
  131. data/app/components/yattho/alpha/tab_nav.html.erb +9 -0
  132. data/app/components/yattho/alpha/tab_nav.pcss +100 -0
  133. data/app/components/yattho/alpha/tab_nav.rb +129 -0
  134. data/app/components/yattho/alpha/tab_panels.html.erb +14 -0
  135. data/app/components/yattho/alpha/tab_panels.rb +82 -0
  136. data/app/components/yattho/alpha/text_field.css +836 -0
  137. data/app/components/yattho/alpha/text_field.css.json +1 -0
  138. data/app/components/yattho/alpha/text_field.css.map +1 -0
  139. data/app/components/yattho/alpha/text_field.pcss +689 -0
  140. data/app/components/yattho/alpha/text_field.rb +105 -0
  141. data/app/components/yattho/alpha/toggle_switch.css +253 -0
  142. data/app/components/yattho/alpha/toggle_switch.css.json +1 -0
  143. data/app/components/yattho/alpha/toggle_switch.css.map +1 -0
  144. data/app/components/yattho/alpha/toggle_switch.d.ts +29 -0
  145. data/app/components/yattho/alpha/toggle_switch.html.erb +43 -0
  146. data/app/components/yattho/alpha/toggle_switch.js +156 -0
  147. data/app/components/yattho/alpha/toggle_switch.pcss +250 -0
  148. data/app/components/yattho/alpha/toggle_switch.rb +90 -0
  149. data/app/components/yattho/alpha/toggle_switch.ts +173 -0
  150. data/app/components/yattho/alpha/tool_tip.d.ts +25 -0
  151. data/app/components/yattho/alpha/tool_tip.js +369 -0
  152. data/app/components/yattho/alpha/tool_tip.ts +370 -0
  153. data/app/components/yattho/alpha/tooltip.rb +127 -0
  154. data/app/components/yattho/alpha/underline_nav.css +148 -0
  155. data/app/components/yattho/alpha/underline_nav.css.json +1 -0
  156. data/app/components/yattho/alpha/underline_nav.css.map +1 -0
  157. data/app/components/yattho/alpha/underline_nav.html.erb +13 -0
  158. data/app/components/yattho/alpha/underline_nav.pcss +133 -0
  159. data/app/components/yattho/alpha/underline_nav.rb +138 -0
  160. data/app/components/yattho/alpha/underline_panels.html.erb +18 -0
  161. data/app/components/yattho/alpha/underline_panels.rb +86 -0
  162. data/app/components/yattho/alpha/x_banner.d.ts +11 -0
  163. data/app/components/yattho/alpha/x_banner.js +35 -0
  164. data/app/components/yattho/alpha/x_banner.ts +38 -0
  165. data/app/components/yattho/base_component.rb +173 -0
  166. data/app/components/yattho/beta/auto_complete/auto_complete.d.ts +1 -0
  167. data/app/components/yattho/beta/auto_complete/auto_complete.html.erb +28 -0
  168. data/app/components/yattho/beta/auto_complete/auto_complete.js +1 -0
  169. data/app/components/yattho/beta/auto_complete/auto_complete.ts +1 -0
  170. data/app/components/yattho/beta/auto_complete/item.html.erb +21 -0
  171. data/app/components/yattho/beta/auto_complete/item.rb +80 -0
  172. data/app/components/yattho/beta/auto_complete.rb +201 -0
  173. data/app/components/yattho/beta/avatar.css +74 -0
  174. data/app/components/yattho/beta/avatar.css.json +1 -0
  175. data/app/components/yattho/beta/avatar.css.map +1 -0
  176. data/app/components/yattho/beta/avatar.pcss +73 -0
  177. data/app/components/yattho/beta/avatar.rb +84 -0
  178. data/app/components/yattho/beta/avatar_stack.css +138 -0
  179. data/app/components/yattho/beta/avatar_stack.css.json +1 -0
  180. data/app/components/yattho/beta/avatar_stack.css.map +1 -0
  181. data/app/components/yattho/beta/avatar_stack.html.erb +10 -0
  182. data/app/components/yattho/beta/avatar_stack.pcss +141 -0
  183. data/app/components/yattho/beta/avatar_stack.rb +92 -0
  184. data/app/components/yattho/beta/base_button.rb +48 -0
  185. data/app/components/yattho/beta/blankslate.css +90 -0
  186. data/app/components/yattho/beta/blankslate.css.json +1 -0
  187. data/app/components/yattho/beta/blankslate.css.map +1 -0
  188. data/app/components/yattho/beta/blankslate.html.erb +17 -0
  189. data/app/components/yattho/beta/blankslate.pcss +90 -0
  190. data/app/components/yattho/beta/blankslate.rb +238 -0
  191. data/app/components/yattho/beta/border_box/header.html.erb +4 -0
  192. data/app/components/yattho/beta/border_box/header.rb +52 -0
  193. data/app/components/yattho/beta/border_box.css +279 -0
  194. data/app/components/yattho/beta/border_box.css.json +1 -0
  195. data/app/components/yattho/beta/border_box.css.map +1 -0
  196. data/app/components/yattho/beta/border_box.html.erb +12 -0
  197. data/app/components/yattho/beta/border_box.pcss +284 -0
  198. data/app/components/yattho/beta/border_box.rb +147 -0
  199. data/app/components/yattho/beta/breadcrumbs.css +27 -0
  200. data/app/components/yattho/beta/breadcrumbs.css.json +1 -0
  201. data/app/components/yattho/beta/breadcrumbs.css.map +1 -0
  202. data/app/components/yattho/beta/breadcrumbs.html.erb +8 -0
  203. data/app/components/yattho/beta/breadcrumbs.pcss +30 -0
  204. data/app/components/yattho/beta/breadcrumbs.rb +82 -0
  205. data/app/components/yattho/beta/button.css +365 -0
  206. data/app/components/yattho/beta/button.css.json +1 -0
  207. data/app/components/yattho/beta/button.css.map +1 -0
  208. data/app/components/yattho/beta/button.html.erb +23 -0
  209. data/app/components/yattho/beta/button.pcss +344 -0
  210. data/app/components/yattho/beta/button.rb +198 -0
  211. data/app/components/yattho/beta/button_group.html.erb +5 -0
  212. data/app/components/yattho/beta/button_group.rb +59 -0
  213. data/app/components/yattho/beta/clipboard_copy.d.ts +1 -0
  214. data/app/components/yattho/beta/clipboard_copy.html.erb +8 -0
  215. data/app/components/yattho/beta/clipboard_copy.js +43 -0
  216. data/app/components/yattho/beta/clipboard_copy.rb +50 -0
  217. data/app/components/yattho/beta/clipboard_copy.ts +55 -0
  218. data/app/components/yattho/beta/close_button.rb +41 -0
  219. data/app/components/yattho/beta/counter.css +36 -0
  220. data/app/components/yattho/beta/counter.css.json +1 -0
  221. data/app/components/yattho/beta/counter.css.map +1 -0
  222. data/app/components/yattho/beta/counter.pcss +35 -0
  223. data/app/components/yattho/beta/counter.rb +114 -0
  224. data/app/components/yattho/beta/details.html.erb +4 -0
  225. data/app/components/yattho/beta/details.rb +72 -0
  226. data/app/components/yattho/beta/flash.css +150 -0
  227. data/app/components/yattho/beta/flash.css.json +1 -0
  228. data/app/components/yattho/beta/flash.css.map +1 -0
  229. data/app/components/yattho/beta/flash.html.erb +10 -0
  230. data/app/components/yattho/beta/flash.pcss +143 -0
  231. data/app/components/yattho/beta/flash.rb +72 -0
  232. data/app/components/yattho/beta/heading.rb +46 -0
  233. data/app/components/yattho/beta/icon_button.html.erb +6 -0
  234. data/app/components/yattho/beta/icon_button.rb +110 -0
  235. data/app/components/yattho/beta/label.css +105 -0
  236. data/app/components/yattho/beta/label.css.json +1 -0
  237. data/app/components/yattho/beta/label.css.map +1 -0
  238. data/app/components/yattho/beta/label.pcss +103 -0
  239. data/app/components/yattho/beta/label.rb +102 -0
  240. data/app/components/yattho/beta/link.css +62 -0
  241. data/app/components/yattho/beta/link.css.json +1 -0
  242. data/app/components/yattho/beta/link.css.map +1 -0
  243. data/app/components/yattho/beta/link.pcss +60 -0
  244. data/app/components/yattho/beta/link.rb +103 -0
  245. data/app/components/yattho/beta/markdown.rb +290 -0
  246. data/app/components/yattho/beta/octicon.html.erb +7 -0
  247. data/app/components/yattho/beta/octicon.rb +88 -0
  248. data/app/components/yattho/beta/popover.css +235 -0
  249. data/app/components/yattho/beta/popover.css.json +1 -0
  250. data/app/components/yattho/beta/popover.css.map +1 -0
  251. data/app/components/yattho/beta/popover.html.erb +6 -0
  252. data/app/components/yattho/beta/popover.pcss +225 -0
  253. data/app/components/yattho/beta/popover.rb +127 -0
  254. data/app/components/yattho/beta/progress_bar.css +26 -0
  255. data/app/components/yattho/beta/progress_bar.css.json +1 -0
  256. data/app/components/yattho/beta/progress_bar.css.map +1 -0
  257. data/app/components/yattho/beta/progress_bar.html.erb +5 -0
  258. data/app/components/yattho/beta/progress_bar.pcss +26 -0
  259. data/app/components/yattho/beta/progress_bar.rb +72 -0
  260. data/app/components/yattho/beta/relative_time.rb +166 -0
  261. data/app/components/yattho/beta/spinner.html.erb +4 -0
  262. data/app/components/yattho/beta/spinner.rb +45 -0
  263. data/app/components/yattho/beta/state.css +50 -0
  264. data/app/components/yattho/beta/state.css.json +1 -0
  265. data/app/components/yattho/beta/state.css.map +1 -0
  266. data/app/components/yattho/beta/state.pcss +50 -0
  267. data/app/components/yattho/beta/state.rb +76 -0
  268. data/app/components/yattho/beta/subhead.css +54 -0
  269. data/app/components/yattho/beta/subhead.css.json +1 -0
  270. data/app/components/yattho/beta/subhead.css.map +1 -0
  271. data/app/components/yattho/beta/subhead.html.erb +5 -0
  272. data/app/components/yattho/beta/subhead.pcss +49 -0
  273. data/app/components/yattho/beta/subhead.rb +135 -0
  274. data/app/components/yattho/beta/text.rb +27 -0
  275. data/app/components/yattho/beta/timeline_item.css +95 -0
  276. data/app/components/yattho/beta/timeline_item.css.json +1 -0
  277. data/app/components/yattho/beta/timeline_item.css.map +1 -0
  278. data/app/components/yattho/beta/timeline_item.html.erb +5 -0
  279. data/app/components/yattho/beta/timeline_item.pcss +93 -0
  280. data/app/components/yattho/beta/timeline_item.rb +90 -0
  281. data/app/components/yattho/beta/truncate.css +37 -0
  282. data/app/components/yattho/beta/truncate.css.json +1 -0
  283. data/app/components/yattho/beta/truncate.css.map +1 -0
  284. data/app/components/yattho/beta/truncate.html.erb +5 -0
  285. data/app/components/yattho/beta/truncate.pcss +31 -0
  286. data/app/components/yattho/beta/truncate.rb +114 -0
  287. data/app/components/yattho/blankslate_component.html.erb +25 -0
  288. data/app/components/yattho/blankslate_component.rb +156 -0
  289. data/app/components/yattho/box.rb +25 -0
  290. data/app/components/yattho/button_component.html.erb +12 -0
  291. data/app/components/yattho/button_component.rb +175 -0
  292. data/app/components/yattho/component.rb +139 -0
  293. data/app/components/yattho/conditional_wrapper.rb +36 -0
  294. data/app/components/yattho/content.rb +12 -0
  295. data/app/components/yattho/dropdown/menu.rb +14 -0
  296. data/app/components/yattho/dropdown.rb +7 -0
  297. data/app/components/yattho/hellip_button.rb +7 -0
  298. data/app/components/yattho/icon_button.html.erb +12 -0
  299. data/app/components/yattho/icon_button.rb +109 -0
  300. data/app/components/yattho/label_component.rb +7 -0
  301. data/app/components/yattho/layout_component.html.erb +9 -0
  302. data/app/components/yattho/layout_component.rb +71 -0
  303. data/app/components/yattho/link_component.rb +7 -0
  304. data/app/components/yattho/local_time.d.ts +1 -0
  305. data/app/components/yattho/local_time.js +1 -0
  306. data/app/components/yattho/local_time.rb +64 -0
  307. data/app/components/yattho/local_time.ts +1 -0
  308. data/app/components/yattho/markdown.rb +7 -0
  309. data/app/components/yattho/menu_component.rb +7 -0
  310. data/app/components/yattho/navigation/tab_component.html.erb +11 -0
  311. data/app/components/yattho/navigation/tab_component.rb +166 -0
  312. data/app/components/yattho/octicon_component.rb +7 -0
  313. data/app/components/yattho/octicon_symbols_component.rb +7 -0
  314. data/app/components/yattho/popover_component.rb +8 -0
  315. data/app/components/yattho/spinner_component.rb +7 -0
  316. data/app/components/yattho/state_component.rb +7 -0
  317. data/app/components/yattho/subhead_component.rb +7 -0
  318. data/app/components/yattho/tab_container_component.rb +7 -0
  319. data/app/components/yattho/time_ago_component.d.ts +1 -0
  320. data/app/components/yattho/time_ago_component.js +1 -0
  321. data/app/components/yattho/time_ago_component.rb +51 -0
  322. data/app/components/yattho/time_ago_component.ts +1 -0
  323. data/app/components/yattho/timeline_item_component.rb +13 -0
  324. data/app/components/yattho/tooltip.rb +91 -0
  325. data/app/components/yattho/truncate.css +30 -0
  326. data/app/components/yattho/truncate.css.json +1 -0
  327. data/app/components/yattho/truncate.css.map +1 -0
  328. data/app/components/yattho/truncate.pcss +30 -0
  329. data/app/components/yattho/truncate.rb +55 -0
  330. data/app/components/yattho/yattho.d.ts +16 -0
  331. data/app/components/yattho/yattho.js +16 -0
  332. data/app/components/yattho/yattho.pcss +37 -0
  333. data/app/components/yattho/yattho.ts +16 -0
  334. data/app/forms/after_content_form/after_content.html.erb +1 -0
  335. data/app/forms/after_content_form.rb +13 -0
  336. data/app/forms/application_form.rb +5 -0
  337. data/app/forms/array_check_box_group_form/places_lopez_caption.html.erb +1 -0
  338. data/app/forms/array_check_box_group_form.rb +15 -0
  339. data/app/forms/both_types_of_caption_form/first_name_caption.html.erb +1 -0
  340. data/app/forms/both_types_of_caption_form.rb +13 -0
  341. data/app/forms/caption_template_form/age_middle_aged_caption.html.erb +1 -0
  342. data/app/forms/caption_template_form/age_young_caption.html.erb +1 -0
  343. data/app/forms/caption_template_form/cool_caption.html.erb +1 -0
  344. data/app/forms/caption_template_form/first_name_caption.html.erb +1 -0
  345. data/app/forms/caption_template_form.rb +22 -0
  346. data/app/forms/check_box_group_form.rb +28 -0
  347. data/app/forms/check_box_with_nested_form.rb +39 -0
  348. data/app/forms/composed_form.rb +14 -0
  349. data/app/forms/example_toggle_switch_form/example_field_caption.html.erb +1 -0
  350. data/app/forms/example_toggle_switch_form.rb +8 -0
  351. data/app/forms/first_name_form.rb +13 -0
  352. data/app/forms/horizontal_form.rb +34 -0
  353. data/app/forms/immediate_validation_form.rb +29 -0
  354. data/app/forms/invalid_form.rb +21 -0
  355. data/app/forms/last_name_form.rb +13 -0
  356. data/app/forms/multi_input_form.rb +27 -0
  357. data/app/forms/multi_text_field_form.rb +27 -0
  358. data/app/forms/name_with_question_mark_form/enabled_caption.html.erb +1 -0
  359. data/app/forms/name_with_question_mark_form.rb +11 -0
  360. data/app/forms/radio_button_group_form.rb +12 -0
  361. data/app/forms/radio_button_with_nested_form.rb +40 -0
  362. data/app/forms/select_list_form.rb +13 -0
  363. data/app/forms/single_text_field_form.rb +13 -0
  364. data/app/forms/submit_button_form.rb +26 -0
  365. data/app/forms/text_field_and_checkbox_form.rb +19 -0
  366. data/app/helpers/yattho/form_helper.rb +23 -0
  367. data/app/lib/yattho/audited/dsl.rb +32 -0
  368. data/app/lib/yattho/class_name_helper.rb +29 -0
  369. data/app/lib/yattho/css/layout.css +1541 -0
  370. data/app/lib/yattho/css/layout.css.json +1 -0
  371. data/app/lib/yattho/css/utilities.css +7304 -0
  372. data/app/lib/yattho/css/utilities.css.json +1 -0
  373. data/app/lib/yattho/fetch_or_fallback_helper.rb +63 -0
  374. data/app/lib/yattho/join_style_arguments_helper.rb +14 -0
  375. data/app/lib/yattho/octicon/cache.rb +45 -0
  376. data/app/lib/yattho/status/dsl.rb +44 -0
  377. data/app/lib/yattho/tab_nav_helper.rb +35 -0
  378. data/app/lib/yattho/tabbed_component_helper.rb +44 -0
  379. data/app/lib/yattho/test_selector_helper.rb +20 -0
  380. data/app/lib/yattho/underline_nav_helper.rb +44 -0
  381. data/app/lib/yattho/view_helper.rb +22 -0
  382. data/lib/postcss_mixins/activeIndicatorLine.pcss +11 -0
  383. data/lib/postcss_mixins/clearfix.pcss +12 -0
  384. data/lib/postcss_mixins/focusBoxShadowInset.pcss +6 -0
  385. data/lib/postcss_mixins/focusOutline.pcss +5 -0
  386. data/lib/postcss_mixins/focusOutlineOnEmphasis.pcss +6 -0
  387. data/lib/postcss_mixins/minTouchTarget.js +20 -0
  388. data/lib/postcss_mixins/targetBoxShadow.pcss +7 -0
  389. data/lib/rubocop/config/default.yml +20 -0
  390. data/lib/rubocop/cop/yattho/base_cop.rb +28 -0
  391. data/lib/rubocop/cop/yattho/component_name_migration.rb +37 -0
  392. data/lib/rubocop/cop/yattho/deprecated_arguments.rb +317 -0
  393. data/lib/rubocop/cop/yattho/deprecated_button_arguments.rb +51 -0
  394. data/lib/rubocop/cop/yattho/deprecated_components.rb +49 -0
  395. data/lib/rubocop/cop/yattho/deprecated_label_schemes.rb +68 -0
  396. data/lib/rubocop/cop/yattho/deprecated_label_variants.rb +73 -0
  397. data/lib/rubocop/cop/yattho/deprecated_layout_component.rb +30 -0
  398. data/lib/rubocop/cop/yattho/no_tag_memoize.rb +43 -0
  399. data/lib/rubocop/cop/yattho/system_argument_instead_of_class.rb +57 -0
  400. data/lib/rubocop/cop/yattho/test_selector.rb +48 -0
  401. data/lib/rubocop/cop/yattho/yattho_octicon.rb +219 -0
  402. data/lib/rubocop/cop/yattho.rb +3 -0
  403. data/lib/tasks/custom_utilities.yml +310 -0
  404. data/lib/tasks/docs.rake +541 -0
  405. data/lib/tasks/helpers/ast_processor.rb +44 -0
  406. data/lib/tasks/helpers/ast_traverser.rb +77 -0
  407. data/lib/tasks/static.rake +15 -0
  408. data/lib/tasks/test.rake +83 -0
  409. data/lib/tasks/utilities.rake +109 -0
  410. data/lib/tasks/yattho_view_components.rake +47 -0
  411. data/lib/yattho/classify/utilities.rb +204 -0
  412. data/lib/yattho/classify/utilities.yml +1817 -0
  413. data/lib/yattho/classify/validation.rb +18 -0
  414. data/lib/yattho/classify.rb +135 -0
  415. data/lib/yattho/deprecations.rb +99 -0
  416. data/lib/yattho/deprecations.yml +109 -0
  417. data/lib/yattho/example_image.rb +8 -0
  418. data/lib/yattho/form_components.rb +37 -0
  419. data/lib/yattho/forms/acts_as_component.rb +118 -0
  420. data/lib/yattho/forms/base.html.erb +8 -0
  421. data/lib/yattho/forms/base.rb +133 -0
  422. data/lib/yattho/forms/base_component.rb +76 -0
  423. data/lib/yattho/forms/buffer_rewriter.rb +51 -0
  424. data/lib/yattho/forms/builder.rb +87 -0
  425. data/lib/yattho/forms/button.html.erb +4 -0
  426. data/lib/yattho/forms/button.rb +68 -0
  427. data/lib/yattho/forms/caption.html.erb +10 -0
  428. data/lib/yattho/forms/caption.rb +29 -0
  429. data/lib/yattho/forms/check_box.html.erb +16 -0
  430. data/lib/yattho/forms/check_box.rb +46 -0
  431. data/lib/yattho/forms/check_box_group.html.erb +12 -0
  432. data/lib/yattho/forms/check_box_group.rb +14 -0
  433. data/lib/yattho/forms/dsl/button_input.rb +29 -0
  434. data/lib/yattho/forms/dsl/check_box_group_input.rb +54 -0
  435. data/lib/yattho/forms/dsl/check_box_input.rb +54 -0
  436. data/lib/yattho/forms/dsl/form_object.rb +25 -0
  437. data/lib/yattho/forms/dsl/form_reference_input.rb +59 -0
  438. data/lib/yattho/forms/dsl/hidden_input.rb +29 -0
  439. data/lib/yattho/forms/dsl/input.rb +282 -0
  440. data/lib/yattho/forms/dsl/input_group.rb +34 -0
  441. data/lib/yattho/forms/dsl/input_methods.rb +91 -0
  442. data/lib/yattho/forms/dsl/multi_input.rb +55 -0
  443. data/lib/yattho/forms/dsl/radio_button_group_input.rb +38 -0
  444. data/lib/yattho/forms/dsl/radio_button_input.rb +37 -0
  445. data/lib/yattho/forms/dsl/select_list_input.rb +61 -0
  446. data/lib/yattho/forms/dsl/submit_button_input.rb +29 -0
  447. data/lib/yattho/forms/dsl/text_area_input.rb +33 -0
  448. data/lib/yattho/forms/dsl/text_field_input.rb +88 -0
  449. data/lib/yattho/forms/dsl/toggle_switch_input.rb +35 -0
  450. data/lib/yattho/forms/form_control.html.erb +22 -0
  451. data/lib/yattho/forms/form_control.rb +25 -0
  452. data/lib/yattho/forms/form_list.html.erb +5 -0
  453. data/lib/yattho/forms/form_list.rb +21 -0
  454. data/lib/yattho/forms/form_reference.html.erb +3 -0
  455. data/lib/yattho/forms/form_reference.rb +18 -0
  456. data/lib/yattho/forms/group.html.erb +5 -0
  457. data/lib/yattho/forms/group.rb +27 -0
  458. data/lib/yattho/forms/hidden_field.html.erb +1 -0
  459. data/lib/yattho/forms/hidden_field.rb +15 -0
  460. data/lib/yattho/forms/multi.html.erb +7 -0
  461. data/lib/yattho/forms/multi.rb +14 -0
  462. data/lib/yattho/forms/radio_button.html.erb +16 -0
  463. data/lib/yattho/forms/radio_button.rb +29 -0
  464. data/lib/yattho/forms/radio_button_group.html.erb +12 -0
  465. data/lib/yattho/forms/radio_button_group.rb +14 -0
  466. data/lib/yattho/forms/select_list.html.erb +5 -0
  467. data/lib/yattho/forms/select_list.rb +29 -0
  468. data/lib/yattho/forms/separator.html.erb +1 -0
  469. data/lib/yattho/forms/separator.rb +8 -0
  470. data/lib/yattho/forms/spacing_wrapper.html.erb +3 -0
  471. data/lib/yattho/forms/spacing_wrapper.rb +8 -0
  472. data/lib/yattho/forms/submit_button.html.erb +1 -0
  473. data/lib/yattho/forms/submit_button.rb +14 -0
  474. data/lib/yattho/forms/text_area.html.erb +5 -0
  475. data/lib/yattho/forms/text_area.rb +20 -0
  476. data/lib/yattho/forms/text_field.html.erb +19 -0
  477. data/lib/yattho/forms/text_field.rb +36 -0
  478. data/lib/yattho/forms/toggle_switch.html.erb +22 -0
  479. data/lib/yattho/forms/toggle_switch.rb +17 -0
  480. data/lib/yattho/forms/toggle_switch_form.rb +74 -0
  481. data/lib/yattho/forms/toggle_switch_input.d.ts +5 -0
  482. data/lib/yattho/forms/toggle_switch_input.js +29 -0
  483. data/lib/yattho/forms/toggle_switch_input.ts +19 -0
  484. data/lib/yattho/forms/utils.rb +28 -0
  485. data/lib/yattho/forms/yattho_multi_input.d.ts +10 -0
  486. data/lib/yattho/forms/yattho_multi_input.js +45 -0
  487. data/lib/yattho/forms/yattho_multi_input.ts +46 -0
  488. data/lib/yattho/forms/yattho_text_field.d.ts +1 -0
  489. data/lib/yattho/forms/yattho_text_field.js +62 -0
  490. data/lib/yattho/forms/yattho_text_field.ts +48 -0
  491. data/lib/yattho/view_components/audited.rb +14 -0
  492. data/lib/yattho/view_components/constants.rb +55 -0
  493. data/lib/yattho/view_components/engine.rb +69 -0
  494. data/lib/yattho/view_components/linters/argument_mappers/base.rb +103 -0
  495. data/lib/yattho/view_components/linters/argument_mappers/button.rb +75 -0
  496. data/lib/yattho/view_components/linters/argument_mappers/clipboard_copy.rb +21 -0
  497. data/lib/yattho/view_components/linters/argument_mappers/close_button.rb +46 -0
  498. data/lib/yattho/view_components/linters/argument_mappers/conversion_error.rb +10 -0
  499. data/lib/yattho/view_components/linters/argument_mappers/flash.rb +32 -0
  500. data/lib/yattho/view_components/linters/argument_mappers/helpers/erb_block.rb +68 -0
  501. data/lib/yattho/view_components/linters/argument_mappers/label.rb +56 -0
  502. data/lib/yattho/view_components/linters/argument_mappers/system_arguments.rb +48 -0
  503. data/lib/yattho/view_components/linters/autocorrectable.rb +32 -0
  504. data/lib/yattho/view_components/linters/base_linter.rb +208 -0
  505. data/lib/yattho/view_components/linters/blankslate_api_migration.rb +153 -0
  506. data/lib/yattho/view_components/linters/blankslate_component_migration_counter.rb +14 -0
  507. data/lib/yattho/view_components/linters/breadcrumbs_component_migration_counter.rb +14 -0
  508. data/lib/yattho/view_components/linters/button_component_migration_counter.rb +26 -0
  509. data/lib/yattho/view_components/linters/clipboard_copy_component_migration_counter.rb +20 -0
  510. data/lib/yattho/view_components/linters/close_button_component_migration_counter.rb +121 -0
  511. data/lib/yattho/view_components/linters/deprecated_components_counter.rb +60 -0
  512. data/lib/yattho/view_components/linters/disallow_action_list.rb +73 -0
  513. data/lib/yattho/view_components/linters/flash_migration_counter.rb +36 -0
  514. data/lib/yattho/view_components/linters/helpers/deprecated_components_helpers.rb +20 -0
  515. data/lib/yattho/view_components/linters/helpers/rubocop_helpers.rb +14 -0
  516. data/lib/yattho/view_components/linters/label_component_migration_counter.rb +24 -0
  517. data/lib/yattho/view_components/linters/migrate_deprecated_flash_arguments.rb +140 -0
  518. data/lib/yattho/view_components/linters/severity_schema.rb +14 -0
  519. data/lib/yattho/view_components/linters/subhead_component_migration_counter.rb +14 -0
  520. data/lib/yattho/view_components/linters/super_in_component_templates.rb +65 -0
  521. data/lib/yattho/view_components/linters/tag_tree_helpers.rb +61 -0
  522. data/lib/yattho/view_components/linters/two_column_layout_migration_counter.rb +158 -0
  523. data/lib/yattho/view_components/linters.rb +3 -0
  524. data/lib/yattho/view_components/statuses.rb +14 -0
  525. data/lib/yattho/view_components/version.rb +18 -0
  526. data/lib/yattho/view_components.rb +63 -0
  527. data/lib/yattho/yard/backend.rb +38 -0
  528. data/lib/yattho/yard/component_manifest.rb +123 -0
  529. data/lib/yattho/yard/docs_helper.rb +81 -0
  530. data/lib/yattho/yard/legacy_gatsby_backend.rb +271 -0
  531. data/lib/yattho/yard/registry.rb +146 -0
  532. data/lib/yattho/yard/renders_many_handler.rb +23 -0
  533. data/lib/yattho/yard/renders_one_handler.rb +23 -0
  534. data/previews/docs/alpha_auto_complete_item_preview/default.html.erb +10 -0
  535. data/previews/docs/alpha_auto_complete_item_preview.rb +7 -0
  536. data/previews/docs/alpha_auto_complete_preview/default.html.erb +1 -0
  537. data/previews/docs/alpha_auto_complete_preview/with_clear_button.html.erb +1 -0
  538. data/previews/docs/alpha_auto_complete_preview/with_custom_classes_for_the_input.html.erb +3 -0
  539. data/previews/docs/alpha_auto_complete_preview/with_custom_classes_for_the_results.html.erb +10 -0
  540. data/previews/docs/alpha_auto_complete_preview/with_icon.html.erb +1 -0
  541. data/previews/docs/alpha_auto_complete_preview/with_icon_and_non_visible_label.html.erb +1 -0
  542. data/previews/docs/alpha_auto_complete_preview/with_inline_label.html.erb +1 -0
  543. data/previews/docs/alpha_auto_complete_preview/with_non_visible_label.html.erb +1 -0
  544. data/previews/docs/alpha_auto_complete_preview.rb +21 -0
  545. data/previews/docs/alpha_banner_preview/custom_icon.html.erb +1 -0
  546. data/previews/docs/alpha_banner_preview/dismissible.html.erb +1 -0
  547. data/previews/docs/alpha_banner_preview/full_width.html.erb +1 -0
  548. data/previews/docs/alpha_banner_preview/schemes.html.erb +6 -0
  549. data/previews/docs/alpha_banner_preview/with_action_button.html.erb +4 -0
  550. data/previews/docs/alpha_banner_preview/with_custom_action.html.erb +6 -0
  551. data/previews/docs/alpha_banner_preview.rb +17 -0
  552. data/previews/docs/alpha_button_marketing_preview/schemes.html.erb +6 -0
  553. data/previews/docs/alpha_button_marketing_preview/sizes.html.erb +2 -0
  554. data/previews/docs/alpha_button_marketing_preview.rb +9 -0
  555. data/previews/docs/alpha_dialog_preview/dialog_with_cancel_and_submit_buttons.html.erb +13 -0
  556. data/previews/docs/alpha_dialog_preview.rb +7 -0
  557. data/previews/docs/alpha_dropdown_preview/customizing_menu_items.html.erb +11 -0
  558. data/previews/docs/alpha_dropdown_preview/customizing_the_button.html.erb +12 -0
  559. data/previews/docs/alpha_dropdown_preview/default.html.erb +11 -0
  560. data/previews/docs/alpha_dropdown_preview/menu_as_list.html.erb +13 -0
  561. data/previews/docs/alpha_dropdown_preview/with_caret.html.erb +12 -0
  562. data/previews/docs/alpha_dropdown_preview/with_direction.html.erb +12 -0
  563. data/previews/docs/alpha_dropdown_preview/with_dividers.html.erb +16 -0
  564. data/previews/docs/alpha_dropdown_preview.rb +19 -0
  565. data/previews/docs/alpha_hellip_button_preview/default.html.erb +1 -0
  566. data/previews/docs/alpha_hellip_button_preview/inline.html.erb +1 -0
  567. data/previews/docs/alpha_hellip_button_preview/styling_the_button.html.erb +1 -0
  568. data/previews/docs/alpha_hellip_button_preview.rb +11 -0
  569. data/previews/docs/alpha_hidden_text_expander_preview/default.html.erb +1 -0
  570. data/previews/docs/alpha_hidden_text_expander_preview/inline.html.erb +1 -0
  571. data/previews/docs/alpha_hidden_text_expander_preview/styling_the_button.html.erb +1 -0
  572. data/previews/docs/alpha_hidden_text_expander_preview.rb +11 -0
  573. data/previews/docs/alpha_image_crop_preview/cropper_with_a_custom_loader.html.erb +3 -0
  574. data/previews/docs/alpha_image_crop_preview/simple_cropper.html.erb +1 -0
  575. data/previews/docs/alpha_image_crop_preview/square_cropper.html.erb +1 -0
  576. data/previews/docs/alpha_image_crop_preview.rb +11 -0
  577. data/previews/docs/alpha_image_preview/custom_size.html.erb +2 -0
  578. data/previews/docs/alpha_image_preview/default.html.erb +2 -0
  579. data/previews/docs/alpha_image_preview/helper.html.erb +2 -0
  580. data/previews/docs/alpha_image_preview/lazy_loading.html.erb +2 -0
  581. data/previews/docs/alpha_image_preview.rb +13 -0
  582. data/previews/docs/alpha_layout_preview/changing_when_to_render_layout_as_columns.html.erb +12 -0
  583. data/previews/docs/alpha_layout_preview/default.html.erb +5 -0
  584. data/previews/docs/alpha_layout_preview/main_widths.html.erb +16 -0
  585. data/previews/docs/alpha_layout_preview/sidebar_placement.html.erb +8 -0
  586. data/previews/docs/alpha_layout_preview/sidebar_placement_as_row.html.erb +12 -0
  587. data/previews/docs/alpha_layout_preview/sidebar_widths.html.erb +12 -0
  588. data/previews/docs/alpha_layout_preview.rb +17 -0
  589. data/previews/docs/alpha_menu_preview/default.html.erb +17 -0
  590. data/previews/docs/alpha_menu_preview.rb +7 -0
  591. data/previews/docs/alpha_nav_list_preview/expandable_sub_items.html.erb +24 -0
  592. data/previews/docs/alpha_nav_list_preview/items_and_headings.html.erb +12 -0
  593. data/previews/docs/alpha_nav_list_preview/leading_and_trailing_visuals.html.erb +17 -0
  594. data/previews/docs/alpha_nav_list_preview/trailing_action.html.erb +12 -0
  595. data/previews/docs/alpha_nav_list_preview.rb +13 -0
  596. data/previews/docs/alpha_octicon_symbols_preview/symbol_dictionary.html.erb +4 -0
  597. data/previews/docs/alpha_octicon_symbols_preview.rb +7 -0
  598. data/previews/docs/alpha_segmented_control_preview/basic_usage.html.erb +6 -0
  599. data/previews/docs/alpha_segmented_control_preview/fill_width_of_parent.html.erb +5 -0
  600. data/previews/docs/alpha_segmented_control_preview/small.html.erb +6 -0
  601. data/previews/docs/alpha_segmented_control_preview/with_icons.html.erb +5 -0
  602. data/previews/docs/alpha_segmented_control_preview/with_icons_only.html.erb +5 -0
  603. data/previews/docs/alpha_segmented_control_preview.rb +15 -0
  604. data/previews/docs/alpha_tab_container_preview/default.html.erb +16 -0
  605. data/previews/docs/alpha_tab_container_preview.rb +7 -0
  606. data/previews/docs/alpha_tab_nav_preview/adding_extra_content_after_the_tabs.html.erb +10 -0
  607. data/previews/docs/alpha_tab_nav_preview/customizing_the_body.html.erb +5 -0
  608. data/previews/docs/alpha_tab_nav_preview/default_with_div.html.erb +5 -0
  609. data/previews/docs/alpha_tab_nav_preview/default_with_nav.html.erb +5 -0
  610. data/previews/docs/alpha_tab_nav_preview/with_extra_content.html.erb +8 -0
  611. data/previews/docs/alpha_tab_nav_preview/with_icons_and_counters.html.erb +15 -0
  612. data/previews/docs/alpha_tab_nav_preview.rb +17 -0
  613. data/previews/docs/alpha_tab_panels_preview/default.html.erb +14 -0
  614. data/previews/docs/alpha_tab_panels_preview.rb +7 -0
  615. data/previews/docs/alpha_text_field_preview/default.html.erb +1 -0
  616. data/previews/docs/alpha_text_field_preview/disabled.html.erb +7 -0
  617. data/previews/docs/alpha_text_field_preview/full_width.html.erb +7 -0
  618. data/previews/docs/alpha_text_field_preview/invalid.html.erb +7 -0
  619. data/previews/docs/alpha_text_field_preview/with_a_caption.html.erb +7 -0
  620. data/previews/docs/alpha_text_field_preview/with_a_clear_button.html.erb +7 -0
  621. data/previews/docs/alpha_text_field_preview/with_a_leading_visual.html.erb +9 -0
  622. data/previews/docs/alpha_text_field_preview/with_a_validation_message.html.erb +7 -0
  623. data/previews/docs/alpha_text_field_preview.rb +21 -0
  624. data/previews/docs/alpha_toggle_switch_preview/checked.html.erb +1 -0
  625. data/previews/docs/alpha_toggle_switch_preview/checked_and_disabled.html.erb +1 -0
  626. data/previews/docs/alpha_toggle_switch_preview/default.html.erb +1 -0
  627. data/previews/docs/alpha_toggle_switch_preview/disabled.html.erb +1 -0
  628. data/previews/docs/alpha_toggle_switch_preview/small.html.erb +1 -0
  629. data/previews/docs/alpha_toggle_switch_preview/with_status_label_positioned_at_the_end.html.erb +1 -0
  630. data/previews/docs/alpha_toggle_switch_preview.rb +17 -0
  631. data/previews/docs/alpha_tooltip_preview/as_a_label_for_an_iconbutton.html.erb +1 -0
  632. data/previews/docs/alpha_tooltip_preview/as_a_supplementary_description_for_a_button.html.erb +4 -0
  633. data/previews/docs/alpha_tooltip_preview/as_a_supplementary_description_for_an_iconbutton.html.erb +1 -0
  634. data/previews/docs/alpha_tooltip_preview/directly_using_tooltip.html.erb +4 -0
  635. data/previews/docs/alpha_tooltip_preview/with_direction.html.erb +32 -0
  636. data/previews/docs/alpha_tooltip_preview.rb +15 -0
  637. data/previews/docs/alpha_underline_nav_preview/align_right.html.erb +11 -0
  638. data/previews/docs/alpha_underline_nav_preview/customizing_the_body.html.erb +5 -0
  639. data/previews/docs/alpha_underline_nav_preview/default_with_nav.html.erb +7 -0
  640. data/previews/docs/alpha_underline_nav_preview/with_div.html.erb +7 -0
  641. data/previews/docs/alpha_underline_nav_preview/with_icons_and_counters.html.erb +18 -0
  642. data/previews/docs/alpha_underline_nav_preview.rb +15 -0
  643. data/previews/docs/alpha_underline_panels_preview/default.html.erb +17 -0
  644. data/previews/docs/alpha_underline_panels_preview.rb +7 -0
  645. data/previews/docs/beta_auto_complete_item_preview/default.html.erb +6 -0
  646. data/previews/docs/beta_auto_complete_item_preview.rb +7 -0
  647. data/previews/docs/beta_auto_complete_preview/full_width_field.html.erb +3 -0
  648. data/previews/docs/beta_auto_complete_preview/inset_variant.html.erb +3 -0
  649. data/previews/docs/beta_auto_complete_preview/leading_visual.html.erb +3 -0
  650. data/previews/docs/beta_auto_complete_preview/monospace_variant.html.erb +3 -0
  651. data/previews/docs/beta_auto_complete_preview/trailing_action.html.erb +1 -0
  652. data/previews/docs/beta_auto_complete_preview/visually_hidden_label.html.erb +3 -0
  653. data/previews/docs/beta_auto_complete_preview/with_custom_classes_for_the_input.html.erb +3 -0
  654. data/previews/docs/beta_auto_complete_preview/with_custom_classes_for_the_results.html.erb +3 -0
  655. data/previews/docs/beta_auto_complete_preview.rb +21 -0
  656. data/previews/docs/beta_avatar_preview/default.html.erb +1 -0
  657. data/previews/docs/beta_avatar_preview/link.html.erb +1 -0
  658. data/previews/docs/beta_avatar_preview/square.html.erb +1 -0
  659. data/previews/docs/beta_avatar_preview/with_size.html.erb +7 -0
  660. data/previews/docs/beta_avatar_preview.rb +13 -0
  661. data/previews/docs/beta_avatar_stack_preview/align_right.html.erb +5 -0
  662. data/previews/docs/beta_avatar_stack_preview/default.html.erb +5 -0
  663. data/previews/docs/beta_avatar_stack_preview/with_tooltip.html.erb +5 -0
  664. data/previews/docs/beta_avatar_stack_preview.rb +11 -0
  665. data/previews/docs/beta_base_button_preview/block.html.erb +2 -0
  666. data/previews/docs/beta_base_button_preview.rb +7 -0
  667. data/previews/docs/beta_blankslate_preview/basic.html.erb +4 -0
  668. data/previews/docs/beta_blankslate_preview/custom_content.html.erb +6 -0
  669. data/previews/docs/beta_blankslate_preview/icon.html.erb +5 -0
  670. data/previews/docs/beta_blankslate_preview/loading.html.erb +5 -0
  671. data/previews/docs/beta_blankslate_preview/primary_action.html.erb +6 -0
  672. data/previews/docs/beta_blankslate_preview/primary_and_secondary_actions.html.erb +7 -0
  673. data/previews/docs/beta_blankslate_preview/secondary_action.html.erb +6 -0
  674. data/previews/docs/beta_blankslate_preview/using_an_image.html.erb +5 -0
  675. data/previews/docs/beta_blankslate_preview/variations.html.erb +8 -0
  676. data/previews/docs/beta_blankslate_preview/with_border.html.erb +5 -0
  677. data/previews/docs/beta_blankslate_preview.rb +25 -0
  678. data/previews/docs/beta_border_box_header_preview/default.html.erb +4 -0
  679. data/previews/docs/beta_border_box_header_preview/with_title.html.erb +3 -0
  680. data/previews/docs/beta_border_box_header_preview.rb +9 -0
  681. data/previews/docs/beta_border_box_preview/header_with_title_body_rows_and_footer.html.erb +21 -0
  682. data/previews/docs/beta_border_box_preview/padding_density.html.erb +14 -0
  683. data/previews/docs/beta_border_box_preview/row_colors.html.erb +14 -0
  684. data/previews/docs/beta_border_box_preview.rb +11 -0
  685. data/previews/docs/beta_breadcrumbs_preview/basic.html.erb +5 -0
  686. data/previews/docs/beta_breadcrumbs_preview.rb +7 -0
  687. data/previews/docs/beta_button_group_preview/default.html.erb +8 -0
  688. data/previews/docs/beta_button_group_preview/sizes.html.erb +7 -0
  689. data/previews/docs/beta_button_group_preview.rb +9 -0
  690. data/previews/docs/beta_button_preview/full_width.html.erb +2 -0
  691. data/previews/docs/beta_button_preview/schemes.html.erb +4 -0
  692. data/previews/docs/beta_button_preview/sizes.html.erb +2 -0
  693. data/previews/docs/beta_button_preview/with_leading_and_trailing_visuals.html.erb +5 -0
  694. data/previews/docs/beta_button_preview/with_leading_visual.html.erb +4 -0
  695. data/previews/docs/beta_button_preview/with_tooltip.html.erb +4 -0
  696. data/previews/docs/beta_button_preview/with_trailing_visual.html.erb +4 -0
  697. data/previews/docs/beta_button_preview.rb +19 -0
  698. data/previews/docs/beta_clipboard_copy_preview/copying_from_an_element.html.erb +2 -0
  699. data/previews/docs/beta_clipboard_copy_preview/default.html.erb +1 -0
  700. data/previews/docs/beta_clipboard_copy_preview/with_text_instead_of_icons.html.erb +3 -0
  701. data/previews/docs/beta_clipboard_copy_preview.rb +11 -0
  702. data/previews/docs/beta_close_button_preview/default.html.erb +1 -0
  703. data/previews/docs/beta_close_button_preview.rb +7 -0
  704. data/previews/docs/beta_counter_preview/default.html.erb +1 -0
  705. data/previews/docs/beta_counter_preview/schemes.html.erb +2 -0
  706. data/previews/docs/beta_counter_preview.rb +9 -0
  707. data/previews/docs/beta_details_preview/default.html.erb +9 -0
  708. data/previews/docs/beta_details_preview.rb +7 -0
  709. data/previews/docs/beta_flash_preview/dismissible.html.erb +1 -0
  710. data/previews/docs/beta_flash_preview/full_width.html.erb +1 -0
  711. data/previews/docs/beta_flash_preview/icon.html.erb +1 -0
  712. data/previews/docs/beta_flash_preview/schemes.html.erb +4 -0
  713. data/previews/docs/beta_flash_preview/with_actions.html.erb +6 -0
  714. data/previews/docs/beta_flash_preview.rb +15 -0
  715. data/previews/docs/beta_heading_preview/default.html.erb +6 -0
  716. data/previews/docs/beta_heading_preview.rb +7 -0
  717. data/previews/docs/beta_icon_button_preview/custom_tooltip_direction.html.erb +2 -0
  718. data/previews/docs/beta_icon_button_preview/default.html.erb +2 -0
  719. data/previews/docs/beta_icon_button_preview/schemes.html.erb +3 -0
  720. data/previews/docs/beta_icon_button_preview/with_an_aria_description.html.erb +1 -0
  721. data/previews/docs/beta_icon_button_preview.rb +13 -0
  722. data/previews/docs/beta_label_preview/inline.html.erb +2 -0
  723. data/previews/docs/beta_label_preview/schemes.html.erb +10 -0
  724. data/previews/docs/beta_label_preview/sizes.html.erb +2 -0
  725. data/previews/docs/beta_label_preview.rb +11 -0
  726. data/previews/docs/beta_link_preview/default.html.erb +1 -0
  727. data/previews/docs/beta_link_preview/muted.html.erb +1 -0
  728. data/previews/docs/beta_link_preview/schemes.html.erb +2 -0
  729. data/previews/docs/beta_link_preview/with_tooltip.html.erb +4 -0
  730. data/previews/docs/beta_link_preview/without_underline.html.erb +1 -0
  731. data/previews/docs/beta_link_preview.rb +15 -0
  732. data/previews/docs/beta_markdown_preview/default.html.erb +260 -0
  733. data/previews/docs/beta_markdown_preview.rb +7 -0
  734. data/previews/docs/beta_octicon_preview/default.html.erb +2 -0
  735. data/previews/docs/beta_octicon_preview/helper.html.erb +1 -0
  736. data/previews/docs/beta_octicon_preview/medium.html.erb +1 -0
  737. data/previews/docs/beta_octicon_preview.rb +11 -0
  738. data/previews/docs/beta_popover_preview/caret_position.html.erb +8 -0
  739. data/previews/docs/beta_popover_preview/default.html.erb +8 -0
  740. data/previews/docs/beta_popover_preview/large.html.erb +8 -0
  741. data/previews/docs/beta_popover_preview/with_multiple_elements_in_the_body.html.erb +11 -0
  742. data/previews/docs/beta_popover_preview.rb +13 -0
  743. data/previews/docs/beta_progress_bar_preview/default.html.erb +3 -0
  744. data/previews/docs/beta_progress_bar_preview/large.html.erb +3 -0
  745. data/previews/docs/beta_progress_bar_preview/multiple_items.html.erb +5 -0
  746. data/previews/docs/beta_progress_bar_preview/small.html.erb +3 -0
  747. data/previews/docs/beta_progress_bar_preview.rb +13 -0
  748. data/previews/docs/beta_relative_time_preview/default.html.erb +1 -0
  749. data/previews/docs/beta_relative_time_preview/elapsed_time.html.erb +1 -0
  750. data/previews/docs/beta_relative_time_preview/past_time.html.erb +1 -0
  751. data/previews/docs/beta_relative_time_preview.rb +11 -0
  752. data/previews/docs/beta_spinner_preview/default.html.erb +1 -0
  753. data/previews/docs/beta_spinner_preview/large.html.erb +1 -0
  754. data/previews/docs/beta_spinner_preview/small.html.erb +1 -0
  755. data/previews/docs/beta_spinner_preview.rb +11 -0
  756. data/previews/docs/beta_state_preview/default.html.erb +1 -0
  757. data/previews/docs/beta_state_preview/schemes.html.erb +4 -0
  758. data/previews/docs/beta_state_preview/sizes.html.erb +2 -0
  759. data/previews/docs/beta_state_preview.rb +11 -0
  760. data/previews/docs/beta_subhead_preview/default.html.erb +8 -0
  761. data/previews/docs/beta_subhead_preview/with_actions.html.erb +15 -0
  762. data/previews/docs/beta_subhead_preview/with_dangerous_heading.html.erb +8 -0
  763. data/previews/docs/beta_subhead_preview/with_long_description.html.erb +6 -0
  764. data/previews/docs/beta_subhead_preview/without_border.html.erb +8 -0
  765. data/previews/docs/beta_subhead_preview.rb +15 -0
  766. data/previews/docs/beta_text_preview/default.html.erb +2 -0
  767. data/previews/docs/beta_text_preview.rb +7 -0
  768. data/previews/docs/beta_timeline_item_preview/default.html.erb +7 -0
  769. data/previews/docs/beta_timeline_item_preview.rb +7 -0
  770. data/previews/docs/beta_truncate_preview/advanced_multiple_items.html.erb +9 -0
  771. data/previews/docs/beta_truncate_preview/default.html.erb +1 -0
  772. data/previews/docs/beta_truncate_preview/expand_on_hover_or_focus.html.erb +6 -0
  773. data/previews/docs/beta_truncate_preview/max_widths.html.erb +5 -0
  774. data/previews/docs/beta_truncate_preview/max_widths_on_new_lines.html.erb +11 -0
  775. data/previews/docs/beta_truncate_preview/multiple_items.html.erb +6 -0
  776. data/previews/docs/beta_truncate_preview.rb +17 -0
  777. data/previews/docs/blankslate_component_preview/action_button.html.erb +8 -0
  778. data/previews/docs/blankslate_component_preview/basic.html.erb +4 -0
  779. data/previews/docs/blankslate_component_preview/custom_content.html.erb +5 -0
  780. data/previews/docs/blankslate_component_preview/icon.html.erb +5 -0
  781. data/previews/docs/blankslate_component_preview/link.html.erb +7 -0
  782. data/previews/docs/blankslate_component_preview/loading.html.erb +6 -0
  783. data/previews/docs/blankslate_component_preview/variations.html.erb +8 -0
  784. data/previews/docs/blankslate_component_preview.rb +19 -0
  785. data/previews/docs/box_preview/color_and_padding.html.erb +1 -0
  786. data/previews/docs/box_preview/default.html.erb +1 -0
  787. data/previews/docs/box_preview.rb +9 -0
  788. data/previews/docs/button_component_preview/block.html.erb +2 -0
  789. data/previews/docs/button_component_preview/schemes.html.erb +6 -0
  790. data/previews/docs/button_component_preview/sizes.html.erb +2 -0
  791. data/previews/docs/button_component_preview/with_dropdown_caret.html.erb +3 -0
  792. data/previews/docs/button_component_preview/with_leading_and_trailing_visuals.html.erb +5 -0
  793. data/previews/docs/button_component_preview/with_leading_visual.html.erb +4 -0
  794. data/previews/docs/button_component_preview/with_tooltip.html.erb +4 -0
  795. data/previews/docs/button_component_preview/with_trailing_visual.html.erb +4 -0
  796. data/previews/docs/button_component_preview.rb +21 -0
  797. data/previews/docs/dropdown_preview/customizing_menu_items.html.erb +11 -0
  798. data/previews/docs/dropdown_preview/customizing_the_button.html.erb +12 -0
  799. data/previews/docs/dropdown_preview/default.html.erb +11 -0
  800. data/previews/docs/dropdown_preview/menu_as_list.html.erb +13 -0
  801. data/previews/docs/dropdown_preview/with_caret.html.erb +12 -0
  802. data/previews/docs/dropdown_preview/with_direction.html.erb +12 -0
  803. data/previews/docs/dropdown_preview/with_dividers.html.erb +16 -0
  804. data/previews/docs/dropdown_preview.rb +19 -0
  805. data/previews/docs/hellip_button_preview/default.html.erb +1 -0
  806. data/previews/docs/hellip_button_preview/inline.html.erb +1 -0
  807. data/previews/docs/hellip_button_preview/styling_the_button.html.erb +1 -0
  808. data/previews/docs/hellip_button_preview.rb +11 -0
  809. data/previews/docs/icon_button_preview/custom_tooltip_direction.html.erb +2 -0
  810. data/previews/docs/icon_button_preview/default.html.erb +2 -0
  811. data/previews/docs/icon_button_preview/in_a_borderbox.html.erb +7 -0
  812. data/previews/docs/icon_button_preview/schemes.html.erb +3 -0
  813. data/previews/docs/icon_button_preview/with_an_aria_description.html.erb +1 -0
  814. data/previews/docs/icon_button_preview.rb +15 -0
  815. data/previews/docs/label_component_preview/inline.html.erb +2 -0
  816. data/previews/docs/label_component_preview/schemes.html.erb +10 -0
  817. data/previews/docs/label_component_preview/sizes.html.erb +2 -0
  818. data/previews/docs/label_component_preview.rb +11 -0
  819. data/previews/docs/layout_component_preview/default.html.erb +4 -0
  820. data/previews/docs/layout_component_preview/left_sidebar.html.erb +4 -0
  821. data/previews/docs/layout_component_preview.rb +9 -0
  822. data/previews/docs/link_component_preview/default.html.erb +1 -0
  823. data/previews/docs/link_component_preview/muted.html.erb +1 -0
  824. data/previews/docs/link_component_preview/schemes.html.erb +2 -0
  825. data/previews/docs/link_component_preview/with_tooltip.html.erb +4 -0
  826. data/previews/docs/link_component_preview/without_underline.html.erb +1 -0
  827. data/previews/docs/link_component_preview.rb +15 -0
  828. data/previews/docs/local_time_preview/all_the_options.html.erb +1 -0
  829. data/previews/docs/local_time_preview/default.html.erb +1 -0
  830. data/previews/docs/local_time_preview/with_initial_content.html.erb +4 -0
  831. data/previews/docs/local_time_preview.rb +11 -0
  832. data/previews/docs/markdown_preview/default.html.erb +260 -0
  833. data/previews/docs/markdown_preview.rb +7 -0
  834. data/previews/docs/menu_component_preview/default.html.erb +17 -0
  835. data/previews/docs/menu_component_preview.rb +7 -0
  836. data/previews/docs/navigation_tab_component_preview/default.html.erb +6 -0
  837. data/previews/docs/navigation_tab_component_preview/inside_a_list.html.erb +3 -0
  838. data/previews/docs/navigation_tab_component_preview/with_custom_html.html.erb +5 -0
  839. data/previews/docs/navigation_tab_component_preview/with_icons_and_counters.html.erb +13 -0
  840. data/previews/docs/navigation_tab_component_preview.rb +13 -0
  841. data/previews/docs/octicon_component_preview/default.html.erb +2 -0
  842. data/previews/docs/octicon_component_preview/helper.html.erb +1 -0
  843. data/previews/docs/octicon_component_preview/medium.html.erb +1 -0
  844. data/previews/docs/octicon_component_preview.rb +11 -0
  845. data/previews/docs/octicon_symbols_component_preview/symbol_dictionary.html.erb +4 -0
  846. data/previews/docs/octicon_symbols_component_preview.rb +7 -0
  847. data/previews/docs/popover_component_preview/caret_position.html.erb +8 -0
  848. data/previews/docs/popover_component_preview/default.html.erb +8 -0
  849. data/previews/docs/popover_component_preview/large.html.erb +8 -0
  850. data/previews/docs/popover_component_preview/with_multiple_elements_in_the_body.html.erb +11 -0
  851. data/previews/docs/popover_component_preview.rb +13 -0
  852. data/previews/docs/spinner_component_preview/default.html.erb +1 -0
  853. data/previews/docs/spinner_component_preview/large.html.erb +1 -0
  854. data/previews/docs/spinner_component_preview/small.html.erb +1 -0
  855. data/previews/docs/spinner_component_preview.rb +11 -0
  856. data/previews/docs/state_component_preview/default.html.erb +1 -0
  857. data/previews/docs/state_component_preview/schemes.html.erb +4 -0
  858. data/previews/docs/state_component_preview/sizes.html.erb +2 -0
  859. data/previews/docs/state_component_preview.rb +11 -0
  860. data/previews/docs/subhead_component_preview/default.html.erb +8 -0
  861. data/previews/docs/subhead_component_preview/with_actions.html.erb +15 -0
  862. data/previews/docs/subhead_component_preview/with_dangerous_heading.html.erb +8 -0
  863. data/previews/docs/subhead_component_preview/with_long_description.html.erb +6 -0
  864. data/previews/docs/subhead_component_preview/without_border.html.erb +8 -0
  865. data/previews/docs/subhead_component_preview.rb +15 -0
  866. data/previews/docs/tab_container_component_preview/default.html.erb +16 -0
  867. data/previews/docs/tab_container_component_preview.rb +7 -0
  868. data/previews/docs/time_ago_component_preview/default.html.erb +1 -0
  869. data/previews/docs/time_ago_component_preview.rb +7 -0
  870. data/previews/docs/timeline_item_component_preview/default.html.erb +7 -0
  871. data/previews/docs/timeline_item_component_preview.rb +7 -0
  872. data/previews/docs/tooltip_preview/default.html.erb +3 -0
  873. data/previews/docs/tooltip_preview/with_a_direction.html.erb +3 -0
  874. data/previews/docs/tooltip_preview/with_an_alignment.html.erb +3 -0
  875. data/previews/docs/tooltip_preview/without_a_delay.html.erb +3 -0
  876. data/previews/docs/tooltip_preview/wrapping_another_component.html.erb +5 -0
  877. data/previews/docs/tooltip_preview.rb +15 -0
  878. data/previews/docs/truncate_preview/custom_size.html.erb +1 -0
  879. data/previews/docs/truncate_preview/default.html.erb +3 -0
  880. data/previews/docs/truncate_preview/expandable.html.erb +1 -0
  881. data/previews/docs/truncate_preview/inline.html.erb +1 -0
  882. data/previews/docs/truncate_preview/with_html_content.html.erb +3 -0
  883. data/previews/docs/truncate_preview.rb +15 -0
  884. data/previews/yattho/alpha/action_list_preview/heading.html.erb +4 -0
  885. data/previews/yattho/alpha/action_list_preview.rb +367 -0
  886. data/previews/yattho/alpha/auto_complete_preview.rb +120 -0
  887. data/previews/yattho/alpha/banner_preview/with_action_button.html.erb +4 -0
  888. data/previews/yattho/alpha/banner_preview/with_action_content.html.erb +6 -0
  889. data/previews/yattho/alpha/banner_preview.rb +97 -0
  890. data/previews/yattho/alpha/button_marketing_preview.rb +62 -0
  891. data/previews/yattho/alpha/dialog_preview/body_has_scrollbar_overflow.html.erb +9 -0
  892. data/previews/yattho/alpha/dialog_preview/custom_header.html.erb +7 -0
  893. data/previews/yattho/alpha/dialog_preview/nested_dialog.html.erb +14 -0
  894. data/previews/yattho/alpha/dialog_preview/test.html.erb +7 -0
  895. data/previews/yattho/alpha/dialog_preview/with_footer.html.erb +8 -0
  896. data/previews/yattho/alpha/dialog_preview/with_form.html.erb +12 -0
  897. data/previews/yattho/alpha/dialog_preview/with_text_input.html.erb +10 -0
  898. data/previews/yattho/alpha/dialog_preview.rb +147 -0
  899. data/previews/yattho/alpha/dropdown_preview.rb +210 -0
  900. data/previews/yattho/alpha/hellip_button_preview.rb +24 -0
  901. data/previews/yattho/alpha/hidden_text_expander_preview.rb +22 -0
  902. data/previews/yattho/alpha/image_crop_preview.rb +31 -0
  903. data/previews/yattho/alpha/layout_preview.rb +211 -0
  904. data/previews/yattho/alpha/menu_preview/default.html.erb +17 -0
  905. data/previews/yattho/alpha/menu_preview/playground.html.erb +17 -0
  906. data/previews/yattho/alpha/menu_preview.rb +14 -0
  907. data/previews/yattho/alpha/nav_list_preview.rb +93 -0
  908. data/previews/yattho/alpha/segmented_control_preview.rb +164 -0
  909. data/previews/yattho/alpha/tab_nav_preview.rb +55 -0
  910. data/previews/yattho/alpha/tab_panels_preview.rb +38 -0
  911. data/previews/yattho/alpha/text_field_preview.rb +149 -0
  912. data/previews/yattho/alpha/toggle_switch_preview.rb +56 -0
  913. data/previews/yattho/alpha/tooltip_preview/with_multiple_on_a_page.html.erb +14 -0
  914. data/previews/yattho/alpha/tooltip_preview/with_right_most_position.html.erb +7 -0
  915. data/previews/yattho/alpha/tooltip_preview.rb +93 -0
  916. data/previews/yattho/alpha/underline_nav_preview/default.html.erb +8 -0
  917. data/previews/yattho/alpha/underline_nav_preview/playground.html.erb +8 -0
  918. data/previews/yattho/alpha/underline_nav_preview.rb +56 -0
  919. data/previews/yattho/alpha/underline_panels_preview.rb +38 -0
  920. data/previews/yattho/beta/auto_complete_item_preview/default.html.erb +9 -0
  921. data/previews/yattho/beta/auto_complete_item_preview/playground.html.erb +9 -0
  922. data/previews/yattho/beta/auto_complete_item_preview/with_description.html.erb +11 -0
  923. data/previews/yattho/beta/auto_complete_item_preview.rb +54 -0
  924. data/previews/yattho/beta/auto_complete_preview/with_submit_button.html.erb +20 -0
  925. data/previews/yattho/beta/auto_complete_preview.rb +267 -0
  926. data/previews/yattho/beta/avatar_preview.rb +82 -0
  927. data/previews/yattho/beta/avatar_stack_preview.rb +101 -0
  928. data/previews/yattho/beta/base_button_preview.rb +26 -0
  929. data/previews/yattho/beta/blankslate_preview.rb +130 -0
  930. data/previews/yattho/beta/border_box_preview.rb +98 -0
  931. data/previews/yattho/beta/breadcrumbs_preview.rb +30 -0
  932. data/previews/yattho/beta/button_group_preview.rb +32 -0
  933. data/previews/yattho/beta/button_preview/all_schemes.html.erb +26 -0
  934. data/previews/yattho/beta/button_preview/invisible_all_visuals.html.erb +54 -0
  935. data/previews/yattho/beta/button_preview/leading_visual.html.erb +10 -0
  936. data/previews/yattho/beta/button_preview/trailing_action.html.erb +10 -0
  937. data/previews/yattho/beta/button_preview/trailing_visual.html.erb +11 -0
  938. data/previews/yattho/beta/button_preview/with_tooltip.html.erb +10 -0
  939. data/previews/yattho/beta/button_preview.rb +291 -0
  940. data/previews/yattho/beta/clipboard_copy_preview/element.html.erb +2 -0
  941. data/previews/yattho/beta/clipboard_copy_preview.rb +39 -0
  942. data/previews/yattho/beta/close_button_preview.rb +22 -0
  943. data/previews/yattho/beta/counter_preview.rb +82 -0
  944. data/previews/yattho/beta/details_preview.rb +60 -0
  945. data/previews/yattho/beta/flash_preview.rb +69 -0
  946. data/previews/yattho/beta/heading_preview.rb +24 -0
  947. data/previews/yattho/beta/icon_button_preview.rb +110 -0
  948. data/previews/yattho/beta/label_preview.rb +104 -0
  949. data/previews/yattho/beta/link_preview.rb +69 -0
  950. data/previews/yattho/beta/markdown_preview.rb +241 -0
  951. data/previews/yattho/beta/octicon_preview.rb +24 -0
  952. data/previews/yattho/beta/popover_preview.rb +79 -0
  953. data/previews/yattho/beta/progress_bar_preview.rb +60 -0
  954. data/previews/yattho/beta/relative_time_preview.rb +286 -0
  955. data/previews/yattho/beta/spinner_preview.rb +22 -0
  956. data/previews/yattho/beta/state_preview.rb +66 -0
  957. data/previews/yattho/beta/subhead_preview/actions.html.erb +13 -0
  958. data/previews/yattho/beta/subhead_preview.rb +99 -0
  959. data/previews/yattho/beta/text_preview.rb +24 -0
  960. data/previews/yattho/beta/timeline_item_preview.rb +30 -0
  961. data/previews/yattho/beta/truncate_preview.rb +54 -0
  962. data/previews/yattho/forms/forms_preview/after_content_form.html.erb +3 -0
  963. data/previews/yattho/forms/forms_preview/array_check_box_group_form.html.erb +3 -0
  964. data/previews/yattho/forms/forms_preview/caption_template_form.html.erb +3 -0
  965. data/previews/yattho/forms/forms_preview/check_box_group_form.html.erb +3 -0
  966. data/previews/yattho/forms/forms_preview/check_box_with_nested_form.html.erb +3 -0
  967. data/previews/yattho/forms/forms_preview/composed_form.html.erb +4 -0
  968. data/previews/yattho/forms/forms_preview/example_toggle_switch_form.html.erb +3 -0
  969. data/previews/yattho/forms/forms_preview/horizontal_form.html.erb +3 -0
  970. data/previews/yattho/forms/forms_preview/immediate_validation_form.html.erb +3 -0
  971. data/previews/yattho/forms/forms_preview/invalid_form.html.erb +3 -0
  972. data/previews/yattho/forms/forms_preview/multi_input_form.html.erb +14 -0
  973. data/previews/yattho/forms/forms_preview/multi_text_field_form.html.erb +3 -0
  974. data/previews/yattho/forms/forms_preview/name_with_question_mark_form.html.erb +3 -0
  975. data/previews/yattho/forms/forms_preview/radio_button_group_form.html.erb +3 -0
  976. data/previews/yattho/forms/forms_preview/radio_button_with_nested_form.html.erb +3 -0
  977. data/previews/yattho/forms/forms_preview/select_list_form.html.erb +3 -0
  978. data/previews/yattho/forms/forms_preview/single_text_field_form.html.erb +3 -0
  979. data/previews/yattho/forms/forms_preview/submit_button_form.html.erb +3 -0
  980. data/previews/yattho/forms/forms_preview/text_field_and_checkbox_form.html.erb +3 -0
  981. data/previews/yattho/forms/forms_preview.rb +46 -0
  982. data/previews/yattho/layout_component_preview.rb +30 -0
  983. data/previews/yattho/local_time_component_preview.rb +61 -0
  984. data/previews/yattho/time_ago_component_preview.rb +27 -0
  985. data/previews/yattho/url_helpers.rb +15 -0
  986. data/static/arguments.json +2560 -0
  987. data/static/assets/view-components.svg +18 -0
  988. data/static/audited_at.json +103 -0
  989. data/static/constants.json +1159 -0
  990. data/static/statuses.json +103 -0
  991. metadata +1403 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yattho_view_components.js","sources":["../../../node_modules/@github/details-menu-element/dist/index.js","../../../node_modules/@github/image-crop-element/dist/index.js","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/@primer/behaviors/dist/esm/anchored-position.js","../../../node_modules/@primer/behaviors/dist/esm/utils/iterate-focusable-elements.js","../../../node_modules/@primer/behaviors/dist/esm/polyfills/event-listener-signal.js","../../../node_modules/@primer/behaviors/dist/esm/focus-trap.js","../../components/yattho/alpha/modal_dialog.ts","../../../node_modules/@github/catalyst/lib/bind.js","../../../node_modules/@github/catalyst/lib/dasherize.js","../../../node_modules/@github/catalyst/lib/attr.js","../../../node_modules/@github/catalyst/lib/core.js","../../../node_modules/@github/catalyst/lib/register.js","../../../node_modules/@github/catalyst/lib/auto-shadow-root.js","../../../node_modules/@github/catalyst/lib/target.js","../../../node_modules/@github/catalyst/lib/findtarget.js","../../../node_modules/@github/catalyst/lib/controller.js","../../../node_modules/@github/catalyst/lib/lazy-define.js","../../components/yattho/alpha/nav_list.ts","../../components/yattho/alpha/segmented_control.ts","../../../node_modules/@github/mini-throttle/dist/index.js","../../components/yattho/alpha/toggle_switch.ts","../../../node_modules/@github/mini-throttle/dist/decorators.js","../../components/yattho/alpha/tool_tip.ts","../../components/yattho/alpha/x_banner.ts","../../../node_modules/@github/combobox-nav/dist/index.js","../../../node_modules/@github/auto-complete-element/dist/index.js","../../../node_modules/@github/clipboard-copy-element/dist/index.esm.js","../../components/yattho/beta/clipboard_copy.ts","../../../node_modules/@github/relative-time-element/dist/duration-format-ponyfill.js","../../../node_modules/@github/relative-time-element/dist/duration.js","../../../node_modules/@github/relative-time-element/dist/relative-time-element.js","../../../node_modules/@github/relative-time-element/dist/relative-time-element-define.js","../../../node_modules/@github/tab-container-element/dist/index.js","../../../lib/yattho/forms/yattho_multi_input.ts","../../../node_modules/@github/auto-check-element/dist/index.js","../../../lib/yattho/forms/yattho_text_field.ts","../../../lib/yattho/forms/toggle_switch_input.ts"],"sourcesContent":["class DetailsMenuElement extends HTMLElement {\n get preload() {\n return this.hasAttribute('preload');\n }\n set preload(value) {\n if (value) {\n this.setAttribute('preload', '');\n }\n else {\n this.removeAttribute('preload');\n }\n }\n get src() {\n return this.getAttribute('src') || '';\n }\n set src(value) {\n this.setAttribute('src', value);\n }\n connectedCallback() {\n if (!this.hasAttribute('role'))\n this.setAttribute('role', 'menu');\n const details = this.parentElement;\n if (!details)\n return;\n const summary = details.querySelector('summary');\n if (summary) {\n summary.setAttribute('aria-haspopup', 'menu');\n if (!summary.hasAttribute('role'))\n summary.setAttribute('role', 'button');\n }\n const subscriptions = [\n fromEvent(details, 'compositionstart', e => trackComposition(this, e)),\n fromEvent(details, 'compositionend', e => trackComposition(this, e)),\n fromEvent(details, 'click', e => shouldCommit(details, e)),\n fromEvent(details, 'change', e => shouldCommit(details, e)),\n fromEvent(details, 'keydown', e => keydown(details, this, e)),\n fromEvent(details, 'toggle', () => loadFragment(details, this), { once: true }),\n fromEvent(details, 'toggle', () => closeCurrentMenu(details)),\n this.preload\n ? fromEvent(details, 'mouseover', () => loadFragment(details, this), { once: true })\n : NullSubscription,\n ...focusOnOpen(details)\n ];\n states.set(this, { subscriptions, loaded: false, isComposing: false });\n }\n disconnectedCallback() {\n const state = states.get(this);\n if (!state)\n return;\n states.delete(this);\n for (const sub of state.subscriptions) {\n sub.unsubscribe();\n }\n }\n}\nconst states = new WeakMap();\nconst NullSubscription = {\n unsubscribe() {\n }\n};\nfunction fromEvent(target, eventName, onNext, options = false) {\n target.addEventListener(eventName, onNext, options);\n return {\n unsubscribe: () => {\n target.removeEventListener(eventName, onNext, options);\n }\n };\n}\nfunction loadFragment(details, menu) {\n const src = menu.getAttribute('src');\n if (!src)\n return;\n const state = states.get(menu);\n if (!state)\n return;\n if (state.loaded)\n return;\n state.loaded = true;\n const loader = menu.querySelector('include-fragment');\n if (loader && !loader.hasAttribute('src')) {\n loader.addEventListener('loadend', () => autofocus(details));\n loader.setAttribute('src', src);\n }\n}\nfunction focusOnOpen(details) {\n let isMouse = false;\n const onmousedown = () => (isMouse = true);\n const onkeydown = () => (isMouse = false);\n const ontoggle = () => {\n if (!details.hasAttribute('open'))\n return;\n if (autofocus(details))\n return;\n if (!isMouse)\n focusFirstItem(details);\n };\n return [\n fromEvent(details, 'mousedown', onmousedown),\n fromEvent(details, 'keydown', onkeydown),\n fromEvent(details, 'toggle', ontoggle)\n ];\n}\nfunction closeCurrentMenu(details) {\n if (!details.hasAttribute('open'))\n return;\n for (const menu of document.querySelectorAll('details[open] > details-menu')) {\n const opened = menu.closest('details');\n if (opened && opened !== details && !opened.contains(details)) {\n opened.removeAttribute('open');\n }\n }\n}\nfunction autofocus(details) {\n if (!details.hasAttribute('open'))\n return false;\n const input = details.querySelector('details-menu [autofocus]');\n if (input) {\n input.focus();\n return true;\n }\n else {\n return false;\n }\n}\nfunction focusFirstItem(details) {\n const selected = document.activeElement;\n if (selected && isMenuItem(selected) && details.contains(selected))\n return;\n const target = sibling(details, true);\n if (target)\n target.focus();\n}\nfunction sibling(details, next) {\n const options = Array.from(details.querySelectorAll('[role^=\"menuitem\"]:not([hidden]):not([disabled])'));\n const selected = document.activeElement;\n const index = selected instanceof HTMLElement ? options.indexOf(selected) : -1;\n const found = next ? options[index + 1] : options[index - 1];\n const def = next ? options[0] : options[options.length - 1];\n return found || def;\n}\nconst ctrlBindings = navigator.userAgent.match(/Macintosh/);\nfunction shouldCommit(details, event) {\n const target = event.target;\n if (!(target instanceof Element))\n return;\n if (target.closest('details') !== details)\n return;\n if (event.type === 'click') {\n const menuitem = target.closest('[role=\"menuitem\"], [role=\"menuitemradio\"]');\n if (!menuitem)\n return;\n const input = menuitem.querySelector('input');\n if (menuitem.tagName === 'LABEL' && target === input)\n return;\n const onlyCommitOnChangeEvent = menuitem.tagName === 'LABEL' && input && !input.checked;\n if (!onlyCommitOnChangeEvent) {\n commit(menuitem, details);\n }\n }\n else if (event.type === 'change') {\n const menuitem = target.closest('[role=\"menuitemradio\"], [role=\"menuitemcheckbox\"]');\n if (menuitem)\n commit(menuitem, details);\n }\n}\nfunction updateChecked(selected, details) {\n for (const el of details.querySelectorAll('[role=\"menuitemradio\"], [role=\"menuitemcheckbox\"]')) {\n const input = el.querySelector('input[type=\"radio\"], input[type=\"checkbox\"]');\n let checkState = (el === selected).toString();\n if (input instanceof HTMLInputElement) {\n checkState = input.indeterminate ? 'mixed' : input.checked.toString();\n }\n el.setAttribute('aria-checked', checkState);\n }\n}\nfunction commit(selected, details) {\n if (selected.hasAttribute('disabled') || selected.getAttribute('aria-disabled') === 'true')\n return;\n const menu = selected.closest('details-menu');\n if (!menu)\n return;\n const dispatched = menu.dispatchEvent(new CustomEvent('details-menu-select', {\n cancelable: true,\n detail: { relatedTarget: selected }\n }));\n if (!dispatched)\n return;\n updateLabel(selected, details);\n updateChecked(selected, details);\n if (selected.getAttribute('role') !== 'menuitemcheckbox')\n close(details);\n menu.dispatchEvent(new CustomEvent('details-menu-selected', {\n detail: { relatedTarget: selected }\n }));\n}\nfunction keydown(details, menu, event) {\n if (!(event instanceof KeyboardEvent))\n return;\n if (details.querySelector('details[open]'))\n return;\n const state = states.get(menu);\n if (!state || state.isComposing)\n return;\n const isSummaryFocused = event.target instanceof Element && event.target.tagName === 'SUMMARY';\n switch (event.key) {\n case 'Escape':\n if (details.hasAttribute('open')) {\n close(details);\n event.preventDefault();\n event.stopPropagation();\n }\n break;\n case 'ArrowDown':\n {\n if (isSummaryFocused && !details.hasAttribute('open')) {\n details.setAttribute('open', '');\n }\n const target = sibling(details, true);\n if (target)\n target.focus();\n event.preventDefault();\n }\n break;\n case 'ArrowUp':\n {\n if (isSummaryFocused && !details.hasAttribute('open')) {\n details.setAttribute('open', '');\n }\n const target = sibling(details, false);\n if (target)\n target.focus();\n event.preventDefault();\n }\n break;\n case 'n':\n {\n if (ctrlBindings && event.ctrlKey) {\n const target = sibling(details, true);\n if (target)\n target.focus();\n event.preventDefault();\n }\n }\n break;\n case 'p':\n {\n if (ctrlBindings && event.ctrlKey) {\n const target = sibling(details, false);\n if (target)\n target.focus();\n event.preventDefault();\n }\n }\n break;\n case ' ':\n case 'Enter':\n {\n const selected = document.activeElement;\n if (selected instanceof HTMLElement && isMenuItem(selected) && selected.closest('details') === details) {\n event.preventDefault();\n event.stopPropagation();\n selected.click();\n }\n }\n break;\n }\n}\nfunction isMenuItem(el) {\n const role = el.getAttribute('role');\n return role === 'menuitem' || role === 'menuitemcheckbox' || role === 'menuitemradio';\n}\nfunction close(details) {\n const wasOpen = details.hasAttribute('open');\n if (!wasOpen)\n return;\n details.removeAttribute('open');\n const summary = details.querySelector('summary');\n if (summary)\n summary.focus();\n}\nfunction updateLabel(item, details) {\n const button = details.querySelector('[data-menu-button]');\n if (!button)\n return;\n const text = labelText(item);\n if (text) {\n button.textContent = text;\n }\n else {\n const html = labelHTML(item);\n if (html)\n button.innerHTML = html;\n }\n}\nfunction labelText(el) {\n if (!el)\n return null;\n const textEl = el.hasAttribute('data-menu-button-text') ? el : el.querySelector('[data-menu-button-text]');\n if (!textEl)\n return null;\n return textEl.getAttribute('data-menu-button-text') || textEl.textContent;\n}\nfunction labelHTML(el) {\n if (!el)\n return null;\n const contentsEl = el.hasAttribute('data-menu-button-contents') ? el : el.querySelector('[data-menu-button-contents]');\n return contentsEl ? contentsEl.innerHTML : null;\n}\nfunction trackComposition(menu, event) {\n const state = states.get(menu);\n if (!state)\n return;\n state.isComposing = event.type === 'compositionstart';\n}\nexport default DetailsMenuElement;\nif (!window.customElements.get('details-menu')) {\n window.DetailsMenuElement = DetailsMenuElement;\n window.customElements.define('details-menu', DetailsMenuElement);\n}\n","const startPositions = new WeakMap();\nconst dragStartPositions = new WeakMap();\nconst constructedElements = new WeakMap();\nfunction moveCropArea(event) {\n const el = event.currentTarget;\n if (!(el instanceof ImageCropElement))\n return;\n const { box, image } = constructedElements.get(el) || {};\n if (!box || !image)\n return;\n let deltaX = 0;\n let deltaY = 0;\n if (event instanceof KeyboardEvent) {\n if (event.key === 'ArrowUp') {\n deltaY = -1;\n }\n else if (event.key === 'ArrowDown') {\n deltaY = 1;\n }\n else if (event.key === 'ArrowLeft') {\n deltaX = -1;\n }\n else if (event.key === 'ArrowRight') {\n deltaX = 1;\n }\n }\n else if (dragStartPositions.has(el) && event instanceof MouseEvent) {\n const pos = dragStartPositions.get(el);\n deltaX = event.pageX - pos.dragStartX;\n deltaY = event.pageY - pos.dragStartY;\n }\n else if (dragStartPositions.has(el) && event instanceof TouchEvent) {\n const { pageX, pageY } = event.changedTouches[0];\n const { dragStartX, dragStartY } = dragStartPositions.get(el);\n deltaX = pageX - dragStartX;\n deltaY = pageY - dragStartY;\n }\n if (deltaX !== 0 || deltaY !== 0) {\n const x = Math.min(Math.max(0, box.offsetLeft + deltaX), image.width - box.offsetWidth);\n const y = Math.min(Math.max(0, box.offsetTop + deltaY), image.height - box.offsetHeight);\n box.style.left = `${x}px`;\n box.style.top = `${y}px`;\n fireChangeEvent(el, { x, y, width: box.offsetWidth, height: box.offsetHeight });\n }\n if (event instanceof MouseEvent) {\n dragStartPositions.set(el, {\n dragStartX: event.pageX,\n dragStartY: event.pageY\n });\n }\n else if (event instanceof TouchEvent) {\n const { pageX, pageY } = event.changedTouches[0];\n dragStartPositions.set(el, {\n dragStartX: pageX,\n dragStartY: pageY\n });\n }\n}\nfunction updateCropArea(event) {\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n const el = getShadowHost(target);\n if (!(el instanceof ImageCropElement))\n return;\n const { box } = constructedElements.get(el) || {};\n if (!box)\n return;\n const rect = el.getBoundingClientRect();\n let deltaX, deltaY, delta;\n if (event instanceof KeyboardEvent) {\n if (event.key === 'Escape')\n return setInitialPosition(el);\n if (event.key === '-')\n delta = -10;\n if (event.key === '=')\n delta = +10;\n if (!delta)\n return;\n deltaX = box.offsetWidth + delta;\n deltaY = box.offsetHeight + delta;\n startPositions.set(el, { startX: box.offsetLeft, startY: box.offsetTop });\n }\n else if (event instanceof MouseEvent) {\n const pos = startPositions.get(el);\n if (!pos)\n return;\n deltaX = event.pageX - pos.startX - rect.left - window.pageXOffset;\n deltaY = event.pageY - pos.startY - rect.top - window.pageYOffset;\n }\n else if (event instanceof TouchEvent) {\n const pos = startPositions.get(el);\n if (!pos)\n return;\n deltaX = event.changedTouches[0].pageX - pos.startX - rect.left - window.pageXOffset;\n deltaY = event.changedTouches[0].pageY - pos.startY - rect.top - window.pageYOffset;\n }\n if (deltaX && deltaY)\n updateDimensions(el, deltaX, deltaY, !(event instanceof KeyboardEvent));\n}\nfunction getShadowHost(el) {\n const rootNode = el.getRootNode();\n if (!(rootNode instanceof ShadowRoot))\n return el;\n return rootNode.host;\n}\nfunction startUpdate(event) {\n const currentTarget = event.currentTarget;\n if (!(currentTarget instanceof HTMLElement))\n return;\n const el = getShadowHost(currentTarget);\n if (!(el instanceof ImageCropElement))\n return;\n const { box } = constructedElements.get(el) || {};\n if (!box)\n return;\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n if (target.hasAttribute('data-direction')) {\n const direction = target.getAttribute('data-direction') || '';\n el.addEventListener('mousemove', updateCropArea);\n el.addEventListener('touchmove', updateCropArea, { passive: true });\n if (['nw', 'se'].indexOf(direction) >= 0)\n el.classList.add('nwse');\n if (['ne', 'sw'].indexOf(direction) >= 0)\n el.classList.add('nesw');\n startPositions.set(el, {\n startX: box.offsetLeft + (['se', 'ne'].indexOf(direction) >= 0 ? 0 : box.offsetWidth),\n startY: box.offsetTop + (['se', 'sw'].indexOf(direction) >= 0 ? 0 : box.offsetHeight)\n });\n updateCropArea(event);\n }\n else {\n el.addEventListener('mousemove', moveCropArea);\n el.addEventListener('touchmove', moveCropArea, { passive: true });\n }\n}\nfunction updateDimensions(target, deltaX, deltaY, reposition = true) {\n let newSide = Math.max(Math.abs(deltaX), Math.abs(deltaY), 10);\n const pos = startPositions.get(target);\n if (!pos)\n return;\n const { box, image } = constructedElements.get(target) || {};\n if (!box || !image)\n return;\n newSide = Math.min(newSide, deltaY > 0 ? image.height - pos.startY : pos.startY, deltaX > 0 ? image.width - pos.startX : pos.startX);\n const x = reposition ? Math.round(Math.max(0, deltaX > 0 ? pos.startX : pos.startX - newSide)) : box.offsetLeft;\n const y = reposition ? Math.round(Math.max(0, deltaY > 0 ? pos.startY : pos.startY - newSide)) : box.offsetTop;\n box.style.left = `${x}px`;\n box.style.top = `${y}px`;\n box.style.width = `${newSide}px`;\n box.style.height = `${newSide}px`;\n fireChangeEvent(target, { x, y, width: newSide, height: newSide });\n}\nfunction setInitialPosition(el) {\n const { image } = constructedElements.get(el) || {};\n if (!image)\n return;\n const side = Math.round(image.clientWidth > image.clientHeight ? image.clientHeight : image.clientWidth);\n startPositions.set(el, {\n startX: (image.clientWidth - side) / 2,\n startY: (image.clientHeight - side) / 2\n });\n updateDimensions(el, side, side);\n}\nfunction stopUpdate(event) {\n const el = event.currentTarget;\n if (!(el instanceof ImageCropElement))\n return;\n dragStartPositions.delete(el);\n el.classList.remove('nwse', 'nesw');\n el.removeEventListener('mousemove', updateCropArea);\n el.removeEventListener('mousemove', moveCropArea);\n el.removeEventListener('touchmove', updateCropArea);\n el.removeEventListener('touchmove', moveCropArea);\n}\nfunction fireChangeEvent(target, result) {\n const { image } = constructedElements.get(target) || {};\n if (!image)\n return;\n const ratio = image.naturalWidth / image.width;\n for (const key in result) {\n const value = Math.round(result[key] * ratio);\n result[key] = value;\n const slottedInput = target.querySelector(`[data-image-crop-input='${key}']`);\n if (slottedInput instanceof HTMLInputElement)\n slottedInput.value = value.toString();\n }\n target.dispatchEvent(new CustomEvent('image-crop-change', { bubbles: true, detail: result }));\n}\nclass ImageCropElement extends HTMLElement {\n connectedCallback() {\n if (constructedElements.has(this))\n return;\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.innerHTML = `\n<style>\n :host { touch-action: none; display: block; }\n :host(.nesw) { cursor: nesw-resize; }\n :host(.nwse) { cursor: nwse-resize; }\n :host(.nesw) .crop-box, :host(.nwse) .crop-box { cursor: inherit; }\n :host([loaded]) .crop-image { display: block; }\n :host([loaded]) ::slotted([data-loading-slot]), .crop-image { display: none; }\n\n .crop-wrapper {\n position: relative;\n font-size: 0;\n }\n .crop-container {\n user-select: none;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n position: absolute;\n overflow: hidden;\n z-index: 1;\n top: 0;\n width: 100%;\n height: 100%;\n }\n\n :host([rounded]) .crop-box {\n border-radius: 50%;\n box-shadow: 0 0 0 4000px rgba(0, 0, 0, 0.3);\n }\n .crop-box {\n position: absolute;\n border: 1px dashed #fff;\n box-sizing: border-box;\n cursor: move;\n }\n\n :host([rounded]) .crop-outline {\n outline: none;\n }\n .crop-outline {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n outline: 4000px solid rgba(0, 0, 0, .3);\n }\n\n .handle { position: absolute; }\n :host([rounded]) .handle::before { border-radius: 50%; }\n .handle:before {\n position: absolute;\n display: block;\n padding: 4px;\n transform: translate(-50%, -50%);\n content: ' ';\n background: #fff;\n border: 1px solid #767676;\n }\n .ne { top: 0; right: 0; cursor: nesw-resize; }\n .nw { top: 0; left: 0; cursor: nwse-resize; }\n .se { bottom: 0; right: 0; cursor: nwse-resize; }\n .sw { bottom: 0; left: 0; cursor: nesw-resize; }\n</style>\n<slot></slot>\n<div class=\"crop-wrapper\">\n <img width=\"100%\" class=\"crop-image\" alt=\"\">\n <div class=\"crop-container\">\n <div data-crop-box class=\"crop-box\">\n <div class=\"crop-outline\"></div>\n <div data-direction=\"nw\" class=\"handle nw\"></div>\n <div data-direction=\"ne\" class=\"handle ne\"></div>\n <div data-direction=\"sw\" class=\"handle sw\"></div>\n <div data-direction=\"se\" class=\"handle se\"></div>\n </div>\n </div>\n</div>\n`;\n const box = shadowRoot.querySelector('[data-crop-box]');\n if (!(box instanceof HTMLElement))\n return;\n const image = shadowRoot.querySelector('img');\n if (!(image instanceof HTMLImageElement))\n return;\n constructedElements.set(this, { box, image });\n image.addEventListener('load', () => {\n this.loaded = true;\n setInitialPosition(this);\n });\n this.addEventListener('mouseleave', stopUpdate);\n this.addEventListener('touchend', stopUpdate);\n this.addEventListener('mouseup', stopUpdate);\n box.addEventListener('mousedown', startUpdate);\n box.addEventListener('touchstart', startUpdate, { passive: true });\n this.addEventListener('keydown', moveCropArea);\n this.addEventListener('keydown', updateCropArea);\n if (this.src)\n image.src = this.src;\n }\n static get observedAttributes() {\n return ['src'];\n }\n get src() {\n return this.getAttribute('src');\n }\n set src(val) {\n if (val) {\n this.setAttribute('src', val);\n }\n else {\n this.removeAttribute('src');\n }\n }\n get loaded() {\n return this.hasAttribute('loaded');\n }\n set loaded(val) {\n if (val) {\n this.setAttribute('loaded', '');\n }\n else {\n this.removeAttribute('loaded');\n }\n }\n attributeChangedCallback(attribute, oldValue, newValue) {\n const { image } = constructedElements.get(this) || {};\n if (attribute === 'src') {\n this.loaded = false;\n if (image)\n image.src = newValue;\n }\n }\n}\nexport default ImageCropElement;\nif (!window.customElements.get('image-crop')) {\n window.ImageCropElement = ImageCropElement;\n window.customElements.define('image-crop', ImageCropElement);\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","const alternateOrders = {\n 'outside-top': ['outside-bottom', 'outside-right', 'outside-left', 'outside-bottom'],\n 'outside-bottom': ['outside-top', 'outside-right', 'outside-left', 'outside-bottom'],\n 'outside-left': ['outside-right', 'outside-bottom', 'outside-top', 'outside-bottom'],\n 'outside-right': ['outside-left', 'outside-bottom', 'outside-top', 'outside-bottom']\n};\nconst alternateAlignments = {\n start: ['end', 'center'],\n end: ['start', 'center'],\n center: ['end', 'start']\n};\nexport function getAnchoredPosition(floatingElement, anchorElement, settings = {}) {\n const parentElement = getPositionedParent(floatingElement);\n const clippingRect = getClippingRect(parentElement);\n const parentElementStyle = getComputedStyle(parentElement);\n const parentElementRect = parentElement.getBoundingClientRect();\n const [borderTop, borderLeft] = [parentElementStyle.borderTopWidth, parentElementStyle.borderLeftWidth].map(v => parseInt(v, 10) || 0);\n const relativeRect = {\n top: parentElementRect.top + borderTop,\n left: parentElementRect.left + borderLeft\n };\n return pureCalculateAnchoredPosition(clippingRect, relativeRect, floatingElement.getBoundingClientRect(), anchorElement instanceof Element ? anchorElement.getBoundingClientRect() : anchorElement, getDefaultSettings(settings));\n}\nfunction getPositionedParent(element) {\n let parentNode = element.parentNode;\n while (parentNode !== null) {\n if (parentNode instanceof HTMLElement && getComputedStyle(parentNode).position !== 'static') {\n return parentNode;\n }\n parentNode = parentNode.parentNode;\n }\n return document.body;\n}\nfunction getClippingRect(element) {\n let parentNode = element;\n while (parentNode !== null) {\n if (parentNode === document.body) {\n break;\n }\n const parentNodeStyle = getComputedStyle(parentNode);\n if (parentNodeStyle.overflow !== 'visible') {\n break;\n }\n parentNode = parentNode.parentNode;\n }\n const clippingNode = parentNode === document.body || !(parentNode instanceof HTMLElement) ? document.body : parentNode;\n const elemRect = clippingNode.getBoundingClientRect();\n const elemStyle = getComputedStyle(clippingNode);\n const [borderTop, borderLeft, borderRight, borderBottom] = [\n elemStyle.borderTopWidth,\n elemStyle.borderLeftWidth,\n elemStyle.borderRightWidth,\n elemStyle.borderBottomWidth\n ].map(v => parseInt(v, 10) || 0);\n return {\n top: elemRect.top + borderTop,\n left: elemRect.left + borderLeft,\n width: elemRect.width - borderRight - borderLeft,\n height: Math.max(elemRect.height - borderTop - borderBottom, clippingNode === document.body ? window.innerHeight : -Infinity)\n };\n}\nconst positionDefaults = {\n side: 'outside-bottom',\n align: 'start',\n anchorOffset: 4,\n alignmentOffset: 4,\n allowOutOfBounds: false\n};\nfunction getDefaultSettings(settings = {}) {\n var _a, _b, _c, _d, _e;\n const side = (_a = settings.side) !== null && _a !== void 0 ? _a : positionDefaults.side;\n const align = (_b = settings.align) !== null && _b !== void 0 ? _b : positionDefaults.align;\n return {\n side,\n align,\n anchorOffset: (_c = settings.anchorOffset) !== null && _c !== void 0 ? _c : (side === 'inside-center' ? 0 : positionDefaults.anchorOffset),\n alignmentOffset: (_d = settings.alignmentOffset) !== null && _d !== void 0 ? _d : (align !== 'center' && side.startsWith('inside') ? positionDefaults.alignmentOffset : 0),\n allowOutOfBounds: (_e = settings.allowOutOfBounds) !== null && _e !== void 0 ? _e : positionDefaults.allowOutOfBounds\n };\n}\nfunction pureCalculateAnchoredPosition(viewportRect, relativePosition, floatingRect, anchorRect, { side, align, allowOutOfBounds, anchorOffset, alignmentOffset }) {\n const relativeViewportRect = {\n top: viewportRect.top - relativePosition.top,\n left: viewportRect.left - relativePosition.left,\n width: viewportRect.width,\n height: viewportRect.height\n };\n let pos = calculatePosition(floatingRect, anchorRect, side, align, anchorOffset, alignmentOffset);\n let anchorSide = side;\n let anchorAlign = align;\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n if (!allowOutOfBounds) {\n const alternateOrder = alternateOrders[side];\n let positionAttempt = 0;\n if (alternateOrder) {\n let prevSide = side;\n while (positionAttempt < alternateOrder.length &&\n shouldRecalculatePosition(prevSide, pos, relativeViewportRect, floatingRect)) {\n const nextSide = alternateOrder[positionAttempt++];\n prevSide = nextSide;\n pos = calculatePosition(floatingRect, anchorRect, nextSide, align, anchorOffset, alignmentOffset);\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n anchorSide = nextSide;\n }\n }\n const alternateAlignment = alternateAlignments[align];\n let alignmentAttempt = 0;\n if (alternateAlignment) {\n let prevAlign = align;\n while (alignmentAttempt < alternateAlignment.length &&\n shouldRecalculateAlignment(prevAlign, pos, relativeViewportRect, floatingRect)) {\n const nextAlign = alternateAlignment[alignmentAttempt++];\n prevAlign = nextAlign;\n pos = calculatePosition(floatingRect, anchorRect, anchorSide, nextAlign, anchorOffset, alignmentOffset);\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n anchorAlign = nextAlign;\n }\n }\n if (pos.top < relativeViewportRect.top) {\n pos.top = relativeViewportRect.top;\n }\n if (pos.left < relativeViewportRect.left) {\n pos.left = relativeViewportRect.left;\n }\n if (pos.left + floatingRect.width > viewportRect.width + relativeViewportRect.left) {\n pos.left = viewportRect.width + relativeViewportRect.left - floatingRect.width;\n }\n if (alternateOrder && positionAttempt < alternateOrder.length) {\n if (pos.top + floatingRect.height > viewportRect.height + relativeViewportRect.top) {\n pos.top = viewportRect.height + relativeViewportRect.top - floatingRect.height;\n }\n }\n }\n return Object.assign(Object.assign({}, pos), { anchorSide, anchorAlign });\n}\nfunction calculatePosition(elementDimensions, anchorPosition, side, align, anchorOffset, alignmentOffset) {\n const anchorRight = anchorPosition.left + anchorPosition.width;\n const anchorBottom = anchorPosition.top + anchorPosition.height;\n let top = -1;\n let left = -1;\n if (side === 'outside-top') {\n top = anchorPosition.top - anchorOffset - elementDimensions.height;\n }\n else if (side === 'outside-bottom') {\n top = anchorBottom + anchorOffset;\n }\n else if (side === 'outside-left') {\n left = anchorPosition.left - anchorOffset - elementDimensions.width;\n }\n else if (side === 'outside-right') {\n left = anchorRight + anchorOffset;\n }\n if (side === 'outside-top' || side === 'outside-bottom') {\n if (align === 'start') {\n left = anchorPosition.left + alignmentOffset;\n }\n else if (align === 'center') {\n left = anchorPosition.left - (elementDimensions.width - anchorPosition.width) / 2 + alignmentOffset;\n }\n else {\n left = anchorRight - elementDimensions.width - alignmentOffset;\n }\n }\n if (side === 'outside-left' || side === 'outside-right') {\n if (align === 'start') {\n top = anchorPosition.top + alignmentOffset;\n }\n else if (align === 'center') {\n top = anchorPosition.top - (elementDimensions.height - anchorPosition.height) / 2 + alignmentOffset;\n }\n else {\n top = anchorBottom - elementDimensions.height - alignmentOffset;\n }\n }\n if (side === 'inside-top') {\n top = anchorPosition.top + anchorOffset;\n }\n else if (side === 'inside-bottom') {\n top = anchorBottom - anchorOffset - elementDimensions.height;\n }\n else if (side === 'inside-left') {\n left = anchorPosition.left + anchorOffset;\n }\n else if (side === 'inside-right') {\n left = anchorRight - anchorOffset - elementDimensions.width;\n }\n else if (side === 'inside-center') {\n left = (anchorRight + anchorPosition.left) / 2 - elementDimensions.width / 2 + anchorOffset;\n }\n if (side === 'inside-top' || side === 'inside-bottom') {\n if (align === 'start') {\n left = anchorPosition.left + alignmentOffset;\n }\n else if (align === 'center') {\n left = anchorPosition.left - (elementDimensions.width - anchorPosition.width) / 2 + alignmentOffset;\n }\n else {\n left = anchorRight - elementDimensions.width - alignmentOffset;\n }\n }\n else if (side === 'inside-left' || side === 'inside-right' || side === 'inside-center') {\n if (align === 'start') {\n top = anchorPosition.top + alignmentOffset;\n }\n else if (align === 'center') {\n top = anchorPosition.top - (elementDimensions.height - anchorPosition.height) / 2 + alignmentOffset;\n }\n else {\n top = anchorBottom - elementDimensions.height - alignmentOffset;\n }\n }\n return { top, left };\n}\nfunction shouldRecalculatePosition(side, currentPos, containerDimensions, elementDimensions) {\n if (side === 'outside-top' || side === 'outside-bottom') {\n return (currentPos.top < containerDimensions.top ||\n currentPos.top + elementDimensions.height > containerDimensions.height + containerDimensions.top);\n }\n else {\n return (currentPos.left < containerDimensions.left ||\n currentPos.left + elementDimensions.width > containerDimensions.width + containerDimensions.left);\n }\n}\nfunction shouldRecalculateAlignment(align, currentPos, containerDimensions, elementDimensions) {\n if (align === 'end') {\n return currentPos.left < containerDimensions.left;\n }\n else if (align === 'start' || align === 'center') {\n return (currentPos.left + elementDimensions.width > containerDimensions.left + containerDimensions.width ||\n currentPos.left < containerDimensions.left);\n }\n}\n","export function* iterateFocusableElements(container, options = {}) {\n var _a, _b;\n const strict = (_a = options.strict) !== null && _a !== void 0 ? _a : false;\n const acceptFn = ((_b = options.onlyTabbable) !== null && _b !== void 0 ? _b : false) ? isTabbable : isFocusable;\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: node => node instanceof HTMLElement && acceptFn(node, strict) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP\n });\n let nextNode = null;\n if (!options.reverse && acceptFn(container, strict)) {\n yield container;\n }\n if (options.reverse) {\n let lastChild = walker.lastChild();\n while (lastChild) {\n nextNode = lastChild;\n lastChild = walker.lastChild();\n }\n }\n else {\n nextNode = walker.firstChild();\n }\n while (nextNode instanceof HTMLElement) {\n yield nextNode;\n nextNode = options.reverse ? walker.previousNode() : walker.nextNode();\n }\n if (options.reverse && acceptFn(container, strict)) {\n yield container;\n }\n return undefined;\n}\nexport function getFocusableChild(container, lastChild = false) {\n return iterateFocusableElements(container, { reverse: lastChild, strict: true, onlyTabbable: true }).next().value;\n}\nexport function isFocusable(elem, strict = false) {\n const disabledAttrInert = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'OPTGROUP', 'OPTION', 'FIELDSET'].includes(elem.tagName) &&\n elem.disabled;\n const hiddenInert = elem.hidden;\n const hiddenInputInert = elem instanceof HTMLInputElement && elem.type === 'hidden';\n const sentinelInert = elem.classList.contains('sentinel');\n if (disabledAttrInert || hiddenInert || hiddenInputInert || sentinelInert) {\n return false;\n }\n if (strict) {\n const sizeInert = elem.offsetWidth === 0 || elem.offsetHeight === 0;\n const visibilityInert = ['hidden', 'collapse'].includes(getComputedStyle(elem).visibility);\n const clientRectsInert = elem.getClientRects().length === 0;\n if (sizeInert || visibilityInert || clientRectsInert) {\n return false;\n }\n }\n if (elem.getAttribute('tabindex') != null) {\n return true;\n }\n if (elem instanceof HTMLAnchorElement && elem.getAttribute('href') == null) {\n return false;\n }\n return elem.tabIndex !== -1;\n}\nexport function isTabbable(elem, strict = false) {\n return isFocusable(elem, strict) && elem.getAttribute('tabindex') !== '-1';\n}\n","let signalSupported = false;\nfunction noop() { }\ntry {\n const options = Object.create({}, {\n signal: {\n get() {\n signalSupported = true;\n }\n }\n });\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n}\ncatch (e) {\n}\nfunction featureSupported() {\n return signalSupported;\n}\nfunction monkeyPatch() {\n if (typeof window === 'undefined') {\n return;\n }\n const originalAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function (name, originalCallback, optionsOrCapture) {\n if (typeof optionsOrCapture === 'object' &&\n 'signal' in optionsOrCapture &&\n optionsOrCapture.signal instanceof AbortSignal) {\n originalAddEventListener.call(optionsOrCapture.signal, 'abort', () => {\n this.removeEventListener(name, originalCallback, optionsOrCapture);\n });\n }\n return originalAddEventListener.call(this, name, originalCallback, optionsOrCapture);\n };\n}\nexport function polyfill() {\n if (!featureSupported()) {\n monkeyPatch();\n signalSupported = true;\n }\n}\n","import { getFocusableChild, isTabbable } from './utils/iterate-focusable-elements.js';\nimport { polyfill as eventListenerSignalPolyfill } from './polyfills/event-listener-signal.js';\neventListenerSignalPolyfill();\nconst suspendedTrapStack = [];\nlet activeTrap = undefined;\nfunction tryReactivate() {\n const trapToReactivate = suspendedTrapStack.pop();\n if (trapToReactivate) {\n focusTrap(trapToReactivate.container, trapToReactivate.initialFocus, trapToReactivate.originalSignal);\n }\n}\nfunction followSignal(signal) {\n const controller = new AbortController();\n signal.addEventListener('abort', () => {\n controller.abort();\n });\n return controller;\n}\nexport function focusTrap(container, initialFocus, abortSignal) {\n const controller = new AbortController();\n const signal = abortSignal !== null && abortSignal !== void 0 ? abortSignal : controller.signal;\n container.setAttribute('data-focus-trap', 'active');\n const sentinelStart = document.createElement('span');\n sentinelStart.setAttribute('class', 'sentinel');\n sentinelStart.setAttribute('tabindex', '0');\n sentinelStart.setAttribute('aria-hidden', 'true');\n sentinelStart.onfocus = () => {\n const lastFocusableChild = getFocusableChild(container, true);\n lastFocusableChild === null || lastFocusableChild === void 0 ? void 0 : lastFocusableChild.focus();\n };\n const sentinelEnd = document.createElement('span');\n sentinelEnd.setAttribute('class', 'sentinel');\n sentinelEnd.setAttribute('tabindex', '0');\n sentinelEnd.setAttribute('aria-hidden', 'true');\n sentinelEnd.onfocus = () => {\n const firstFocusableChild = getFocusableChild(container);\n firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();\n };\n container.prepend(sentinelStart);\n container.append(sentinelEnd);\n let lastFocusedChild = undefined;\n function ensureTrapZoneHasFocus(focusedElement) {\n if (focusedElement instanceof HTMLElement && document.contains(container)) {\n if (container.contains(focusedElement)) {\n lastFocusedChild = focusedElement;\n return;\n }\n else {\n if (lastFocusedChild && isTabbable(lastFocusedChild) && container.contains(lastFocusedChild)) {\n lastFocusedChild.focus();\n return;\n }\n else if (initialFocus && container.contains(initialFocus)) {\n initialFocus.focus();\n return;\n }\n else {\n const firstFocusableChild = getFocusableChild(container);\n firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();\n return;\n }\n }\n }\n }\n const wrappingController = followSignal(signal);\n if (activeTrap) {\n const suspendedTrap = activeTrap;\n activeTrap.container.setAttribute('data-focus-trap', 'suspended');\n activeTrap.controller.abort();\n suspendedTrapStack.push(suspendedTrap);\n }\n wrappingController.signal.addEventListener('abort', () => {\n activeTrap = undefined;\n });\n signal.addEventListener('abort', () => {\n container.removeAttribute('data-focus-trap');\n const sentinels = container.getElementsByClassName('sentinel');\n while (sentinels.length > 0)\n sentinels[0].remove();\n const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);\n if (suspendedTrapIndex >= 0) {\n suspendedTrapStack.splice(suspendedTrapIndex, 1);\n }\n tryReactivate();\n });\n document.addEventListener('focus', event => {\n ensureTrapZoneHasFocus(event.target);\n }, { signal: wrappingController.signal, capture: true });\n ensureTrapZoneHasFocus(document.activeElement);\n activeTrap = {\n container,\n controller: wrappingController,\n initialFocus,\n originalSignal: signal\n };\n const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);\n if (suspendedTrapIndex >= 0) {\n suspendedTrapStack.splice(suspendedTrapIndex, 1);\n }\n if (!abortSignal) {\n return controller;\n }\n}\n","import {focusTrap} from '@primer/behaviors'\nimport {getFocusableChild} from '@primer/behaviors/utils'\n\nfunction focusIfNeeded(elem: HTMLElement | undefined | null) {\n if (document.activeElement !== elem) {\n elem?.focus()\n }\n}\n\nconst overlayStack: ModalDialogElement[] = []\n\nfunction clickHandler(event: Event) {\n const target = event.target as HTMLElement\n const button = target?.closest('button')\n if (!button) return\n\n // If the user is clicking a valid dialog trigger\n let dialogId = button?.getAttribute('data-show-dialog-id')\n if (dialogId) {\n event.stopPropagation()\n const dialog = document.getElementById(dialogId)\n if (dialog instanceof ModalDialogElement) {\n dialog.openButton = button\n dialog.show()\n return\n }\n }\n\n // Find the top level dialog that is open.\n const topLevelDialog = overlayStack[overlayStack.length - 1]\n if (!topLevelDialog) return\n\n dialogId = button.getAttribute('data-close-dialog-id')\n if (dialogId === topLevelDialog.id) {\n overlayStack.pop()\n topLevelDialog.close()\n }\n\n dialogId = button.getAttribute('data-submit-dialog-id')\n if (dialogId === topLevelDialog.id) {\n overlayStack.pop()\n topLevelDialog.close(true)\n }\n}\n\nfunction mousedownHandler(event: Event) {\n const target = event.target as HTMLElement\n if (target?.closest('button')) return\n\n // Find the top level dialog that is open.\n const topLevelDialog = overlayStack[overlayStack.length - 1]\n if (!topLevelDialog) return\n\n // Check if the mousedown happened outside the boundary of the top level dialog\n const mouseDownOutsideDialog = !target.closest(`#${topLevelDialog.getAttribute('id')}`)\n\n // Only close dialog if it's a click outside the dialog and the dialog has a button?\n if (mouseDownOutsideDialog) {\n target.ownerDocument.addEventListener(\n 'mouseup',\n (upEvent: Event) => {\n if (upEvent.target === target) {\n overlayStack.pop()\n topLevelDialog.close()\n }\n },\n {once: true}\n )\n }\n}\n\nexport class ModalDialogElement extends HTMLElement {\n //TODO: Do we remove the abortController from focusTrap?\n #focusAbortController = new AbortController()\n openButton: HTMLButtonElement | null\n\n get open() {\n return this.hasAttribute('open')\n }\n set open(value: boolean) {\n if (value) {\n if (this.open) return\n this.setAttribute('open', '')\n this.#overlayBackdrop?.classList.remove('Overlay--hidden')\n document.body.style.overflow = 'hidden'\n if (this.#focusAbortController.signal.aborted) {\n this.#focusAbortController = new AbortController()\n }\n focusTrap(this, undefined, this.#focusAbortController.signal)\n overlayStack.push(this)\n } else {\n if (!this.open) return\n this.removeAttribute('open')\n this.#overlayBackdrop?.classList.add('Overlay--hidden')\n document.body.style.overflow = 'initial'\n this.#focusAbortController.abort()\n // if #openButton is a child of a menu, we need to focus a suitable child of the menu\n // element since it is expected for the menu to close on click\n const menu = this.openButton?.closest('details') || this.openButton?.closest('action-menu')\n if (menu) {\n focusIfNeeded(getFocusableChild(menu))\n } else {\n focusIfNeeded(this.openButton)\n }\n this.openButton = null\n }\n }\n\n get #overlayBackdrop(): HTMLElement | null {\n if (this.parentElement?.hasAttribute('data-modal-dialog-overlay')) {\n return this.parentElement\n }\n\n return null\n }\n\n get showButtons(): NodeList {\n // Dialogs may also be opened from any arbitrary button with a matching show-dialog-id data attribute\n return document.querySelectorAll(`button[data-show-dialog-id='${this.id}']`)\n }\n\n connectedCallback(): void {\n if (!this.hasAttribute('role')) this.setAttribute('role', 'dialog')\n\n document.addEventListener('click', clickHandler)\n document.addEventListener('mousedown', mousedownHandler)\n\n this.addEventListener('keydown', e => this.#keydown(e))\n }\n\n show() {\n this.open = true\n }\n\n close(closedNotCancelled = false) {\n if (this.open === false) return\n const eventType = closedNotCancelled ? 'close' : 'cancel'\n const dialogEvent = new Event(eventType)\n this.dispatchEvent(dialogEvent)\n this.open = false\n }\n\n #keydown(event: Event) {\n if (!(event instanceof KeyboardEvent)) return\n if (event.isComposing) return\n\n switch (event.key) {\n case 'Escape':\n if (this.open) {\n this.close()\n event.preventDefault()\n event.stopPropagation()\n }\n break\n }\n }\n}\n\ndeclare global {\n interface Window {\n ModalDialogElement: typeof ModalDialogElement\n }\n interface HTMLElementTagNameMap {\n 'modal-dialog': ModalDialogElement\n }\n}\n\nif (!window.customElements.get('modal-dialog')) {\n window.ModalDialogElement = ModalDialogElement\n window.customElements.define('modal-dialog', ModalDialogElement)\n}\n","const controllers = new WeakSet();\n/*\n * Bind `[data-action]` elements from the DOM to their actions.\n *\n */\nexport function bind(controller) {\n controllers.add(controller);\n if (controller.shadowRoot)\n bindShadow(controller.shadowRoot);\n bindElements(controller);\n listenForBind(controller.ownerDocument);\n}\nexport function bindShadow(root) {\n bindElements(root);\n listenForBind(root);\n}\nconst observers = new WeakMap();\n/**\n * Set up observer that will make sure any actions that are dynamically\n * injected into `el` will be bound to it's controller.\n *\n * This returns a Subscription object which you can call `unsubscribe()` on to\n * stop further live updates.\n */\nexport function listenForBind(el = document) {\n if (observers.has(el))\n return observers.get(el);\n let closed = false;\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.target instanceof Element) {\n bindActions(mutation.target);\n }\n else if (mutation.type === 'childList' && mutation.addedNodes.length) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element) {\n bindElements(node);\n }\n }\n }\n }\n });\n observer.observe(el, { childList: true, subtree: true, attributeFilter: ['data-action'] });\n const subscription = {\n get closed() {\n return closed;\n },\n unsubscribe() {\n closed = true;\n observers.delete(el);\n observer.disconnect();\n }\n };\n observers.set(el, subscription);\n return subscription;\n}\nfunction bindElements(root) {\n for (const el of root.querySelectorAll('[data-action]')) {\n bindActions(el);\n }\n // Also bind the controller to itself\n if (root instanceof Element && root.hasAttribute('data-action')) {\n bindActions(root);\n }\n}\n// Bind a single function to all events to avoid anonymous closure performance penalty.\nfunction handleEvent(event) {\n const el = event.currentTarget;\n for (const binding of bindings(el)) {\n if (event.type === binding.type) {\n const controller = el.closest(binding.tag);\n if (controllers.has(controller) && typeof controller[binding.method] === 'function') {\n controller[binding.method](event);\n }\n const root = el.getRootNode();\n if (root instanceof ShadowRoot && controllers.has(root.host) && root.host.matches(binding.tag)) {\n const shadowController = root.host;\n if (typeof shadowController[binding.method] === 'function') {\n shadowController[binding.method](event);\n }\n }\n }\n }\n}\nfunction* bindings(el) {\n for (const action of (el.getAttribute('data-action') || '').trim().split(/\\s+/)) {\n const eventSep = action.lastIndexOf(':');\n const methodSep = Math.max(0, action.lastIndexOf('#')) || action.length;\n yield {\n type: action.slice(0, eventSep),\n tag: action.slice(eventSep + 1, methodSep),\n method: action.slice(methodSep + 1) || 'handleEvent'\n } || 'handleEvent';\n }\n}\nfunction bindActions(el) {\n for (const binding of bindings(el)) {\n el.addEventListener(binding.type, handleEvent);\n }\n}\n//# sourceMappingURL=bind.js.map","export const dasherize = (str) => String(typeof str === 'symbol' ? str.description : str)\n .replace(/([A-Z]($|[a-z]))/g, '-$1')\n .replace(/--/g, '-')\n .replace(/^-|-$/, '')\n .toLowerCase();\nexport const mustDasherize = (str, type = 'property') => {\n const dashed = dasherize(str);\n if (!dashed.includes('-')) {\n throw new DOMException(`${type}: ${String(str)} is not a valid ${type} name`, 'SyntaxError');\n }\n return dashed;\n};\n//# sourceMappingURL=dasherize.js.map","import { mustDasherize } from './dasherize.js';\nimport { meta } from './core.js';\nconst attrKey = 'attr';\n/**\n * Attr is a decorator which tags a property as one to be initialized via\n * `initializeAttrs`.\n *\n * The signature is typed such that the property must be one of a String,\n * Number or Boolean. This matches the behavior of `initializeAttrs`.\n */\nexport function attr(proto, key) {\n meta(proto, attrKey).add(key);\n}\n/**\n * initializeAttrs is called with a set of class property names (if omitted, it\n * will look for any properties tagged with the `@attr` decorator). With this\n * list it defines property descriptors for each property that map to `data-*`\n * attributes on the HTMLElement instance.\n *\n * It works around Native Class Property semantics - which are equivalent to\n * calling `Object.defineProperty` on the instance upon creation, but before\n * `constructor()` is called.\n *\n * If a class property is assigned to the class body, it will infer the type\n * (using `typeof`) and define an appropriate getter/setter combo that aligns\n * to that type. This means class properties assigned to Numbers can only ever\n * be Numbers, assigned to Booleans can only ever be Booleans, and assigned to\n * Strings can only ever be Strings.\n *\n * This is automatically called as part of `@controller`. If a class uses the\n * `@controller` decorator it should not call this manually.\n */\nconst initialized = new WeakSet();\nexport function initializeAttrs(instance, names) {\n if (initialized.has(instance))\n return;\n initialized.add(instance);\n const proto = Object.getPrototypeOf(instance);\n const prefix = proto?.constructor?.attrPrefix ?? 'data-';\n if (!names)\n names = meta(proto, attrKey);\n for (const key of names) {\n const value = instance[key];\n const name = mustDasherize(`${prefix}${key}`);\n let descriptor = {\n configurable: true,\n get() {\n return this.getAttribute(name) || '';\n },\n set(newValue) {\n this.setAttribute(name, newValue || '');\n }\n };\n if (typeof value === 'number') {\n descriptor = {\n configurable: true,\n get() {\n return Number(this.getAttribute(name) || 0);\n },\n set(newValue) {\n this.setAttribute(name, newValue);\n }\n };\n }\n else if (typeof value === 'boolean') {\n descriptor = {\n configurable: true,\n get() {\n return this.hasAttribute(name);\n },\n set(newValue) {\n this.toggleAttribute(name, newValue);\n }\n };\n }\n Object.defineProperty(instance, key, descriptor);\n if (key in instance && !instance.hasAttribute(name)) {\n descriptor.set.call(instance, value);\n }\n }\n}\nexport function defineObservedAttributes(classObject) {\n let observed = classObject.observedAttributes || [];\n const prefix = classObject.attrPrefix ?? 'data-';\n const attrToAttributeName = (name) => mustDasherize(`${prefix}${name}`);\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return [...meta(classObject.prototype, attrKey)].map(attrToAttributeName).concat(observed);\n },\n set(attributes) {\n observed = attributes;\n }\n });\n}\n//# sourceMappingURL=attr.js.map","import { register } from './register.js';\nimport { bind, bindShadow } from './bind.js';\nimport { autoShadowRoot } from './auto-shadow-root.js';\nimport { defineObservedAttributes, initializeAttrs } from './attr.js';\nconst symbol = Symbol.for('catalyst');\nexport class CatalystDelegate {\n constructor(classObject) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const delegate = this;\n const connectedCallback = classObject.prototype.connectedCallback;\n classObject.prototype.connectedCallback = function () {\n delegate.connectedCallback(this, connectedCallback);\n };\n const disconnectedCallback = classObject.prototype.disconnectedCallback;\n classObject.prototype.disconnectedCallback = function () {\n delegate.disconnectedCallback(this, disconnectedCallback);\n };\n const attributeChangedCallback = classObject.prototype.attributeChangedCallback;\n classObject.prototype.attributeChangedCallback = function (name, oldValue, newValue) {\n delegate.attributeChangedCallback(this, name, oldValue, newValue, attributeChangedCallback);\n };\n let observedAttributes = classObject.observedAttributes || [];\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return delegate.observedAttributes(this, observedAttributes);\n },\n set(attributes) {\n observedAttributes = attributes;\n }\n });\n defineObservedAttributes(classObject);\n register(classObject);\n }\n observedAttributes(instance, observedAttributes) {\n return observedAttributes;\n }\n connectedCallback(instance, connectedCallback) {\n instance.toggleAttribute('data-catalyst', true);\n customElements.upgrade(instance);\n autoShadowRoot(instance);\n initializeAttrs(instance);\n bind(instance);\n connectedCallback?.call(instance);\n if (instance.shadowRoot)\n bindShadow(instance.shadowRoot);\n }\n disconnectedCallback(element, disconnectedCallback) {\n disconnectedCallback?.call(element);\n }\n attributeChangedCallback(instance, name, oldValue, newValue, attributeChangedCallback) {\n initializeAttrs(instance);\n if (name !== 'data-catalyst' && attributeChangedCallback) {\n attributeChangedCallback.call(instance, name, oldValue, newValue);\n }\n }\n}\nexport function meta(proto, name) {\n if (!Object.prototype.hasOwnProperty.call(proto, symbol)) {\n const parent = proto[symbol];\n const map = (proto[symbol] = new Map());\n if (parent) {\n for (const [key, value] of parent) {\n map.set(key, new Set(value));\n }\n }\n }\n const map = proto[symbol];\n if (!map.has(name))\n map.set(name, new Set());\n return map.get(name);\n}\n//# sourceMappingURL=core.js.map","import { dasherize } from './dasherize.js';\n/**\n * Register the controller as a custom element.\n *\n * The classname is converted to a approriate tag name.\n *\n * Example: HelloController => hello-controller\n */\nexport function register(classObject) {\n const name = dasherize(classObject.name).replace(/-element$/, '');\n try {\n window.customElements.define(name, classObject);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window[classObject.name] = customElements.get(name);\n }\n catch (e) {\n // The only reason for window.customElements.define to throw a `NotSupportedError`\n // is if the element has already been defined.\n if (!(e instanceof DOMException && e.name === 'NotSupportedError'))\n throw e;\n }\n return classObject;\n}\n//# sourceMappingURL=register.js.map","export function autoShadowRoot(element) {\n for (const template of element.querySelectorAll('template[data-shadowroot]')) {\n if (template.parentElement === element) {\n element\n .attachShadow({\n mode: template.getAttribute('data-shadowroot') === 'closed' ? 'closed' : 'open'\n })\n .append(template.content.cloneNode(true));\n }\n }\n}\n//# sourceMappingURL=auto-shadow-root.js.map","import { findTarget, findTargets } from './findtarget.js';\nimport { meta } from './core.js';\n/**\n * Target is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTarget(this, key)` where `key` is the name of the\n * property field. In other words, `@target foo` becomes a getter for\n * `findTarget(this, 'foo')`.\n */\nexport function target(proto, key) {\n meta(proto, 'target').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTarget(this, key);\n }\n });\n}\n/**\n * Targets is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTargets(this, key)` where `key` is the name of the\n * property field. In other words, `@targets foo` becomes a getter for\n * `findTargets(this, 'foo')`.\n */\nexport function targets(proto, key) {\n meta(proto, 'targets').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTargets(this, key);\n }\n });\n}\n//# sourceMappingURL=target.js.map","/**\n * findTarget will run `querySelectorAll` against the given controller, plus\n * its shadowRoot, returning any the first child that:\n *\n * - Matches the selector of `[data-target~=\"tag.name\"]` where tag is the\n * tagName of the given HTMLElement, and `name` is the given `name` argument.\n *\n * - Closest ascendant of the element, that matches the tagname of the\n * controller, is the specific instance of the controller itself - in other\n * words it is not nested in other controllers of the same type.\n *\n */\nexport function findTarget(controller, name) {\n const tag = controller.tagName.toLowerCase();\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n return el;\n }\n }\n for (const el of controller.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n return el;\n }\n}\nexport function findTargets(controller, name) {\n const tag = controller.tagName.toLowerCase();\n const targets = [];\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n targets.push(el);\n }\n }\n for (const el of controller.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n targets.push(el);\n }\n return targets;\n}\n//# sourceMappingURL=findtarget.js.map","import { CatalystDelegate } from './core.js';\n/**\n * Controller is a decorator to be used over a class that extends HTMLElement.\n * It will automatically `register()` the component in the customElement\n * registry, as well as ensuring `bind(this)` is called on `connectedCallback`,\n * wrapping the classes `connectedCallback` method if needed.\n */\nexport function controller(classObject) {\n new CatalystDelegate(classObject);\n}\n//# sourceMappingURL=controller.js.map","const dynamicElements = new Map();\nconst ready = new Promise(resolve => {\n if (document.readyState !== 'loading') {\n resolve();\n }\n else {\n document.addEventListener('readystatechange', () => resolve(), { once: true });\n }\n});\nconst firstInteraction = new Promise(resolve => {\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => resolve());\n const listenerOptions = { once: true, passive: true, signal: controller.signal };\n const handler = () => controller.abort();\n document.addEventListener('mousedown', handler, listenerOptions);\n // eslint-disable-next-line github/require-passive-events\n document.addEventListener('touchstart', handler, listenerOptions);\n document.addEventListener('keydown', handler, listenerOptions);\n document.addEventListener('pointerdown', handler, listenerOptions);\n});\nconst visible = (tagName) => new Promise(resolve => {\n const observer = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n resolve();\n observer.disconnect();\n return;\n }\n }\n }, {\n // Currently the threshold is set to 256px from the bottom of the viewport\n // with a threshold of 0.1. This means the element will not load until about\n // 2 keyboard-down-arrow presses away from being visible in the viewport,\n // giving us some time to fetch it before the contents are made visible\n rootMargin: '0px 0px 256px 0px',\n threshold: 0.01\n });\n for (const el of document.querySelectorAll(tagName)) {\n observer.observe(el);\n }\n});\nconst strategies = {\n ready: () => ready,\n firstInteraction: () => firstInteraction,\n visible\n};\nconst timers = new WeakMap();\nfunction scan(node) {\n cancelAnimationFrame(timers.get(node) || 0);\n timers.set(node, requestAnimationFrame(() => {\n for (const tagName of dynamicElements.keys()) {\n const child = node.matches(tagName) ? node : node.querySelector(tagName);\n if (customElements.get(tagName) || child) {\n const strategyName = (child?.getAttribute('data-load-on') || 'ready');\n const strategy = strategyName in strategies ? strategies[strategyName] : strategies.ready;\n // eslint-disable-next-line github/no-then\n for (const cb of dynamicElements.get(tagName) || [])\n strategy(tagName).then(cb);\n dynamicElements.delete(tagName);\n timers.delete(node);\n }\n }\n }));\n}\nlet elementLoader;\nexport function lazyDefine(tagName, callback) {\n if (!dynamicElements.has(tagName))\n dynamicElements.set(tagName, new Set());\n dynamicElements.get(tagName).add(callback);\n scan(document.body);\n if (!elementLoader) {\n elementLoader = new MutationObserver(mutations => {\n if (!dynamicElements.size)\n return;\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element)\n scan(node);\n }\n }\n });\n elementLoader.observe(document, { subtree: true, childList: true });\n }\n}\n//# sourceMappingURL=lazy-define.js.map","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, target, targets} from '@github/catalyst'\n\n@controller\nclass NavListElement extends HTMLElement {\n @target list: HTMLElement\n @target showMoreItem: HTMLElement\n @targets focusMarkers: HTMLElement[]\n\n connectedCallback(): void {\n this.setShowMoreItemState()\n }\n\n get showMoreDisabled(): boolean {\n return this.showMoreItem.hasAttribute('aria-disabled')\n }\n\n set showMoreDisabled(value: boolean) {\n if (value) {\n this.showMoreItem.setAttribute('aria-disabled', 'true')\n } else {\n this.showMoreItem.removeAttribute('aria-disabled')\n }\n this.showMoreItem.classList.toggle('disabled', value)\n }\n\n set currentPage(value: number) {\n this.showMoreItem.setAttribute('data-current-page', value.toString())\n }\n\n get currentPage(): number {\n return parseInt(this.showMoreItem.getAttribute('data-current-page') as string) || 1\n }\n\n get totalPages(): number {\n return parseInt(this.showMoreItem.getAttribute('data-total-pages') as string) || 1\n }\n\n get paginationSrc(): string {\n return this.showMoreItem.getAttribute('src') || ''\n }\n\n // expand collapsible item onClick\n expandItem(item: HTMLElement) {\n item.nextElementSibling?.removeAttribute('data-hidden')\n item.setAttribute('aria-expanded', 'true')\n }\n\n collapseItem(item: HTMLElement) {\n item.nextElementSibling?.setAttribute('data-hidden', '')\n item.setAttribute('aria-expanded', 'false')\n }\n\n itemIsExpanded(item: HTMLElement | null) {\n if (item?.tagName === 'A') {\n return true\n }\n return item?.getAttribute('aria-expanded') === 'true'\n }\n\n // expand/collapse item\n handleItemWithSubItemClick(e: Event) {\n const el = e.target\n if (!(el instanceof HTMLElement)) return\n\n const button = el.closest<HTMLButtonElement>('button')\n if (!button) return\n if (this.itemIsExpanded(button)) {\n this.collapseItem(button)\n } else {\n this.expandItem(button)\n }\n\n e.stopPropagation()\n }\n\n private async showMore(e: Event) {\n e.preventDefault()\n if (this.showMoreDisabled) return\n this.showMoreDisabled = true\n let html\n try {\n const paginationURL = new URL(this.paginationSrc, window.location.origin)\n this.currentPage++\n paginationURL.searchParams.append('page', this.currentPage.toString())\n const response = await fetch(paginationURL)\n if (!response.ok) return\n html = await response.text()\n if (this.currentPage === this.totalPages) {\n this.showMoreItem.hidden = true\n }\n } catch (err) {\n // Ignore network errors\n this.showMoreDisabled = false\n this.currentPage--\n return\n }\n const fragment = this.parseHTML(document, html)\n fragment?.querySelector('li > a')?.setAttribute('data-targets', 'nav-list.focusMarkers')\n this.list.insertBefore(fragment, this.showMoreItem)\n this.focusMarkers.pop()?.focus()\n this.showMoreDisabled = false\n }\n\n private setShowMoreItemState() {\n if (!this.showMoreItem) {\n return\n }\n\n if (this.currentPage < this.totalPages) {\n this.showMoreItem.hidden = false\n } else {\n this.showMoreItem.hidden = true\n }\n }\n\n private parseHTML(document: Document, html: string): DocumentFragment {\n const template = document.createElement('template')\n // eslint-disable-next-line github/no-inner-html\n template.innerHTML = html\n return document.importNode(template.content, true)\n }\n}\n\ndeclare global {\n interface Window {\n NavListElement: typeof NavListElement\n }\n}\n","import {controller, targets} from '@github/catalyst'\n\n@controller\nclass SegmentedControlElement extends HTMLElement {\n @targets items: HTMLElement[]\n\n connectedCallback() {\n this.#updateButtonLabels()\n }\n\n select(event: Event) {\n const button = event.currentTarget as HTMLButtonElement\n for (const item of this.items) {\n item.classList.remove('SegmentedControl-item--selected')\n item.querySelector('[aria-current]')?.setAttribute('aria-current', 'false')\n }\n\n button.closest('li.SegmentedControl-item')?.classList.add('SegmentedControl-item--selected')\n button.setAttribute('aria-current', 'true')\n }\n\n // Updates the button labels to have a data-content attribute with the text\n // This is for selection styling to avoid the text jumping. It only needs to be\n // setup when the component is first loaded.\n #updateButtonLabels() {\n for (const label of this.querySelectorAll('.Button-label')) {\n label.setAttribute('data-content', label.textContent || '')\n }\n }\n}\n\ndeclare global {\n interface Window {\n SegmentedControlElement: typeof SegmentedControlElement\n }\n}\n\nif (!window.customElements.get('segmented-control')) {\n window.SegmentedControlElement = SegmentedControlElement\n window.customElements.define('segmented-control', SegmentedControlElement)\n}\n","export function throttle(callback, wait = 0, { start = true, middle = true, once = false } = {}) {\n let last = 0;\n let timer;\n let cancelled = false;\n function fn(...args) {\n if (cancelled)\n return;\n const delta = Date.now() - last;\n last = Date.now();\n if (start) {\n start = false;\n callback.apply(this, args);\n if (once)\n fn.cancel();\n }\n else if ((middle && delta < wait) || !middle) {\n clearTimeout(timer);\n timer = setTimeout(() => {\n last = Date.now();\n callback.apply(this, args);\n if (once)\n fn.cancel();\n }, !middle ? wait : wait - delta);\n }\n }\n fn.cancel = () => {\n clearTimeout(timer);\n cancelled = true;\n };\n return fn;\n}\nexport function debounce(callback, wait = 0, { start = false, middle = false, once = false } = {}) {\n return throttle(callback, wait, { start, middle, once });\n}\n","import {controller, target} from '@github/catalyst'\nimport {debounce} from '@github/mini-throttle/decorators'\n\n@controller\nclass ToggleSwitchElement extends HTMLElement {\n @target switch: HTMLElement\n @target loadingSpinner: HTMLElement\n @target errorIcon: HTMLElement\n\n get src(): string | null {\n const src = this.getAttribute('src')\n if (!src) return null\n\n const link = this.ownerDocument.createElement('a')\n link.href = src\n return link.href\n }\n\n get csrf(): string | null {\n const csrfElement = this.querySelector('[data-csrf]')\n return this.getAttribute('csrf') || (csrfElement instanceof HTMLInputElement && csrfElement.value) || null\n }\n\n get csrfField(): string {\n // the authenticity token is passed into the element and is not generated in js land\n\n return this.getAttribute('csrf-field') || 'authenticity_token'\n }\n\n isRemote(): boolean {\n return this.src != null\n }\n\n toggle() {\n if (this.isDisabled()) {\n return\n }\n\n if (this.isRemote()) {\n this.setLoadingState()\n this.submitForm()\n } else {\n this.performToggle()\n }\n }\n\n turnOn(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-checked', 'true')\n this.classList.add('ToggleSwitch--checked')\n }\n\n turnOff(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-checked', 'false')\n this.classList.remove('ToggleSwitch--checked')\n }\n\n isOn(): boolean {\n return this.switch.getAttribute('aria-checked') === 'true'\n }\n\n isOff(): boolean {\n return !this.isOn()\n }\n\n isDisabled(): boolean {\n return this.switch.getAttribute('aria-disabled') === 'true'\n }\n\n disable(): void {\n this.switch.setAttribute('aria-disabled', 'true')\n }\n\n enable(): void {\n this.switch.setAttribute('aria-disabled', 'false')\n }\n\n private performToggle(): void {\n if (this.isOn()) {\n this.turnOff()\n } else {\n this.turnOn()\n }\n }\n\n private setLoadingState(): void {\n this.disable()\n this.errorIcon.setAttribute('hidden', 'hidden')\n this.loadingSpinner.removeAttribute('hidden')\n }\n\n private setSuccessState(): void {\n const event = new CustomEvent('toggleSwitchSuccess', {bubbles: true})\n this.dispatchEvent(event)\n\n this.setFinishedState(false)\n }\n\n private setErrorState(message: string): void {\n const event = new CustomEvent('toggleSwitchError', {bubbles: true, detail: message})\n this.dispatchEvent(event)\n\n this.setFinishedState(true)\n }\n\n private setFinishedState(error: boolean): void {\n if (error) {\n this.errorIcon.removeAttribute('hidden')\n }\n\n this.loadingSpinner.setAttribute('hidden', 'hidden')\n this.enable()\n }\n\n @debounce(300)\n private async submitForm() {\n const body = new FormData()\n\n if (this.csrf) {\n body.append(this.csrfField, this.csrf)\n }\n\n body.append('value', this.isOn() ? '0' : '1')\n\n try {\n if (!this.src) throw new Error('invalid src')\n\n let response\n\n try {\n response = await fetch(this.src, {\n credentials: 'same-origin',\n method: 'POST',\n headers: {\n 'Requested-With': 'XMLHttpRequest'\n },\n body\n })\n } catch (error) {\n throw new Error('A network error occurred, please try again.')\n }\n\n if (response.ok) {\n this.setSuccessState()\n this.performToggle()\n } else {\n throw new Error(await response.text())\n }\n } catch (error) {\n if (error instanceof Error) {\n this.setErrorState(error.message || 'An error occurred, please try again.')\n }\n }\n }\n}\n\ndeclare global {\n interface Window {\n ToggleSwitchElement: typeof ToggleSwitchElement\n }\n}\n\nif (!window.customElements.get('toggle-switch')) {\n window.ToggleSwitchElement = ToggleSwitchElement\n window.customElements.define('toggle-switch', ToggleSwitchElement)\n}\n","import { debounce as db, throttle as th } from './index';\nexport function throttle(wait = 0, opts = {}) {\n return (proto, name, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new Error('debounce can only decorate functions');\n }\n const fn = descriptor.value;\n descriptor.value = th(fn, wait, opts);\n Object.defineProperty(proto, name, descriptor);\n };\n}\nexport function debounce(wait = 0, opts = {}) {\n return (proto, name, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new Error('debounce can only decorate functions');\n }\n const fn = descriptor.value;\n descriptor.value = db(fn, wait, opts);\n Object.defineProperty(proto, name, descriptor);\n };\n}\n","import type {AnchorAlignment, AnchorSide} from '@primer/behaviors'\nimport {getAnchoredPosition} from '@primer/behaviors'\n\nconst TOOLTIP_OPEN_CLASS = 'tooltip-open'\nconst TOOLTIP_ARROW_EDGE_OFFSET = 6\nconst TOOLTIP_SR_ONLY_CLASS = 'sr-only'\n\ntype Direction = 'n' | 's' | 'e' | 'w' | 'ne' | 'se' | 'nw' | 'sw'\n\nconst DIRECTION_CLASSES = [\n 'tooltip-n',\n 'tooltip-s',\n 'tooltip-e',\n 'tooltip-w',\n 'tooltip-ne',\n 'tooltip-se',\n 'tooltip-nw',\n 'tooltip-sw'\n]\n\nclass ToolTipElement extends HTMLElement {\n styles() {\n return `\n :host {\n position: absolute;\n z-index: 1000000;\n padding: .5em .75em;\n font: normal normal 11px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n -webkit-font-smoothing: subpixel-antialiased;\n color: var(--color-fg-on-emphasis);\n text-align: center;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: break-word;\n white-space: pre;\n background: var(--color-neutral-emphasis-plus);\n border-radius: 6px;\n opacity: 0;\n max-width: 250px;\n word-wrap: break-word;\n white-space: normal;\n width: max-content;\n }\n :host:before{\n position: absolute;\n z-index: 1000001;\n color: var(--color-neutral-emphasis-plus);\n content: \"\";\n border: 6px solid transparent;\n opacity: 0\n }\n @keyframes tooltip-appear {\n from {\n opacity: 0\n }\n to {\n opacity: 1\n }\n }\n :host:after{\n position: absolute;\n display: block;\n right: 0;\n left: 0;\n height: 12px;\n content: \"\"\n }\n :host(.${TOOLTIP_OPEN_CLASS}),\n :host(.${TOOLTIP_OPEN_CLASS}):before {\n animation-name: tooltip-appear;\n animation-duration: .1s;\n animation-fill-mode: forwards;\n animation-timing-function: ease-in;\n animation-delay: .4s\n }\n :host(.tooltip-s):before,\n :host(.tooltip-n):before {\n right: 50%;\n margin-right: -${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n :host(.tooltip-s):before,\n :host(.tooltip-se):before,\n :host(.tooltip-sw):before {\n bottom: 100%;\n border-bottom-color: var(--color-neutral-emphasis-plus)\n }\n :host(.tooltip-s):after,\n :host(.tooltip-se):after,\n :host(.tooltip-sw):after {\n bottom: 100%\n }\n :host(.tooltip-n):before,\n :host(.tooltip-ne):before,\n :host(.tooltip-nw):before {\n top: 100%;\n border-top-color: var(--color-neutral-emphasis-plus)\n }\n :host(.tooltip-n):after,\n :host(.tooltip-ne):after,\n :host(.tooltip-nw):after {\n top: 100%\n }\n :host(.tooltip-se):before,\n :host(.tooltip-ne):before {\n left: 0;\n margin-left: ${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n :host(.tooltip-sw):before,\n :host(.tooltip-nw):before {\n right: 0;\n margin-right: ${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n :host(.tooltip-w):before {\n top: 50%;\n bottom: 50%;\n left: 100%;\n margin-top: -6px;\n border-left-color: var(--color-neutral-emphasis-plus)\n }\n :host(.tooltip-e):before {\n top: 50%;\n right: 100%;\n bottom: 50%;\n margin-top: -6px;\n border-right-color: var(--color-neutral-emphasis-plus)\n }\n `\n }\n\n #abortController: AbortController | undefined\n #align: AnchorAlignment = 'center'\n #side: AnchorSide = 'outside-bottom'\n #allowUpdatePosition = false\n\n get htmlFor(): string {\n return this.getAttribute('for') || ''\n }\n\n set htmlFor(value: string) {\n this.setAttribute('for', value)\n }\n\n get type(): 'description' | 'label' {\n const type = this.getAttribute('data-type')\n return type === 'label' ? 'label' : 'description'\n }\n\n set type(value: 'description' | 'label') {\n this.setAttribute('data-type', value)\n }\n\n get direction(): Direction {\n return (this.getAttribute('data-direction') || 's') as Direction\n }\n\n set direction(value: Direction) {\n this.setAttribute('data-direction', value)\n }\n\n get control(): HTMLElement | null {\n return this.ownerDocument.getElementById(this.htmlFor)\n }\n\n set hiddenFromView(value: true | false) {\n this.classList.toggle(TOOLTIP_SR_ONLY_CLASS, value)\n if (this.isConnected) this.#update()\n }\n\n get hiddenFromView() {\n return this.classList.contains(TOOLTIP_SR_ONLY_CLASS)\n }\n\n connectedCallback() {\n this.#updateControlReference()\n this.#updateDirection()\n if (!this.shadowRoot) {\n const shadow = this.attachShadow({mode: 'open'})\n const style = shadow.appendChild(document.createElement('style'))\n style.textContent = this.styles()\n shadow.appendChild(document.createElement('slot'))\n }\n this.hiddenFromView = true\n this.#allowUpdatePosition = true\n\n if (!this.control) return\n\n this.setAttribute('role', 'tooltip')\n\n this.#abortController?.abort()\n this.#abortController = new AbortController()\n const {signal} = this.#abortController\n\n this.addEventListener('mouseleave', this, {signal})\n this.control.addEventListener('mouseenter', this, {signal})\n this.control.addEventListener('mouseleave', this, {signal})\n this.control.addEventListener('focus', this, {signal})\n this.control.addEventListener('blur', this, {signal})\n this.ownerDocument.addEventListener('keydown', this, {signal})\n this.#update()\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n handleEvent(event: Event) {\n if (!this.control) return\n\n // Ensures that tooltip stays open when hovering between tooltip and element\n // WCAG Success Criterion 1.4.13 Hoverable\n if ((event.type === 'mouseenter' || event.type === 'focus') && this.hiddenFromView) {\n this.hiddenFromView = false\n } else if (event.type === 'blur') {\n this.hiddenFromView = true\n } else if (\n event.type === 'mouseleave' &&\n (event as MouseEvent).relatedTarget !== this.control &&\n (event as MouseEvent).relatedTarget !== this\n ) {\n this.hiddenFromView = true\n } else if (event.type === 'keydown' && (event as KeyboardEvent).key === 'Escape' && !this.hiddenFromView) {\n this.hiddenFromView = true\n }\n }\n\n static observedAttributes = ['data-type', 'data-direction', 'id']\n\n #update() {\n if (this.hiddenFromView) {\n this.classList.remove(TOOLTIP_OPEN_CLASS, ...DIRECTION_CLASSES)\n } else {\n this.classList.add(TOOLTIP_OPEN_CLASS)\n for (const tooltip of this.ownerDocument.querySelectorAll<ToolTipElement>(this.tagName)) {\n if (tooltip !== this) tooltip.hiddenFromView = true\n }\n this.#updatePosition()\n }\n }\n\n attributeChangedCallback(name: string) {\n if (!this.isConnected) return\n\n if (name === 'id' || name === 'data-type') {\n this.#updateControlReference()\n } else if (name === 'data-direction') {\n this.#updateDirection()\n }\n }\n\n #updateControlReference() {\n if (!this.id || !this.control) return\n if (this.type === 'label') {\n let labelledBy = this.control.getAttribute('aria-labelledby')\n if (labelledBy) {\n if (!labelledBy.split(' ').includes(this.id)) {\n labelledBy = `${labelledBy} ${this.id}`\n } else {\n labelledBy = `${labelledBy}`\n }\n } else {\n labelledBy = this.id\n }\n this.control.setAttribute('aria-labelledby', labelledBy)\n\n // Prevent duplicate accessible name announcements.\n this.setAttribute('aria-hidden', 'true')\n } else {\n let describedBy = this.control.getAttribute('aria-describedby')\n if (describedBy) {\n if (!describedBy.split(' ').includes(this.id)) {\n describedBy = `${describedBy} ${this.id}`\n } else {\n describedBy = `${describedBy}`\n }\n } else {\n describedBy = this.id\n }\n this.control.setAttribute('aria-describedby', describedBy)\n }\n }\n\n #updateDirection() {\n this.classList.remove(...DIRECTION_CLASSES)\n const direction = this.direction\n if (direction === 'n') {\n this.#align = 'center'\n this.#side = 'outside-top'\n } else if (direction === 'ne') {\n this.#align = 'start'\n this.#side = 'outside-top'\n } else if (direction === 'e') {\n this.#align = 'center'\n this.#side = 'outside-right'\n } else if (direction === 'se') {\n this.#align = 'start'\n this.#side = 'outside-bottom'\n } else if (direction === 's') {\n this.#align = 'center'\n this.#side = 'outside-bottom'\n } else if (direction === 'sw') {\n this.#align = 'end'\n this.#side = 'outside-bottom'\n } else if (direction === 'w') {\n this.#align = 'center'\n this.#side = 'outside-left'\n } else if (direction === 'nw') {\n this.#align = 'end'\n this.#side = 'outside-top'\n }\n }\n\n #updatePosition() {\n if (!this.control) return\n if (!this.#allowUpdatePosition || this.hiddenFromView) return\n\n const TOOLTIP_OFFSET = 10\n\n this.style.left = `0px` // Ensures we have reliable tooltip width in `getAnchoredPosition`\n\n const position = getAnchoredPosition(this, this.control, {\n side: this.#side,\n align: this.#align,\n anchorOffset: TOOLTIP_OFFSET\n })\n const anchorSide = position.anchorSide\n const align = position.anchorAlign\n\n this.style.top = `${position.top}px`\n this.style.left = `${position.left}px`\n\n let direction: Direction = 's'\n\n if (anchorSide === 'outside-left') {\n direction = 'w'\n } else if (anchorSide === 'outside-right') {\n direction = 'e'\n } else if (anchorSide === 'outside-top') {\n if (align === 'center') {\n direction = 'n'\n } else if (align === 'start') {\n direction = 'ne'\n } else {\n direction = 'nw'\n }\n } else {\n if (align === 'center') {\n direction = 's'\n } else if (align === 'start') {\n direction = 'se'\n } else {\n direction = 'sw'\n }\n }\n\n this.classList.add(`tooltip-${direction}`)\n }\n}\n\nif (!window.customElements.get('tool-tip')) {\n window.ToolTipElement = ToolTipElement\n window.customElements.define('tool-tip', ToolTipElement)\n}\n\ndeclare global {\n interface Window {\n ToolTipElement: typeof ToolTipElement\n }\n}\n","import {controller, target} from '@github/catalyst'\n\n@controller\nclass XBannerElement extends HTMLElement {\n @target titleText: HTMLElement\n\n dismiss() {\n if (this.shouldReappear()) {\n this.style.setProperty('visibility', 'hidden')\n\n setTimeout(() => {\n this.style.setProperty('visibility', 'visible')\n }, 2000)\n\n return\n }\n\n const parentElement = this.parentElement\n if (!parentElement) return\n\n parentElement.removeChild(this)\n }\n\n private shouldReappear(): boolean {\n return this.getAttribute('data-reappear') === 'true'\n }\n}\n\ndeclare global {\n interface Window {\n XBannerElement: typeof XBannerElement\n }\n}\n\nif (!window.customElements.get('x-banner')) {\n window.XBannerElement = XBannerElement\n window.customElements.define('x-banner', XBannerElement)\n}\n","export default class Combobox {\n constructor(input, list, { tabInsertsSuggestions, defaultFirstOption } = {}) {\n this.input = input;\n this.list = list;\n this.tabInsertsSuggestions = tabInsertsSuggestions !== null && tabInsertsSuggestions !== void 0 ? tabInsertsSuggestions : true;\n this.defaultFirstOption = defaultFirstOption !== null && defaultFirstOption !== void 0 ? defaultFirstOption : false;\n this.isComposing = false;\n if (!list.id) {\n list.id = `combobox-${Math.random().toString().slice(2, 6)}`;\n }\n this.ctrlBindings = !!navigator.userAgent.match(/Macintosh/);\n this.keyboardEventHandler = event => keyboardBindings(event, this);\n this.compositionEventHandler = event => trackComposition(event, this);\n this.inputHandler = this.clearSelection.bind(this);\n input.setAttribute('role', 'combobox');\n input.setAttribute('aria-controls', list.id);\n input.setAttribute('aria-expanded', 'false');\n input.setAttribute('aria-autocomplete', 'list');\n input.setAttribute('aria-haspopup', 'listbox');\n }\n destroy() {\n this.clearSelection();\n this.stop();\n this.input.removeAttribute('role');\n this.input.removeAttribute('aria-controls');\n this.input.removeAttribute('aria-expanded');\n this.input.removeAttribute('aria-autocomplete');\n this.input.removeAttribute('aria-haspopup');\n }\n start() {\n this.input.setAttribute('aria-expanded', 'true');\n this.input.addEventListener('compositionstart', this.compositionEventHandler);\n this.input.addEventListener('compositionend', this.compositionEventHandler);\n this.input.addEventListener('input', this.inputHandler);\n this.input.addEventListener('keydown', this.keyboardEventHandler);\n this.list.addEventListener('click', commitWithElement);\n this.indicateDefaultOption();\n }\n stop() {\n this.clearSelection();\n this.input.setAttribute('aria-expanded', 'false');\n this.input.removeEventListener('compositionstart', this.compositionEventHandler);\n this.input.removeEventListener('compositionend', this.compositionEventHandler);\n this.input.removeEventListener('input', this.inputHandler);\n this.input.removeEventListener('keydown', this.keyboardEventHandler);\n this.list.removeEventListener('click', commitWithElement);\n }\n indicateDefaultOption() {\n var _a;\n if (this.defaultFirstOption) {\n (_a = Array.from(this.list.querySelectorAll('[role=\"option\"]:not([aria-disabled=\"true\"])'))\n .filter(visible)[0]) === null || _a === void 0 ? void 0 : _a.setAttribute('data-combobox-option-default', 'true');\n }\n }\n navigate(indexDiff = 1) {\n const focusEl = Array.from(this.list.querySelectorAll('[aria-selected=\"true\"]')).filter(visible)[0];\n const els = Array.from(this.list.querySelectorAll('[role=\"option\"]')).filter(visible);\n const focusIndex = els.indexOf(focusEl);\n if ((focusIndex === els.length - 1 && indexDiff === 1) || (focusIndex === 0 && indexDiff === -1)) {\n this.clearSelection();\n this.input.focus();\n return;\n }\n let indexOfItem = indexDiff === 1 ? 0 : els.length - 1;\n if (focusEl && focusIndex >= 0) {\n const newIndex = focusIndex + indexDiff;\n if (newIndex >= 0 && newIndex < els.length)\n indexOfItem = newIndex;\n }\n const target = els[indexOfItem];\n if (!target)\n return;\n for (const el of els) {\n el.removeAttribute('data-combobox-option-default');\n if (target === el) {\n this.input.setAttribute('aria-activedescendant', target.id);\n target.setAttribute('aria-selected', 'true');\n scrollTo(this.list, target);\n }\n else {\n el.removeAttribute('aria-selected');\n }\n }\n }\n clearSelection() {\n this.input.removeAttribute('aria-activedescendant');\n for (const el of this.list.querySelectorAll('[aria-selected=\"true\"]')) {\n el.removeAttribute('aria-selected');\n }\n this.indicateDefaultOption();\n }\n}\nfunction keyboardBindings(event, combobox) {\n if (event.shiftKey || event.metaKey || event.altKey)\n return;\n if (!combobox.ctrlBindings && event.ctrlKey)\n return;\n if (combobox.isComposing)\n return;\n switch (event.key) {\n case 'Enter':\n if (commit(combobox.input, combobox.list)) {\n event.preventDefault();\n }\n break;\n case 'Tab':\n if (combobox.tabInsertsSuggestions && commit(combobox.input, combobox.list)) {\n event.preventDefault();\n }\n break;\n case 'Escape':\n combobox.clearSelection();\n break;\n case 'ArrowDown':\n combobox.navigate(1);\n event.preventDefault();\n break;\n case 'ArrowUp':\n combobox.navigate(-1);\n event.preventDefault();\n break;\n case 'n':\n if (combobox.ctrlBindings && event.ctrlKey) {\n combobox.navigate(1);\n event.preventDefault();\n }\n break;\n case 'p':\n if (combobox.ctrlBindings && event.ctrlKey) {\n combobox.navigate(-1);\n event.preventDefault();\n }\n break;\n default:\n if (event.ctrlKey)\n break;\n combobox.clearSelection();\n }\n}\nfunction commitWithElement(event) {\n if (!(event.target instanceof Element))\n return;\n const target = event.target.closest('[role=\"option\"]');\n if (!target)\n return;\n if (target.getAttribute('aria-disabled') === 'true')\n return;\n fireCommitEvent(target);\n}\nfunction commit(input, list) {\n const target = list.querySelector('[aria-selected=\"true\"], [data-combobox-option-default=\"true\"]');\n if (!target)\n return false;\n if (target.getAttribute('aria-disabled') === 'true')\n return true;\n target.click();\n return true;\n}\nfunction fireCommitEvent(target) {\n target.dispatchEvent(new CustomEvent('combobox-commit', { bubbles: true }));\n}\nfunction visible(el) {\n return (!el.hidden &&\n !(el instanceof HTMLInputElement && el.type === 'hidden') &&\n (el.offsetWidth > 0 || el.offsetHeight > 0));\n}\nfunction trackComposition(event, combobox) {\n combobox.isComposing = event.type === 'compositionstart';\n const list = document.getElementById(combobox.input.getAttribute('aria-controls') || '');\n if (!list)\n return;\n combobox.clearSelection();\n}\nfunction scrollTo(container, target) {\n if (!inViewport(container, target)) {\n container.scrollTop = target.offsetTop;\n }\n}\nfunction inViewport(container, element) {\n const scrollTop = container.scrollTop;\n const containerBottom = scrollTop + container.clientHeight;\n const top = element.offsetTop;\n const bottom = top + element.clientHeight;\n return top >= scrollTop && bottom <= containerBottom;\n}\n","import Combobox from '@github/combobox-nav';\n\nfunction debounce(callback, wait = 0) {\n let timeout;\n return function (...Rest) {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => {\n clearTimeout(timeout);\n callback(...Rest);\n }, wait);\n };\n}\n\nconst SCREEN_READER_DELAY = window.testScreenReaderDelay || 100;\nclass Autocomplete {\n constructor(container, input, results, autoselectEnabled = false) {\n var _a;\n this.container = container;\n this.input = input;\n this.results = results;\n this.combobox = new Combobox(input, results);\n this.feedback = document.getElementById(`${this.results.id}-feedback`);\n this.autoselectEnabled = autoselectEnabled;\n this.clearButton = document.getElementById(`${this.input.id || this.input.name}-clear`);\n this.clientOptions = results.querySelectorAll('[role=option]');\n if (this.feedback) {\n this.feedback.setAttribute('aria-live', 'polite');\n this.feedback.setAttribute('aria-atomic', 'true');\n }\n if (this.clearButton && !this.clearButton.getAttribute('aria-label')) {\n const labelElem = document.querySelector(`label[for=\"${this.input.name}\"]`);\n this.clearButton.setAttribute('aria-label', `clear:`);\n this.clearButton.setAttribute('aria-labelledby', `${this.clearButton.id} ${(labelElem === null || labelElem === void 0 ? void 0 : labelElem.id) || ''}`);\n }\n if (!this.input.getAttribute('aria-expanded')) {\n this.input.setAttribute('aria-expanded', 'false');\n }\n this.results.hidden = true;\n this.results.setAttribute('aria-label', 'results');\n this.input.setAttribute('autocomplete', 'off');\n this.input.setAttribute('spellcheck', 'false');\n this.interactingWithList = false;\n this.onInputChange = debounce(this.onInputChange.bind(this), 300);\n this.onResultsMouseDown = this.onResultsMouseDown.bind(this);\n this.onInputBlur = this.onInputBlur.bind(this);\n this.onInputFocus = this.onInputFocus.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n this.onCommit = this.onCommit.bind(this);\n this.handleClear = this.handleClear.bind(this);\n this.input.addEventListener('keydown', this.onKeydown);\n this.input.addEventListener('focus', this.onInputFocus);\n this.input.addEventListener('blur', this.onInputBlur);\n this.input.addEventListener('input', this.onInputChange);\n this.results.addEventListener('mousedown', this.onResultsMouseDown);\n this.results.addEventListener('combobox-commit', this.onCommit);\n (_a = this.clearButton) === null || _a === void 0 ? void 0 : _a.addEventListener('click', this.handleClear);\n }\n destroy() {\n this.input.removeEventListener('keydown', this.onKeydown);\n this.input.removeEventListener('focus', this.onInputFocus);\n this.input.removeEventListener('blur', this.onInputBlur);\n this.input.removeEventListener('input', this.onInputChange);\n this.results.removeEventListener('mousedown', this.onResultsMouseDown);\n this.results.removeEventListener('combobox-commit', this.onCommit);\n }\n handleClear(event) {\n event.preventDefault();\n if (this.input.getAttribute('aria-expanded') === 'true') {\n this.input.setAttribute('aria-expanded', 'false');\n this.updateFeedbackForScreenReaders('Results hidden.');\n }\n this.input.value = '';\n this.container.value = '';\n this.input.focus();\n this.input.dispatchEvent(new Event('change'));\n this.container.open = false;\n }\n onKeydown(event) {\n if (event.key === 'Enter' && this.container.open && this.autoselectEnabled) {\n const firstOption = this.results.children[0];\n if (firstOption) {\n event.stopPropagation();\n event.preventDefault();\n this.onCommit({ target: firstOption });\n }\n }\n if (event.key === 'Escape' && this.container.open) {\n this.container.open = false;\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowUp' && this.container.open) {\n this.container.open = false;\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowDown' && !this.container.open) {\n if (!this.input.value.trim())\n return;\n this.container.open = true;\n event.stopPropagation();\n event.preventDefault();\n }\n }\n onInputFocus() {\n this.fetchResults();\n }\n onInputBlur() {\n if (this.interactingWithList) {\n this.interactingWithList = false;\n return;\n }\n this.container.open = false;\n }\n onCommit({ target }) {\n const selected = target;\n if (!(selected instanceof HTMLElement))\n return;\n this.container.open = false;\n if (selected instanceof HTMLAnchorElement)\n return;\n const value = selected.getAttribute('data-autocomplete-value') || selected.textContent;\n this.updateFeedbackForScreenReaders(`${selected.textContent || ''} selected.`);\n this.container.value = value;\n if (!value) {\n this.updateFeedbackForScreenReaders(`Results hidden.`);\n }\n }\n onResultsMouseDown() {\n this.interactingWithList = true;\n }\n onInputChange() {\n if (this.feedback && this.feedback.textContent) {\n this.feedback.textContent = '';\n }\n this.container.removeAttribute('value');\n this.fetchResults();\n }\n identifyOptions() {\n let id = 0;\n for (const el of this.results.querySelectorAll('[role=\"option\"]:not([id])')) {\n el.id = `${this.results.id}-option-${id++}`;\n }\n }\n updateFeedbackForScreenReaders(inputString) {\n setTimeout(() => {\n if (this.feedback) {\n this.feedback.textContent = inputString;\n }\n }, SCREEN_READER_DELAY);\n }\n fetchResults() {\n const query = this.input.value.trim();\n if (!query) {\n this.container.open = false;\n return;\n }\n const src = this.container.src;\n if (!src)\n return;\n const url = new URL(src, window.location.href);\n const params = new URLSearchParams(url.search.slice(1));\n params.append('q', query);\n url.search = params.toString();\n this.container.dispatchEvent(new CustomEvent('loadstart'));\n this.container\n .fetchResult(this.input, url.toString())\n .then(html => {\n this.results.innerHTML = html;\n this.identifyOptions();\n const allNewOptions = this.results.querySelectorAll('[role=\"option\"]');\n const hasResults = !!allNewOptions.length;\n const numOptions = allNewOptions.length;\n const [firstOption] = allNewOptions;\n const firstOptionValue = firstOption === null || firstOption === void 0 ? void 0 : firstOption.textContent;\n if (this.autoselectEnabled && firstOptionValue) {\n this.updateFeedbackForScreenReaders(`${numOptions} results. ${firstOptionValue} is the top result: Press Enter to activate.`);\n }\n else {\n this.updateFeedbackForScreenReaders(`${numOptions || 'No'} results.`);\n }\n this.container.open = hasResults;\n this.container.dispatchEvent(new CustomEvent('load'));\n this.container.dispatchEvent(new CustomEvent('loadend'));\n })\n .catch(() => {\n this.container.dispatchEvent(new CustomEvent('error'));\n this.container.dispatchEvent(new CustomEvent('loadend'));\n });\n }\n open() {\n if (!this.results.hidden)\n return;\n this.combobox.start();\n this.results.hidden = false;\n }\n close() {\n if (this.results.hidden)\n return;\n this.combobox.stop();\n this.results.hidden = true;\n }\n}\n\nclass AutocompleteEvent extends CustomEvent {\n constructor(type, init) {\n super(type, init);\n this.relatedTarget = init.relatedTarget;\n }\n}\n\nconst requests = new WeakMap();\nfunction fragment(el, url) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.setRequestHeader('Accept', 'text/fragment+html');\n return request(el, xhr);\n}\nfunction request(el, xhr) {\n const pending = requests.get(el);\n if (pending)\n pending.abort();\n requests.set(el, xhr);\n const clear = () => requests.delete(el);\n const result = send(xhr);\n result.then(clear, clear);\n return result;\n}\nfunction send(xhr) {\n return new Promise((resolve, reject) => {\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText);\n }\n else {\n reject(new Error(xhr.responseText));\n }\n };\n xhr.onerror = reject;\n xhr.send();\n });\n}\n\nconst state = new WeakMap();\nclass AutocompleteElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this.fetchResult = fragment;\n }\n connectedCallback() {\n const listId = this.getAttribute('for');\n if (!listId)\n return;\n const input = this.querySelector('input');\n const results = document.getElementById(listId);\n if (!(input instanceof HTMLInputElement) || !results)\n return;\n const autoselectEnabled = this.getAttribute('data-autoselect') === 'true';\n state.set(this, new Autocomplete(this, input, results, autoselectEnabled));\n results.setAttribute('role', 'listbox');\n }\n disconnectedCallback() {\n const autocomplete = state.get(this);\n if (autocomplete) {\n autocomplete.destroy();\n state.delete(this);\n }\n }\n get src() {\n return this.getAttribute('src') || '';\n }\n set src(url) {\n this.setAttribute('src', url);\n }\n get value() {\n return this.getAttribute('value') || '';\n }\n set value(value) {\n this.setAttribute('value', value);\n }\n get open() {\n return this.hasAttribute('open');\n }\n set open(value) {\n if (value) {\n this.setAttribute('open', '');\n }\n else {\n this.removeAttribute('open');\n }\n }\n static get observedAttributes() {\n return ['open', 'value'];\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue)\n return;\n const autocomplete = state.get(this);\n if (!autocomplete)\n return;\n switch (name) {\n case 'open':\n newValue === null ? autocomplete.close() : autocomplete.open();\n break;\n case 'value':\n if (newValue !== null) {\n autocomplete.input.value = newValue;\n }\n this.dispatchEvent(new AutocompleteEvent('auto-complete-change', {\n bubbles: true,\n relatedTarget: autocomplete.input\n }));\n break;\n }\n }\n}\nif (!window.customElements.get('auto-complete')) {\n window.AutocompleteElement = AutocompleteElement;\n window.customElements.define('auto-complete', AutocompleteElement);\n}\n\nexport { AutocompleteEvent, AutocompleteElement as default };\n","function createNode(text) {\n const node = document.createElement('pre');\n node.style.width = '1px';\n node.style.height = '1px';\n node.style.position = 'fixed';\n node.style.top = '5px';\n node.textContent = text;\n return node;\n}\n\nfunction copyNode(node) {\n if ('clipboard' in navigator) {\n // eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe Clipboard is not defined in Flow yet.\n return navigator.clipboard.writeText(node.textContent);\n }\n\n const selection = getSelection();\n\n if (selection == null) {\n return Promise.reject(new Error());\n }\n\n selection.removeAllRanges();\n const range = document.createRange();\n range.selectNodeContents(node);\n selection.addRange(range);\n document.execCommand('copy');\n selection.removeAllRanges();\n return Promise.resolve();\n}\nfunction copyText(text) {\n if ('clipboard' in navigator) {\n // eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe Clipboard is not defined in Flow yet.\n return navigator.clipboard.writeText(text);\n }\n\n const body = document.body;\n\n if (!body) {\n return Promise.reject(new Error());\n }\n\n const node = createNode(text);\n body.appendChild(node);\n copyNode(node);\n body.removeChild(node);\n return Promise.resolve();\n}\n\nfunction copy(button) {\n const id = button.getAttribute('for');\n const text = button.getAttribute('value');\n\n function trigger() {\n button.dispatchEvent(new CustomEvent('clipboard-copy', {\n bubbles: true\n }));\n }\n\n if (text) {\n copyText(text).then(trigger);\n } else if (id) {\n const root = 'getRootNode' in Element.prototype ? button.getRootNode() : button.ownerDocument;\n if (!(root instanceof Document || 'ShadowRoot' in window && root instanceof ShadowRoot)) return;\n const node = root.getElementById(id);\n if (node) copyTarget(node).then(trigger);\n }\n}\n\nfunction copyTarget(content) {\n if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {\n return copyText(content.value);\n } else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {\n return copyText(content.href);\n } else {\n return copyNode(content);\n }\n}\n\nfunction clicked(event) {\n const button = event.currentTarget;\n\n if (button instanceof HTMLElement) {\n copy(button);\n }\n}\n\nfunction keydown(event) {\n if (event.key === ' ' || event.key === 'Enter') {\n const button = event.currentTarget;\n\n if (button instanceof HTMLElement) {\n event.preventDefault();\n copy(button);\n }\n }\n}\n\nfunction focused(event) {\n event.currentTarget.addEventListener('keydown', keydown);\n}\n\nfunction blurred(event) {\n event.currentTarget.removeEventListener('keydown', keydown);\n}\n\nclass ClipboardCopyElement extends HTMLElement {\n constructor() {\n super();\n this.addEventListener('click', clicked);\n this.addEventListener('focus', focused);\n this.addEventListener('blur', blurred);\n }\n\n connectedCallback() {\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0');\n }\n\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button');\n }\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(text) {\n this.setAttribute('value', text);\n }\n\n}\n\nif (!window.customElements.get('clipboard-copy')) {\n window.ClipboardCopyElement = ClipboardCopyElement;\n window.customElements.define('clipboard-copy', ClipboardCopyElement);\n}\n\nexport default ClipboardCopyElement;\n","import '@github/clipboard-copy-element'\n\nconst CLIPBOARD_COPY_TIMER_DURATION = 2000\n\nfunction showSVG(svg: SVGElement) {\n svg.style.display = 'inline-block'\n}\n\nfunction hideSVG(svg: SVGElement) {\n svg.style.display = 'none'\n}\n\n// Toggle a copy button.\nfunction showCopy(button: HTMLElement) {\n const [copyIcon, checkIcon] = button.querySelectorAll<SVGElement>('.octicon')\n\n if (!copyIcon || !checkIcon) return\n\n showSVG(copyIcon)\n hideSVG(checkIcon)\n}\n\n// Toggle a copy button.\nfunction showCheck(button: HTMLElement) {\n const [copyIcon, checkIcon] = button.querySelectorAll<SVGElement>('.octicon')\n\n if (!copyIcon || !checkIcon) return\n\n hideSVG(copyIcon)\n showSVG(checkIcon)\n}\n\nconst clipboardCopyElementTimers = new WeakMap<HTMLElement, number>()\n\ndocument.addEventListener('clipboard-copy', ({target}) => {\n if (!(target instanceof HTMLElement)) return\n if (!target.hasAttribute('data-view-component')) return\n\n const currentTimeout = clipboardCopyElementTimers.get(target)\n\n if (currentTimeout) {\n clearTimeout(currentTimeout)\n clipboardCopyElementTimers.delete(target)\n } else {\n showCheck(target)\n }\n\n clipboardCopyElementTimers.set(\n target,\n setTimeout(() => {\n showCopy(target)\n clipboardCopyElementTimers.delete(target)\n }, CLIPBOARD_COPY_TIMER_DURATION)\n )\n})\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _DurationFormat_options;\nclass ListFormatPonyFill {\n formatToParts(members) {\n const parts = [];\n for (const value of members) {\n parts.push({ type: 'element', value });\n parts.push({ type: 'literal', value: ', ' });\n }\n return parts.slice(0, -1);\n }\n}\nconst ListFormat = (typeof Intl !== 'undefined' && Intl.ListFormat) || ListFormatPonyFill;\nconst partsTable = [\n ['years', 'year'],\n ['months', 'month'],\n ['weeks', 'week'],\n ['days', 'day'],\n ['hours', 'hour'],\n ['minutes', 'minute'],\n ['seconds', 'second'],\n ['milliseconds', 'millisecond'],\n];\nconst twoDigitFormatOptions = { minimumIntegerDigits: 2 };\nexport default class DurationFormat {\n constructor(locale, options = {}) {\n _DurationFormat_options.set(this, void 0);\n let style = String(options.style || 'short');\n if (style !== 'long' && style !== 'short' && style !== 'narrow' && style !== 'digital')\n style = 'short';\n let prevStyle = style === 'digital' ? 'numeric' : style;\n const hours = options.hours || prevStyle;\n prevStyle = hours === '2-digit' ? 'numeric' : hours;\n const minutes = options.minutes || prevStyle;\n prevStyle = minutes === '2-digit' ? 'numeric' : minutes;\n const seconds = options.seconds || prevStyle;\n prevStyle = seconds === '2-digit' ? 'numeric' : seconds;\n const milliseconds = options.milliseconds || prevStyle;\n __classPrivateFieldSet(this, _DurationFormat_options, {\n locale,\n style,\n years: options.years || style === 'digital' ? 'short' : style,\n yearsDisplay: options.yearsDisplay === 'always' ? 'always' : 'auto',\n months: options.months || style === 'digital' ? 'short' : style,\n monthsDisplay: options.monthsDisplay === 'always' ? 'always' : 'auto',\n weeks: options.weeks || style === 'digital' ? 'short' : style,\n weeksDisplay: options.weeksDisplay === 'always' ? 'always' : 'auto',\n days: options.days || style === 'digital' ? 'short' : style,\n daysDisplay: options.daysDisplay === 'always' ? 'always' : 'auto',\n hours,\n hoursDisplay: options.hoursDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n minutes,\n minutesDisplay: options.minutesDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n seconds,\n secondsDisplay: options.secondsDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n milliseconds,\n millisecondsDisplay: options.millisecondsDisplay === 'always' ? 'always' : 'auto',\n }, \"f\");\n }\n resolvedOptions() {\n return __classPrivateFieldGet(this, _DurationFormat_options, \"f\");\n }\n formatToParts(duration) {\n const list = [];\n const options = __classPrivateFieldGet(this, _DurationFormat_options, \"f\");\n const style = options.style;\n const locale = options.locale;\n for (const [unit, nfUnit] of partsTable) {\n const value = duration[unit];\n if (options[`${unit}Display`] === 'auto' && !value)\n continue;\n const unitStyle = options[unit];\n const nfOpts = unitStyle === '2-digit'\n ? twoDigitFormatOptions\n : unitStyle === 'numeric'\n ? {}\n : { style: 'unit', unit: nfUnit, unitDisplay: unitStyle };\n list.push(new Intl.NumberFormat(locale, nfOpts).format(value));\n }\n return new ListFormat(locale, {\n type: 'unit',\n style: style === 'digital' ? 'short' : style,\n }).formatToParts(list);\n }\n format(duration) {\n return this.formatToParts(duration)\n .map(p => p.value)\n .join('');\n }\n}\n_DurationFormat_options = new WeakMap();\n","import DurationFormat from './duration-format-ponyfill.js';\nconst durationRe = /^[-+]?P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)W)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?$/;\nexport const unitNames = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\nexport const isDuration = (str) => durationRe.test(str);\nexport class Duration {\n constructor(years = 0, months = 0, weeks = 0, days = 0, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) {\n this.years = years;\n this.months = months;\n this.weeks = weeks;\n this.days = days;\n this.hours = hours;\n this.minutes = minutes;\n this.seconds = seconds;\n this.milliseconds = milliseconds;\n this.years || (this.years = 0);\n this.sign || (this.sign = Math.sign(this.years));\n this.months || (this.months = 0);\n this.sign || (this.sign = Math.sign(this.months));\n this.weeks || (this.weeks = 0);\n this.sign || (this.sign = Math.sign(this.weeks));\n this.days || (this.days = 0);\n this.sign || (this.sign = Math.sign(this.days));\n this.hours || (this.hours = 0);\n this.sign || (this.sign = Math.sign(this.hours));\n this.minutes || (this.minutes = 0);\n this.sign || (this.sign = Math.sign(this.minutes));\n this.seconds || (this.seconds = 0);\n this.sign || (this.sign = Math.sign(this.seconds));\n this.milliseconds || (this.milliseconds = 0);\n this.sign || (this.sign = Math.sign(this.milliseconds));\n this.blank = this.sign === 0;\n }\n abs() {\n return new Duration(Math.abs(this.years), Math.abs(this.months), Math.abs(this.weeks), Math.abs(this.days), Math.abs(this.hours), Math.abs(this.minutes), Math.abs(this.seconds), Math.abs(this.milliseconds));\n }\n static from(durationLike) {\n var _a;\n if (typeof durationLike === 'string') {\n const str = String(durationLike).trim();\n const factor = str.startsWith('-') ? -1 : 1;\n const parsed = (_a = str\n .match(durationRe)) === null || _a === void 0 ? void 0 : _a.slice(1).map(x => (Number(x) || 0) * factor);\n if (!parsed)\n return new Duration();\n return new Duration(...parsed);\n }\n else if (typeof durationLike === 'object') {\n const { years, months, weeks, days, hours, minutes, seconds, milliseconds } = durationLike;\n return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds);\n }\n throw new RangeError('invalid duration');\n }\n static compare(one, two) {\n const now = Date.now();\n const oneApplied = Math.abs(applyDuration(now, Duration.from(one)).getTime() - now);\n const twoApplied = Math.abs(applyDuration(now, Duration.from(two)).getTime() - now);\n return oneApplied > twoApplied ? -1 : oneApplied < twoApplied ? 1 : 0;\n }\n toLocaleString(locale, opts) {\n return new DurationFormat(locale, opts).format(this);\n }\n}\nexport function applyDuration(date, duration) {\n const r = new Date(date);\n r.setFullYear(r.getFullYear() + duration.years);\n r.setMonth(r.getMonth() + duration.months);\n r.setDate(r.getDate() + duration.weeks * 7 + duration.days);\n r.setHours(r.getHours() + duration.hours);\n r.setMinutes(r.getMinutes() + duration.minutes);\n r.setSeconds(r.getSeconds() + duration.seconds);\n return r;\n}\nexport function elapsedTime(date, precision = 'second', now = Date.now()) {\n const delta = date.getTime() - now;\n if (delta === 0)\n return new Duration();\n const sign = Math.sign(delta);\n const ms = Math.abs(delta);\n const sec = Math.floor(ms / 1000);\n const min = Math.floor(sec / 60);\n const hr = Math.floor(min / 60);\n const day = Math.floor(hr / 24);\n const month = Math.floor(day / 30);\n const year = Math.floor(month / 12);\n const i = unitNames.indexOf(precision) || unitNames.length;\n return new Duration(i >= 0 ? year * sign : 0, i >= 1 ? (month - year * 12) * sign : 0, 0, i >= 3 ? (day - month * 30) * sign : 0, i >= 4 ? (hr - day * 24) * sign : 0, i >= 5 ? (min - hr * 60) * sign : 0, i >= 6 ? (sec - min * 60) * sign : 0, i >= 7 ? (ms - sec * 1000) * sign : 0);\n}\nexport function roundToSingleUnit(duration) {\n if (duration.blank)\n return duration;\n let years = Math.abs(duration.years);\n let months = Math.abs(duration.months);\n let weeks = Math.abs(duration.weeks);\n let days = Math.abs(duration.days);\n let hours = Math.abs(duration.hours);\n let minutes = Math.abs(duration.minutes);\n let seconds = Math.abs(duration.seconds);\n let milliseconds = Math.abs(duration.milliseconds);\n if (milliseconds >= 900)\n seconds += Math.round(milliseconds / 1000);\n if (seconds || minutes || hours || days || weeks || months || years)\n milliseconds = 0;\n if (seconds >= 55)\n minutes += Math.round(seconds / 60);\n if (minutes || hours || days || weeks || months || years)\n seconds = 0;\n if (minutes >= 55)\n hours += Math.round(minutes / 60);\n if (hours || days || weeks || months || years)\n minutes = 0;\n if (hours >= 21)\n days += Math.round(hours / 24);\n if (days || weeks || months || years)\n hours = 0;\n if (days >= 6)\n weeks += Math.round(days / 7);\n if (weeks || months || years)\n days = 0;\n if (weeks >= 4)\n months += Math.round(weeks / 4);\n if (months || years)\n weeks = 0;\n if (months >= 11)\n years += Math.round(months / 12);\n if (years)\n months = 0;\n const sign = duration.sign;\n return new Duration(years * sign, months * sign, weeks * sign, days * sign, hours * sign, minutes * sign, seconds * sign, milliseconds * sign);\n}\nexport function getRelativeTimeUnit(duration) {\n const rounded = roundToSingleUnit(duration);\n if (rounded.blank)\n return [0, 'second'];\n for (const unit of unitNames) {\n if (unit === 'millisecond')\n continue;\n const val = rounded[`${unit}s`];\n if (val)\n return [val, unit];\n }\n return [0, 'second'];\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RelativeTimeElement_instances, _RelativeTimeElement_customTitle, _RelativeTimeElement_updating, _RelativeTimeElement_lang_get, _RelativeTimeElement_renderRoot, _RelativeTimeElement_getFormattedTitle, _RelativeTimeElement_resolveFormat, _RelativeTimeElement_getDurationFormat, _RelativeTimeElement_getRelativeFormat, _RelativeTimeElement_getDateTimeFormat;\nimport { Duration, unitNames, isDuration, elapsedTime, roundToSingleUnit, getRelativeTimeUnit } from './duration.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\nconst HTMLElement = root.HTMLElement || null;\nconst emptyDuration = new Duration();\nconst microEmptyDuration = new Duration(0, 0, 0, 0, 0, 1);\nexport class RelativeTimeUpdatedEvent extends Event {\n constructor(oldText, newText, oldTitle, newTitle) {\n super('relative-time-updated', { bubbles: true, composed: true });\n this.oldText = oldText;\n this.newText = newText;\n this.oldTitle = oldTitle;\n this.newTitle = newTitle;\n }\n}\nfunction getUnitFactor(el) {\n if (!el.date)\n return Infinity;\n if (el.format === 'duration' || el.format === 'elapsed') {\n const precision = el.precision;\n if (precision === 'second') {\n return 1000;\n }\n else if (precision === 'minute') {\n return 60 * 1000;\n }\n }\n const ms = Math.abs(Date.now() - el.date.getTime());\n if (ms < 60 * 1000)\n return 1000;\n if (ms < 60 * 60 * 1000)\n return 60 * 1000;\n return 60 * 60 * 1000;\n}\nconst dateObserver = new (class {\n constructor() {\n this.elements = new Set();\n this.time = Infinity;\n this.timer = -1;\n }\n observe(element) {\n if (this.elements.has(element))\n return;\n this.elements.add(element);\n const date = element.date;\n if (date && date.getTime()) {\n const ms = getUnitFactor(element);\n const time = Date.now() + ms;\n if (time < this.time) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => this.update(), ms);\n this.time = time;\n }\n }\n }\n unobserve(element) {\n if (!this.elements.has(element))\n return;\n this.elements.delete(element);\n }\n update() {\n clearTimeout(this.timer);\n if (!this.elements.size)\n return;\n let nearestDistance = Infinity;\n for (const timeEl of this.elements) {\n nearestDistance = Math.min(nearestDistance, getUnitFactor(timeEl));\n timeEl.update();\n }\n this.time = Math.min(60 * 60 * 1000, nearestDistance);\n this.timer = setTimeout(() => this.update(), this.time);\n this.time += Date.now();\n }\n})();\nexport default class RelativeTimeElement extends HTMLElement {\n constructor() {\n super(...arguments);\n _RelativeTimeElement_instances.add(this);\n _RelativeTimeElement_customTitle.set(this, false);\n _RelativeTimeElement_updating.set(this, false);\n _RelativeTimeElement_renderRoot.set(this, this.shadowRoot ? this.shadowRoot : this.attachShadow ? this.attachShadow({ mode: 'open' }) : this);\n }\n static get observedAttributes() {\n return [\n 'second',\n 'minute',\n 'hour',\n 'weekday',\n 'day',\n 'month',\n 'year',\n 'time-zone-name',\n 'prefix',\n 'threshold',\n 'tense',\n 'precision',\n 'format',\n 'format-style',\n 'datetime',\n 'lang',\n 'title',\n ];\n }\n get second() {\n const second = this.getAttribute('second');\n if (second === 'numeric' || second === '2-digit')\n return second;\n }\n set second(value) {\n this.setAttribute('second', value || '');\n }\n get minute() {\n const minute = this.getAttribute('minute');\n if (minute === 'numeric' || minute === '2-digit')\n return minute;\n }\n set minute(value) {\n this.setAttribute('minute', value || '');\n }\n get hour() {\n const hour = this.getAttribute('hour');\n if (hour === 'numeric' || hour === '2-digit')\n return hour;\n }\n set hour(value) {\n this.setAttribute('hour', value || '');\n }\n get weekday() {\n const weekday = this.getAttribute('weekday');\n if (weekday === 'long' || weekday === 'short' || weekday === 'narrow')\n return weekday;\n if (this.format === 'datetime' && weekday !== '')\n return this.formatStyle;\n }\n set weekday(value) {\n this.setAttribute('weekday', value || '');\n }\n get day() {\n var _a;\n const day = (_a = this.getAttribute('day')) !== null && _a !== void 0 ? _a : 'numeric';\n if (day === 'numeric' || day === '2-digit')\n return day;\n }\n set day(value) {\n this.setAttribute('day', value || '');\n }\n get month() {\n const format = this.format;\n let month = this.getAttribute('month');\n if (month === '')\n return;\n month !== null && month !== void 0 ? month : (month = format === 'datetime' ? this.formatStyle : 'short');\n if (month === 'numeric' || month === '2-digit' || month === 'short' || month === 'long' || month === 'narrow') {\n return month;\n }\n }\n set month(value) {\n this.setAttribute('month', value || '');\n }\n get year() {\n var _a;\n const year = this.getAttribute('year');\n if (year === 'numeric' || year === '2-digit')\n return year;\n if (!this.hasAttribute('year') && new Date().getUTCFullYear() !== ((_a = this.date) === null || _a === void 0 ? void 0 : _a.getUTCFullYear())) {\n return 'numeric';\n }\n }\n set year(value) {\n this.setAttribute('day', value || '');\n }\n get timeZoneName() {\n const name = this.getAttribute('time-zone-name');\n if (name === 'long' ||\n name === 'short' ||\n name === 'shortOffset' ||\n name === 'longOffset' ||\n name === 'shortGeneric' ||\n name === 'longGeneric') {\n return name;\n }\n }\n set timeZoneName(value) {\n this.setAttribute('time-zone-name', value || '');\n }\n get prefix() {\n var _a;\n return (_a = this.getAttribute('prefix')) !== null && _a !== void 0 ? _a : (this.format === 'datetime' ? '' : 'on');\n }\n set prefix(value) {\n this.setAttribute('prefix', value);\n }\n get threshold() {\n const threshold = this.getAttribute('threshold');\n return threshold && isDuration(threshold) ? threshold : 'P30D';\n }\n set threshold(value) {\n this.setAttribute('threshold', value);\n }\n get tense() {\n const tense = this.getAttribute('tense');\n if (tense === 'past')\n return 'past';\n if (tense === 'future')\n return 'future';\n return 'auto';\n }\n set tense(value) {\n this.setAttribute('tense', value);\n }\n get precision() {\n const precision = this.getAttribute('precision');\n if (unitNames.includes(precision))\n return precision;\n if (this.format === 'micro')\n return 'minute';\n return 'second';\n }\n set precision(value) {\n this.setAttribute('precision', value);\n }\n get format() {\n const format = this.getAttribute('format');\n if (format === 'datetime')\n return 'datetime';\n if (format === 'relative')\n return 'relative';\n if (format === 'duration')\n return 'duration';\n if (format === 'micro')\n return 'micro';\n if (format === 'elapsed')\n return 'elapsed';\n return 'auto';\n }\n set format(value) {\n this.setAttribute('format', value);\n }\n get formatStyle() {\n const formatStyle = this.getAttribute('format-style');\n if (formatStyle === 'long')\n return 'long';\n if (formatStyle === 'short')\n return 'short';\n if (formatStyle === 'narrow')\n return 'narrow';\n const format = this.format;\n if (format === 'elapsed' || format === 'micro')\n return 'narrow';\n if (format === 'datetime')\n return 'short';\n return 'long';\n }\n set formatStyle(value) {\n this.setAttribute('format-style', value);\n }\n get datetime() {\n return this.getAttribute('datetime') || '';\n }\n set datetime(value) {\n this.setAttribute('datetime', value);\n }\n get date() {\n const parsed = Date.parse(this.datetime);\n return Number.isNaN(parsed) ? null : new Date(parsed);\n }\n set date(value) {\n this.datetime = (value === null || value === void 0 ? void 0 : value.toISOString()) || '';\n }\n connectedCallback() {\n this.update();\n }\n disconnectedCallback() {\n dateObserver.unobserve(this);\n }\n attributeChangedCallback(attrName, oldValue, newValue) {\n if (oldValue === newValue)\n return;\n if (attrName === 'title') {\n __classPrivateFieldSet(this, _RelativeTimeElement_customTitle, newValue !== null && (this.date && __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedTitle).call(this, this.date)) !== newValue, \"f\");\n }\n if (!__classPrivateFieldGet(this, _RelativeTimeElement_updating, \"f\") && !(attrName === 'title' && __classPrivateFieldGet(this, _RelativeTimeElement_customTitle, \"f\"))) {\n __classPrivateFieldSet(this, _RelativeTimeElement_updating, (async () => {\n await Promise.resolve();\n this.update();\n })(), \"f\");\n }\n }\n update() {\n const oldText = __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent || this.textContent || '';\n const oldTitle = this.getAttribute('title') || '';\n let newTitle = oldTitle;\n const date = this.date;\n if (typeof Intl === 'undefined' || !Intl.DateTimeFormat || !date) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = oldText;\n return;\n }\n const now = Date.now();\n if (!__classPrivateFieldGet(this, _RelativeTimeElement_customTitle, \"f\")) {\n newTitle = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedTitle).call(this, date) || '';\n if (newTitle)\n this.setAttribute('title', newTitle);\n }\n const duration = elapsedTime(date, this.precision, now);\n const format = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_resolveFormat).call(this, duration);\n let newText = oldText;\n if (format === 'duration') {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getDurationFormat).call(this, duration);\n }\n else if (format === 'relative') {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getRelativeFormat).call(this, duration);\n }\n else {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getDateTimeFormat).call(this, date);\n }\n if (newText) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = newText;\n }\n else if (this.shadowRoot === __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\") && this.textContent) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = this.textContent;\n }\n if (newText !== oldText || newTitle !== oldTitle) {\n this.dispatchEvent(new RelativeTimeUpdatedEvent(oldText, newText, oldTitle, newTitle));\n }\n if (format === 'relative' || format === 'duration') {\n dateObserver.observe(this);\n }\n else {\n dateObserver.unobserve(this);\n }\n __classPrivateFieldSet(this, _RelativeTimeElement_updating, false, \"f\");\n }\n}\n_RelativeTimeElement_customTitle = new WeakMap(), _RelativeTimeElement_updating = new WeakMap(), _RelativeTimeElement_renderRoot = new WeakMap(), _RelativeTimeElement_instances = new WeakSet(), _RelativeTimeElement_lang_get = function _RelativeTimeElement_lang_get() {\n var _a;\n return (((_a = this.closest('[lang]')) === null || _a === void 0 ? void 0 : _a.getAttribute('lang')) ||\n this.ownerDocument.documentElement.getAttribute('lang') ||\n 'default');\n}, _RelativeTimeElement_getFormattedTitle = function _RelativeTimeElement_getFormattedTitle(date) {\n return new Intl.DateTimeFormat(__classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get), {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n timeZoneName: 'short',\n }).format(date);\n}, _RelativeTimeElement_resolveFormat = function _RelativeTimeElement_resolveFormat(duration) {\n const format = this.format;\n if (format === 'datetime')\n return 'datetime';\n if (format === 'duration')\n return 'duration';\n if (format === 'elapsed')\n return 'duration';\n if (format === 'micro')\n return 'duration';\n if ((format === 'auto' || format === 'relative') && typeof Intl !== 'undefined' && Intl.RelativeTimeFormat) {\n const tense = this.tense;\n if (tense === 'past' || tense === 'future')\n return 'relative';\n if (Duration.compare(duration, this.threshold) === 1)\n return 'relative';\n }\n return 'datetime';\n}, _RelativeTimeElement_getDurationFormat = function _RelativeTimeElement_getDurationFormat(duration) {\n const locale = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get);\n const format = this.format;\n const style = this.formatStyle;\n const tense = this.tense;\n let empty = emptyDuration;\n if (format === 'micro') {\n duration = roundToSingleUnit(duration);\n empty = microEmptyDuration;\n if ((this.tense === 'past' && duration.sign !== -1) || (this.tense === 'future' && duration.sign !== 1)) {\n duration = microEmptyDuration;\n }\n }\n else if ((tense === 'past' && duration.sign !== -1) || (tense === 'future' && duration.sign !== 1)) {\n duration = empty;\n }\n const display = `${this.precision}sDisplay`;\n if (duration.blank)\n return empty.toLocaleString(locale, { style, [display]: 'always' });\n return duration.abs().toLocaleString(locale, { style });\n}, _RelativeTimeElement_getRelativeFormat = function _RelativeTimeElement_getRelativeFormat(duration) {\n const relativeFormat = new Intl.RelativeTimeFormat(__classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get), { numeric: 'auto', style: this.formatStyle });\n const tense = this.tense;\n if (tense === 'future' && duration.sign !== 1)\n duration = emptyDuration;\n if (tense === 'past' && duration.sign !== -1)\n duration = emptyDuration;\n const [int, unit] = getRelativeTimeUnit(duration);\n if (unit === 'second' && int < 10)\n return relativeFormat.format(0, 'second');\n return relativeFormat.format(int, unit);\n}, _RelativeTimeElement_getDateTimeFormat = function _RelativeTimeElement_getDateTimeFormat(date) {\n const formatter = new Intl.DateTimeFormat(__classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get), {\n second: this.second,\n minute: this.minute,\n hour: this.hour,\n weekday: this.weekday,\n day: this.day,\n month: this.month,\n year: this.year,\n timeZoneName: this.timeZoneName,\n });\n return `${this.prefix} ${formatter.format(date)}`.trim();\n};\n","import RelativeTimeElement from './relative-time-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n customElements.define('relative-time', RelativeTimeElement);\n root.RelativeTimeElement = RelativeTimeElement;\n}\ncatch (e) {\n if (!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&\n !(e instanceof ReferenceError)) {\n throw e;\n }\n}\nexport default RelativeTimeElement;\nexport * from './relative-time-element.js';\n","function getTabs(el) {\n return Array.from(el.querySelectorAll('[role=\"tablist\"] [role=\"tab\"]')).filter(tab => tab instanceof HTMLElement && tab.closest(el.tagName) === el);\n}\nfunction getNavigationKeyCodes(vertical) {\n if (vertical) {\n return [\n ['ArrowDown', 'ArrowRight'],\n ['ArrowUp', 'ArrowLeft']\n ];\n }\n else {\n return [['ArrowRight'], ['ArrowLeft']];\n }\n}\nexport default class TabContainerElement extends HTMLElement {\n constructor() {\n super();\n this.addEventListener('keydown', (event) => {\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n if (target.closest(this.tagName) !== this)\n return;\n if (target.getAttribute('role') !== 'tab' && !target.closest('[role=\"tablist\"]'))\n return;\n const tabs = getTabs(this);\n const currentIndex = tabs.indexOf(tabs.find(tab => tab.matches('[aria-selected=\"true\"]')));\n const [incrementKeys, decrementKeys] = getNavigationKeyCodes(target.closest('[role=\"tablist\"]')?.getAttribute('aria-orientation') === 'vertical');\n if (incrementKeys.some(code => event.code === code)) {\n let index = currentIndex + 1;\n if (index >= tabs.length)\n index = 0;\n this.selectTab(index);\n }\n else if (decrementKeys.some(code => event.code === code)) {\n let index = currentIndex - 1;\n if (index < 0)\n index = tabs.length - 1;\n this.selectTab(index);\n }\n else if (event.code === 'Home') {\n this.selectTab(0);\n event.preventDefault();\n }\n else if (event.code === 'End') {\n this.selectTab(tabs.length - 1);\n event.preventDefault();\n }\n });\n this.addEventListener('click', (event) => {\n const tabs = getTabs(this);\n if (!(event.target instanceof Element))\n return;\n if (event.target.closest(this.tagName) !== this)\n return;\n const tab = event.target.closest('[role=\"tab\"]');\n if (!(tab instanceof HTMLElement) || !tab.closest('[role=\"tablist\"]'))\n return;\n const index = tabs.indexOf(tab);\n this.selectTab(index);\n });\n }\n connectedCallback() {\n for (const tab of getTabs(this)) {\n if (!tab.hasAttribute('aria-selected')) {\n tab.setAttribute('aria-selected', 'false');\n }\n if (!tab.hasAttribute('tabindex')) {\n if (tab.getAttribute('aria-selected') === 'true') {\n tab.setAttribute('tabindex', '0');\n }\n else {\n tab.setAttribute('tabindex', '-1');\n }\n }\n }\n }\n selectTab(index) {\n const tabs = getTabs(this);\n const panels = Array.from(this.querySelectorAll('[role=\"tabpanel\"]')).filter(panel => panel.closest(this.tagName) === this);\n /**\n * Out of bounds index\n */\n if (index > tabs.length - 1) {\n throw new RangeError(`Index \"${index}\" out of bounds`);\n }\n const selectedTab = tabs[index];\n const selectedPanel = panels[index];\n const cancelled = !this.dispatchEvent(new CustomEvent('tab-container-change', {\n bubbles: true,\n cancelable: true,\n detail: { relatedTarget: selectedPanel }\n }));\n if (cancelled)\n return;\n for (const tab of tabs) {\n tab.setAttribute('aria-selected', 'false');\n tab.setAttribute('tabindex', '-1');\n }\n for (const panel of panels) {\n panel.hidden = true;\n if (!panel.hasAttribute('tabindex') && !panel.hasAttribute('data-tab-container-no-tabstop')) {\n panel.setAttribute('tabindex', '0');\n }\n }\n selectedTab.setAttribute('aria-selected', 'true');\n selectedTab.setAttribute('tabindex', '0');\n selectedTab.focus();\n selectedPanel.hidden = false;\n this.dispatchEvent(new CustomEvent('tab-container-changed', {\n bubbles: true,\n detail: { relatedTarget: selectedPanel }\n }));\n }\n}\nif (!window.customElements.get('tab-container')) {\n window.TabContainerElement = TabContainerElement;\n window.customElements.define('tab-container', TabContainerElement);\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, targets} from '@github/catalyst'\n\n@controller\nexport class YatthoMultiInputElement extends HTMLElement {\n @targets fields: HTMLInputElement[]\n\n activateField(name: string) {\n const fieldWithName = this.findField(name)\n if (!fieldWithName) return\n\n for (const field of this.fields) {\n if (field === fieldWithName) continue\n\n field.setAttribute('disabled', 'disabled')\n field.setAttribute('hidden', 'hidden')\n\n field.parentElement?.setAttribute('hidden', 'hidden')\n }\n\n fieldWithName.removeAttribute('disabled')\n fieldWithName.removeAttribute('hidden')\n fieldWithName.parentElement?.removeAttribute('hidden')\n }\n\n private findField(name: string): HTMLElement | null {\n for (const field of this.fields) {\n if (field.getAttribute('data-name') === name) {\n return field\n }\n }\n\n return null\n }\n}\n\ndeclare global {\n interface Window {\n YatthoMultiInputElement: typeof YatthoMultiInputElement\n }\n}\n\nif (!window.customElements.get('yattho-multi-input')) {\n Object.assign(window, { YatthoMultiInputElement })\n window.customElements.define('yattho-multi-input', YatthoMultiInputElement)\n}","function throttle(callback, wait = 0, {\n start = true,\n middle = true,\n once = false\n} = {}) {\n var last = 0;\n var timer;\n var cancelled = false;\n\n var fn = function fn(...args) {\n if (cancelled) return;\n var delta = Date.now() - last;\n last = Date.now();\n\n if (start) {\n //eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe this isn't a const\n start = false;\n callback(...args);\n if (once) fn.cancel();\n } else if (middle && delta < wait || !middle) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n last = Date.now();\n callback(...args);\n if (once) fn.cancel();\n }, !middle ? wait : wait - delta);\n }\n };\n\n fn.cancel = function () {\n clearTimeout(timer);\n cancelled = true;\n };\n\n return fn;\n}\nfunction debounce(callback, wait = 0, {\n start = false,\n middle = false,\n once = false\n} = {}) {\n return throttle(callback, wait, {\n start: start,\n middle: middle,\n once: once\n });\n}\n\nconst states = new WeakMap();\nclass AutoCheckElement extends HTMLElement {\n connectedCallback() {\n const input = this.input;\n if (!input)\n return;\n const checker = debounce(check.bind(null, this), 300);\n const state = { check: checker, controller: null };\n states.set(this, state);\n input.addEventListener('input', setLoadingState);\n input.addEventListener('input', checker);\n input.autocomplete = 'off';\n input.spellcheck = false;\n }\n disconnectedCallback() {\n const input = this.input;\n if (!input)\n return;\n const state = states.get(this);\n if (!state)\n return;\n states.delete(this);\n input.removeEventListener('input', setLoadingState);\n input.removeEventListener('input', state.check);\n input.setCustomValidity('');\n }\n attributeChangedCallback(name) {\n if (name === 'required') {\n const input = this.input;\n if (!input)\n return;\n input.required = this.required;\n }\n }\n static get observedAttributes() {\n return ['required'];\n }\n get input() {\n return this.querySelector('input');\n }\n get src() {\n const src = this.getAttribute('src');\n if (!src)\n return '';\n const link = this.ownerDocument.createElement('a');\n link.href = src;\n return link.href;\n }\n set src(value) {\n this.setAttribute('src', value);\n }\n get csrf() {\n const csrfElement = this.querySelector('[data-csrf]');\n return this.getAttribute('csrf') || (csrfElement instanceof HTMLInputElement && csrfElement.value) || '';\n }\n set csrf(value) {\n this.setAttribute('csrf', value);\n }\n get required() {\n return this.hasAttribute('required');\n }\n set required(required) {\n if (required) {\n this.setAttribute('required', '');\n }\n else {\n this.removeAttribute('required');\n }\n }\n get csrfField() {\n return this.getAttribute('csrf-field') || 'authenticity_token';\n }\n set csrfField(value) {\n this.setAttribute('csrf-field', value);\n }\n}\nfunction setLoadingState(event) {\n const input = event.currentTarget;\n if (!(input instanceof HTMLInputElement))\n return;\n const autoCheckElement = input.closest('auto-check');\n if (!(autoCheckElement instanceof AutoCheckElement))\n return;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const state = states.get(autoCheckElement);\n if (!src || !csrf || !state) {\n return;\n }\n let message = 'Verifying…';\n const setValidity = (text) => (message = text);\n input.dispatchEvent(new CustomEvent('auto-check-start', {\n bubbles: true,\n detail: { setValidity }\n }));\n if (autoCheckElement.required) {\n input.setCustomValidity(message);\n }\n}\nfunction makeAbortController() {\n if ('AbortController' in window) {\n return new AbortController();\n }\n return {\n signal: null,\n abort() {\n }\n };\n}\nasync function fetchWithNetworkEvents(el, url, options) {\n try {\n const response = await fetch(url, options);\n el.dispatchEvent(new CustomEvent('load'));\n el.dispatchEvent(new CustomEvent('loadend'));\n return response;\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n el.dispatchEvent(new CustomEvent('error'));\n el.dispatchEvent(new CustomEvent('loadend'));\n }\n throw error;\n }\n}\nasync function check(autoCheckElement) {\n const input = autoCheckElement.input;\n if (!input) {\n return;\n }\n const csrfField = autoCheckElement.csrfField;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const state = states.get(autoCheckElement);\n if (!src || !csrf || !state) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n return;\n }\n if (!input.value.trim()) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n return;\n }\n const body = new FormData();\n body.append(csrfField, csrf);\n body.append('value', input.value);\n input.dispatchEvent(new CustomEvent('auto-check-send', {\n bubbles: true,\n detail: { body }\n }));\n if (state.controller) {\n state.controller.abort();\n }\n else {\n autoCheckElement.dispatchEvent(new CustomEvent('loadstart'));\n }\n state.controller = makeAbortController();\n try {\n const response = await fetchWithNetworkEvents(autoCheckElement, src, {\n credentials: 'same-origin',\n signal: state.controller.signal,\n method: 'POST',\n body\n });\n if (response.ok) {\n processSuccess(response, input, autoCheckElement.required);\n }\n else {\n processFailure(response, input, autoCheckElement.required);\n }\n state.controller = null;\n input.dispatchEvent(new CustomEvent('auto-check-complete', { bubbles: true }));\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n state.controller = null;\n input.dispatchEvent(new CustomEvent('auto-check-complete', { bubbles: true }));\n }\n }\n}\nfunction processSuccess(response, input, required) {\n if (required) {\n input.setCustomValidity('');\n }\n input.dispatchEvent(new CustomEvent('auto-check-success', {\n bubbles: true,\n detail: {\n response: response.clone()\n }\n }));\n}\nfunction processFailure(response, input, required) {\n let message = 'Validation failed';\n const setValidity = (text) => (message = text);\n input.dispatchEvent(new CustomEvent('auto-check-error', {\n bubbles: true,\n detail: {\n response: response.clone(),\n setValidity\n }\n }));\n if (required) {\n input.setCustomValidity(message);\n }\n}\nif (!window.customElements.get('auto-check')) {\n window.AutoCheckElement = AutoCheckElement;\n window.customElements.define('auto-check', AutoCheckElement);\n}\n\nexport default AutoCheckElement;\n","import '@github/auto-check-element'\nimport {controller, target} from '@github/catalyst'\n\n@controller\nclass YatthoTextFieldElement extends HTMLElement {\n @target inputElement: HTMLInputElement\n @target validationElement: HTMLElement\n @target validationMessageElement: HTMLElement\n\n #abortController: AbortController | null\n\n connectedCallback(): void {\n this.#abortController?.abort()\n const {signal} = (this.#abortController = new AbortController())\n\n this.inputElement.addEventListener(\n 'auto-check-success',\n () => { this.clearError() },\n {signal}\n )\n\n this.inputElement.addEventListener(\n 'auto-check-error',\n (event: any) => {\n event.detail.response.text().then(\n (error_message: string) => { this.setError(error_message) }\n )\n },\n {signal}\n )\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n clearError(): void {\n this.inputElement.removeAttribute('invalid')\n this.validationElement.hidden = true\n this.validationMessageElement.innerText = ''\n }\n\n setError(message: string): void {\n this.validationMessageElement.innerText = message\n this.validationElement.hidden = false\n this.inputElement.setAttribute('invalid', 'true')\n }\n}","import {controller, target} from '@github/catalyst'\n\n@controller\nexport class ToggleSwitchInputElement extends HTMLElement {\n @target validationElement: HTMLElement\n @target validationMessageElement: HTMLElement\n\n connectedCallback() {\n this.addEventListener('toggleSwitchError', (event: Event) => {\n this.validationMessageElement.innerText = (event as CustomEvent).detail\n this.validationElement.removeAttribute('hidden')\n })\n\n this.addEventListener('toggleSwitchSuccess', () => {\n this.validationMessageElement.innerText = ''\n this.validationElement.setAttribute('hidden', 'hidden')\n })\n }\n}"],"names":["DetailsMenuElement","HTMLElement","preload","this","hasAttribute","value","setAttribute","removeAttribute","src","getAttribute","connectedCallback","details","parentElement","summary","querySelector","subscriptions","fromEvent","e","trackComposition","shouldCommit","menu","event","KeyboardEvent","state","states","get","isComposing","isSummaryFocused","target","Element","tagName","key","close","preventDefault","stopPropagation","sibling","focus","ctrlBindings","ctrlKey","selected","document","activeElement","isMenuItem","closest","click","keydown","loadFragment","once","querySelectorAll","opened","contains","closeCurrentMenu","NullSubscription","focusOnOpen","set","loaded","disconnectedCallback","delete","sub","unsubscribe","WeakMap","eventName","onNext","options","addEventListener","removeEventListener","loader","autofocus","isMouse","focusFirstItem","input","next","Array","from","index","indexOf","found","def","length","navigator","userAgent","match","type","menuitem","checked","commit","dispatchEvent","CustomEvent","cancelable","detail","relatedTarget","item","button","text","el","textEl","textContent","labelText","html","contentsEl","innerHTML","labelHTML","updateLabel","checkState","toString","HTMLInputElement","indeterminate","updateChecked","role","window","customElements","define","startPositions","dragStartPositions","constructedElements","moveCropArea","currentTarget","ImageCropElement","box","image","deltaX","deltaY","has","MouseEvent","pos","pageX","dragStartX","pageY","dragStartY","TouchEvent","changedTouches","x","Math","min","max","offsetLeft","width","offsetWidth","y","offsetTop","height","offsetHeight","style","left","top","fireChangeEvent","updateCropArea","getShadowHost","rect","getBoundingClientRect","delta","setInitialPosition","startX","startY","pageXOffset","pageYOffset","updateDimensions","rootNode","getRootNode","ShadowRoot","host","startUpdate","direction","passive","classList","add","reposition","newSide","abs","round","side","clientWidth","clientHeight","stopUpdate","remove","result","ratio","naturalWidth","slottedInput","bubbles","shadowRoot","attachShadow","mode","HTMLImageElement","observedAttributes","val","attributeChangedCallback","attribute","oldValue","newValue","__decorate","decorators","desc","d","c","arguments","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__classPrivateFieldGet","receiver","kind","f","TypeError","call","__classPrivateFieldSet","alternateOrders","alternateAlignments","start","end","center","getAnchoredPosition","floatingElement","anchorElement","settings","element","parentNode","getComputedStyle","position","body","getPositionedParent","clippingRect","overflow","clippingNode","elemRect","elemStyle","borderTop","borderLeft","borderRight","borderBottom","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","map","v","parseInt","innerHeight","Infinity","getClippingRect","parentElementStyle","parentElementRect","viewportRect","relativePosition","floatingRect","anchorRect","align","allowOutOfBounds","anchorOffset","alignmentOffset","relativeViewportRect","calculatePosition","anchorSide","anchorAlign","alternateOrder","positionAttempt","prevSide","shouldRecalculatePosition","nextSide","alternateAlignment","alignmentAttempt","prevAlign","shouldRecalculateAlignment","nextAlign","assign","pureCalculateAnchoredPosition","_a","_b","_c","_d","_e","positionDefaults","startsWith","getDefaultSettings","elementDimensions","anchorPosition","anchorRight","anchorBottom","currentPos","containerDimensions","getFocusableChild","container","lastChild","strict","acceptFn","onlyTabbable","isTabbable","isFocusable","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","FILTER_ACCEPT","FILTER_SKIP","nextNode","reverse","firstChild","previousNode","iterateFocusableElements","elem","disabledAttrInert","includes","disabled","hiddenInert","hidden","hiddenInputInert","sentinelInert","sizeInert","visibilityInert","visibility","clientRectsInert","getClientRects","HTMLAnchorElement","tabIndex","signalSupported","noop","create","signal","originalAddEventListener","EventTarget","prototype","name","originalCallback","optionsOrCapture","AbortSignal","monkeyPatch","suspendedTrapStack","activeTrap","focusTrap","initialFocus","abortSignal","controller","AbortController","sentinelStart","createElement","onfocus","lastFocusableChild","sentinelEnd","lastFocusedChild","ensureTrapZoneHasFocus","focusedElement","firstFocusableChild","prepend","append","wrappingController","abort","followSignal","suspendedTrap","push","undefined","sentinels","getElementsByClassName","suspendedTrapIndex","findIndex","t","splice","trapToReactivate","pop","originalSignal","tryReactivate","capture","focusIfNeeded","overlayStack","clickHandler","dialogId","dialog","getElementById","ModalDialogElement","openButton","show","topLevelDialog","id","mousedownHandler","ownerDocument","upEvent","constructor","_ModalDialogElement_focusAbortController","open","_ModalDialogElement_instances","_ModalDialogElement_overlayBackdrop_get","aborted","showButtons","closedNotCancelled","dialogEvent","Event","controllers","WeakSet","bindShadow","root","bindElements","listenForBind","observers","closed","observer","MutationObserver","mutations","mutation","bindActions","addedNodes","observe","childList","subtree","attributeFilter","subscription","disconnect","handleEvent","binding","bindings","tag","method","matches","shadowController","action","trim","split","eventSep","lastIndexOf","methodSep","slice","dasherize","str","String","description","replace","toLowerCase","mustDasherize","dashed","DOMException","attrKey","initialized","initializeAttrs","instance","names","proto","getPrototypeOf","prefix","attrPrefix","meta","descriptor","configurable","Number","toggleAttribute","symbol","Symbol","for","CatalystDelegate","classObject","delegate","attributes","observed","attrToAttributeName","concat","defineObservedAttributes","register","upgrade","template","content","cloneNode","autoShadowRoot","bind","hasOwnProperty","parent","Map","Set","findTarget","targets","findTargets","Promise","resolve","readyState","listenerOptions","handler","NavListElement","setShowMoreItemState","showMoreDisabled","showMoreItem","toggle","currentPage","totalPages","paginationSrc","expandItem","nextElementSibling","collapseItem","itemIsExpanded","handleItemWithSubItemClick","async","paginationURL","URL","location","origin","searchParams","response","fetch","ok","err","fragment","parseHTML","list","insertBefore","focusMarkers","importNode","SegmentedControlElement","_SegmentedControlElement_instances","_SegmentedControlElement_updateButtonLabels","select","items","debounce","callback","wait","middle","timer","last","cancelled","fn","args","Date","now","apply","cancel","clearTimeout","setTimeout","throttle","label","ToggleSwitchElement","link","href","csrf","csrfElement","csrfField","isRemote","isDisabled","setLoadingState","submitForm","performToggle","turnOn","switch","turnOff","isOn","isOff","disable","enable","errorIcon","loadingSpinner","setSuccessState","setFinishedState","setErrorState","message","error","FormData","Error","credentials","headers","opts","db","TOOLTIP_OPEN_CLASS","TOOLTIP_SR_ONLY_CLASS","DIRECTION_CLASSES","ToolTipElement","_ToolTipElement_abortController","_ToolTipElement_align","_ToolTipElement_side","_ToolTipElement_allowUpdatePosition","styles","htmlFor","control","hiddenFromView","isConnected","_ToolTipElement_instances","_ToolTipElement_update","_ToolTipElement_updateControlReference","_ToolTipElement_updateDirection","shadow","appendChild","tooltip","_ToolTipElement_updatePosition","labelledBy","describedBy","XBannerElement","dismiss","shouldReappear","setProperty","removeChild","Combobox","tabInsertsSuggestions","defaultFirstOption","random","keyboardEventHandler","combobox","shiftKey","metaKey","altKey","clearSelection","navigate","keyboardBindings","compositionEventHandler","inputHandler","destroy","stop","commitWithElement","indicateDefaultOption","filter","visible","indexDiff","focusEl","els","focusIndex","indexOfItem","newIndex","scrollTo","fireCommitEvent","scrollTop","containerBottom","bottom","inViewport","SCREEN_READER_DELAY","testScreenReaderDelay","Autocomplete","results","autoselectEnabled","feedback","clearButton","clientOptions","labelElem","interactingWithList","onInputChange","timeout","Rest","onResultsMouseDown","onInputBlur","onInputFocus","onKeydown","onCommit","handleClear","updateFeedbackForScreenReaders","firstOption","children","fetchResults","identifyOptions","inputString","query","url","params","URLSearchParams","search","fetchResult","then","allNewOptions","hasResults","numOptions","firstOptionValue","catch","AutocompleteEvent","init","super","requests","xhr","XMLHttpRequest","setRequestHeader","pending","clear","reject","onload","status","responseText","onerror","send","request","AutocompleteElement","listId","autocomplete","copyNode","clipboard","writeText","selection","getSelection","removeAllRanges","range","createRange","selectNodeContents","addRange","execCommand","copyText","createNode","copy","trigger","Document","HTMLTextAreaElement","clicked","focused","blurred","ClipboardCopyElement","showSVG","svg","display","hideSVG","clipboardCopyElementTimers","currentTimeout","copyIcon","checkIcon","showCheck","showCopy","_DurationFormat_options","ListFormat","Intl","formatToParts","members","parts","partsTable","twoDigitFormatOptions","minimumIntegerDigits","DurationFormat","locale","prevStyle","hours","minutes","seconds","milliseconds","years","yearsDisplay","months","monthsDisplay","weeks","weeksDisplay","days","daysDisplay","hoursDisplay","minutesDisplay","secondsDisplay","millisecondsDisplay","resolvedOptions","duration","unit","nfUnit","unitStyle","nfOpts","unitDisplay","NumberFormat","format","p","join","durationRe","unitNames","Duration","sign","blank","static","durationLike","factor","parsed","RangeError","one","two","oneApplied","applyDuration","getTime","twoApplied","toLocaleString","date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","roundToSingleUnit","_RelativeTimeElement_instances","_RelativeTimeElement_customTitle","_RelativeTimeElement_updating","_RelativeTimeElement_lang_get","_RelativeTimeElement_renderRoot","_RelativeTimeElement_getFormattedTitle","_RelativeTimeElement_resolveFormat","_RelativeTimeElement_getDurationFormat","_RelativeTimeElement_getRelativeFormat","_RelativeTimeElement_getDateTimeFormat","globalThis","emptyDuration","microEmptyDuration","RelativeTimeUpdatedEvent","oldText","newText","oldTitle","newTitle","composed","getUnitFactor","precision","ms","dateObserver","elements","time","update","unobserve","size","nearestDistance","timeEl","RelativeTimeElement","second","minute","hour","weekday","formatStyle","day","month","year","getUTCFullYear","timeZoneName","threshold","test","tense","datetime","parse","isNaN","toISOString","attrName","DateTimeFormat","sec","floor","hr","elapsedTime","documentElement","RelativeTimeFormat","compare","empty","relativeFormat","numeric","int","rounded","getRelativeTimeUnit","formatter","ReferenceError","getTabs","tab","TabContainerElement","tabs","currentIndex","find","incrementKeys","decrementKeys","some","code","selectTab","panels","panel","selectedTab","selectedPanel","YatthoMultiInputElement","activateField","fieldWithName","findField","field","fields","AutoCheckElement","checker","check","spellcheck","setCustomValidity","required","autoCheckElement","setValidity","fetchWithNetworkEvents","clone","processSuccess","processFailure","YatthoTextFieldElement","_YatthoTextFieldElement_abortController","inputElement","clearError","error_message","setError","validationElement","validationMessageElement","innerText","ToggleSwitchInputElement"],"mappings":"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"}