solidus_backend_devise_token_auth 2.8.0.alpha.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (801) hide show
  1. checksums.yaml +7 -0
  2. data/.eslintrc +21 -0
  3. data/README.md +42 -0
  4. data/Rakefile +52 -0
  5. data/app/assets/config/solidus_backend_manifest.js +6 -0
  6. data/app/assets/images/solidus-style-guide-logo.png +0 -0
  7. data/app/assets/javascripts/spree/backend/addresses.js +23 -0
  8. data/app/assets/javascripts/spree/backend/adjustments.js +25 -0
  9. data/app/assets/javascripts/spree/backend/admin.js +136 -0
  10. data/app/assets/javascripts/spree/backend/backbone-overrides.js +25 -0
  11. data/app/assets/javascripts/spree/backend/calculator.js +26 -0
  12. data/app/assets/javascripts/spree/backend/checkouts/edit.js +12 -0
  13. data/app/assets/javascripts/spree/backend/collections/index.js +3 -0
  14. data/app/assets/javascripts/spree/backend/collections/line_items.js +9 -0
  15. data/app/assets/javascripts/spree/backend/collections/shipments.js +6 -0
  16. data/app/assets/javascripts/spree/backend/collections/states.js +13 -0
  17. data/app/assets/javascripts/spree/backend/components/editable_table.js +5 -0
  18. data/app/assets/javascripts/spree/backend/components/number_with_currency.js +12 -0
  19. data/app/assets/javascripts/spree/backend/components/sortable_table.js +29 -0
  20. data/app/assets/javascripts/spree/backend/components/tabs.js +67 -0
  21. data/app/assets/javascripts/spree/backend/components/tooltips.js +33 -0
  22. data/app/assets/javascripts/spree/backend/datepicker.js +55 -0
  23. data/app/assets/javascripts/spree/backend/devise_token_auth.js +37 -0
  24. data/app/assets/javascripts/spree/backend/flash.js +20 -0
  25. data/app/assets/javascripts/spree/backend/format_money.js +11 -0
  26. data/app/assets/javascripts/spree/backend/gateway.js +22 -0
  27. data/app/assets/javascripts/spree/backend/handlebars_extensions.js +26 -0
  28. data/app/assets/javascripts/spree/backend/highlight_negative_numbers.js +14 -0
  29. data/app/assets/javascripts/spree/backend/images/index.js +8 -0
  30. data/app/assets/javascripts/spree/backend/images/upload.js +27 -0
  31. data/app/assets/javascripts/spree/backend/locale_selection.js +18 -0
  32. data/app/assets/javascripts/spree/backend/models/address.js +2 -0
  33. data/app/assets/javascripts/spree/backend/models/image_upload.js +76 -0
  34. data/app/assets/javascripts/spree/backend/models/index.js +7 -0
  35. data/app/assets/javascripts/spree/backend/models/line_item.js +11 -0
  36. data/app/assets/javascripts/spree/backend/models/order.js +38 -0
  37. data/app/assets/javascripts/spree/backend/models/payment.js +5 -0
  38. data/app/assets/javascripts/spree/backend/models/shipment.js +27 -0
  39. data/app/assets/javascripts/spree/backend/models/stock_item.js +6 -0
  40. data/app/assets/javascripts/spree/backend/models/taxonomy.js +3 -0
  41. data/app/assets/javascripts/spree/backend/namespaces.js +15 -0
  42. data/app/assets/javascripts/spree/backend/navigation.js +14 -0
  43. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +41 -0
  44. data/app/assets/javascripts/spree/backend/option_value_picker.js +43 -0
  45. data/app/assets/javascripts/spree/backend/orders/cart.js +55 -0
  46. data/app/assets/javascripts/spree/backend/orders/edit.js +6 -0
  47. data/app/assets/javascripts/spree/backend/orders/index.js +2 -0
  48. data/app/assets/javascripts/spree/backend/payments/edit.js +16 -0
  49. data/app/assets/javascripts/spree/backend/payments/new.js +11 -0
  50. data/app/assets/javascripts/spree/backend/product_picker.js +50 -0
  51. data/app/assets/javascripts/spree/backend/progress.js +10 -0
  52. data/app/assets/javascripts/spree/backend/promotions/activation.js +26 -0
  53. data/app/assets/javascripts/spree/backend/promotions.js +35 -0
  54. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +35 -0
  55. data/app/assets/javascripts/spree/backend/routes.js +27 -0
  56. data/app/assets/javascripts/spree/backend/shipments.js +317 -0
  57. data/app/assets/javascripts/spree/backend/spree-select2.js +9 -0
  58. data/app/assets/javascripts/spree/backend/stock_management.js +22 -0
  59. data/app/assets/javascripts/spree/backend/store_credits.js +25 -0
  60. data/app/assets/javascripts/spree/backend/style_guide.js +3 -0
  61. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +56 -0
  62. data/app/assets/javascripts/spree/backend/taxonomy.js +121 -0
  63. data/app/assets/javascripts/spree/backend/taxons.js +70 -0
  64. data/app/assets/javascripts/spree/backend/templates/_image.hbs +5 -0
  65. data/app/assets/javascripts/spree/backend/templates/index.js +18 -0
  66. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +17 -0
  67. data/app/assets/javascripts/spree/backend/templates/orders/details_adjustment_row.hbs +4 -0
  68. data/app/assets/javascripts/spree/backend/templates/orders/line_item.hbs +44 -0
  69. data/app/assets/javascripts/spree/backend/templates/orders/shipment_tracking.hbs +24 -0
  70. data/app/assets/javascripts/spree/backend/templates/orders/shipping_method.hbs +34 -0
  71. data/app/assets/javascripts/spree/backend/templates/products/sortable.hbs +5 -0
  72. data/app/assets/javascripts/spree/backend/templates/products/upload_progress.hbs +14 -0
  73. data/app/assets/javascripts/spree/backend/templates/promotions/calculators/fields/tiered_flat_rate.hbs +23 -0
  74. data/app/assets/javascripts/spree/backend/templates/promotions/calculators/fields/tiered_percent.hbs +23 -0
  75. data/app/assets/javascripts/spree/backend/templates/promotions/rules/option_values.hbs +12 -0
  76. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +35 -0
  77. data/app/assets/javascripts/spree/backend/templates/taxons/_tree.hbs +22 -0
  78. data/app/assets/javascripts/spree/backend/templates/taxons/tree.hbs +1 -0
  79. data/app/assets/javascripts/spree/backend/templates/variants/autocomplete.hbs +19 -0
  80. data/app/assets/javascripts/spree/backend/templates/variants/autocomplete_stock.hbs +56 -0
  81. data/app/assets/javascripts/spree/backend/templates/variants/line_items_autocomplete_stock.hbs +26 -0
  82. data/app/assets/javascripts/spree/backend/templates/variants/split.hbs +27 -0
  83. data/app/assets/javascripts/spree/backend/translation.js +40 -0
  84. data/app/assets/javascripts/spree/backend/turbolinks-integration.js +21 -0
  85. data/app/assets/javascripts/spree/backend/user_picker.js +49 -0
  86. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +54 -0
  87. data/app/assets/javascripts/spree/backend/views/calculators/tiered.js +54 -0
  88. data/app/assets/javascripts/spree/backend/views/cart/add_line_item_button.js +19 -0
  89. data/app/assets/javascripts/spree/backend/views/cart/line_item_row.js +89 -0
  90. data/app/assets/javascripts/spree/backend/views/cart/line_item_table.js +11 -0
  91. data/app/assets/javascripts/spree/backend/views/images/upload_progress.js +48 -0
  92. data/app/assets/javascripts/spree/backend/views/images/upload_zone.js +39 -0
  93. data/app/assets/javascripts/spree/backend/views/index.js +25 -0
  94. data/app/assets/javascripts/spree/backend/views/number_with_currency.js +31 -0
  95. data/app/assets/javascripts/spree/backend/views/order/address.js +48 -0
  96. data/app/assets/javascripts/spree/backend/views/order/customer_details.js +67 -0
  97. data/app/assets/javascripts/spree/backend/views/order/customer_select.js +54 -0
  98. data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +39 -0
  99. data/app/assets/javascripts/spree/backend/views/order/details_total.js +12 -0
  100. data/app/assets/javascripts/spree/backend/views/order/shipment_tracking.js +46 -0
  101. data/app/assets/javascripts/spree/backend/views/order/shipping_method.js +57 -0
  102. data/app/assets/javascripts/spree/backend/views/order/summary.js +36 -0
  103. data/app/assets/javascripts/spree/backend/views/payment/edit_credit_card.js +23 -0
  104. data/app/assets/javascripts/spree/backend/views/payment/new.js +25 -0
  105. data/app/assets/javascripts/spree/backend/views/payment/payment_row.js +36 -0
  106. data/app/assets/javascripts/spree/backend/views/promotions/option_values_rule.js +79 -0
  107. data/app/assets/javascripts/spree/backend/views/state_select.js +71 -0
  108. data/app/assets/javascripts/spree/backend/views/stock/add_stock_item.js +74 -0
  109. data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +90 -0
  110. data/app/assets/javascripts/spree/backend/views/tables/editable_table.js +15 -0
  111. data/app/assets/javascripts/spree/backend/views/tables/editable_table_row.js +61 -0
  112. data/app/assets/javascripts/spree/backend/views/zones/form.js +16 -0
  113. data/app/assets/javascripts/spree/backend/zone.js +8 -0
  114. data/app/assets/javascripts/spree/backend.js +66 -0
  115. data/app/assets/stylesheets/spree/backend/_bootstrap_custom.scss +83 -0
  116. data/app/assets/stylesheets/spree/backend/components/_actions.scss +29 -0
  117. data/app/assets/stylesheets/spree/backend/components/_breadcrumb.scss +4 -0
  118. data/app/assets/stylesheets/spree/backend/components/_editable_table.scss +36 -0
  119. data/app/assets/stylesheets/spree/backend/components/_hint.scss +3 -0
  120. data/app/assets/stylesheets/spree/backend/components/_image_placeholder.scss +24 -0
  121. data/app/assets/stylesheets/spree/backend/components/_list_group.scss +26 -0
  122. data/app/assets/stylesheets/spree/backend/components/_messages.scss +57 -0
  123. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +195 -0
  124. data/app/assets/stylesheets/spree/backend/components/_number_with_currency.scss +45 -0
  125. data/app/assets/stylesheets/spree/backend/components/_pills.scss +92 -0
  126. data/app/assets/stylesheets/spree/backend/components/_progress.scss +58 -0
  127. data/app/assets/stylesheets/spree/backend/components/_sidebar.scss +18 -0
  128. data/app/assets/stylesheets/spree/backend/components/_states.scss +11 -0
  129. data/app/assets/stylesheets/spree/backend/components/_stock_table.scss +29 -0
  130. data/app/assets/stylesheets/spree/backend/components/_table-filter.scss +20 -0
  131. data/app/assets/stylesheets/spree/backend/components/_tabs.scss +112 -0
  132. data/app/assets/stylesheets/spree/backend/globals/_deprecation.scss +17 -0
  133. data/app/assets/stylesheets/spree/backend/globals/_functions.scss +25 -0
  134. data/app/assets/stylesheets/spree/backend/globals/_mixins.css +2 -0
  135. data/app/assets/stylesheets/spree/backend/globals/_variables.scss +148 -0
  136. data/app/assets/stylesheets/spree/backend/globals/_variables_override.scss +7 -0
  137. data/app/assets/stylesheets/spree/backend/globals/mixins/_caret.scss +35 -0
  138. data/app/assets/stylesheets/spree/backend/globals/mixins/_line_through.scss +23 -0
  139. data/app/assets/stylesheets/spree/backend/plugins/_bootstrap_tooltip.scss +43 -0
  140. data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +119 -0
  141. data/app/assets/stylesheets/spree/backend/plugins/_sortable.scss +3 -0
  142. data/app/assets/stylesheets/spree/backend/sections/_adjustments.scss +3 -0
  143. data/app/assets/stylesheets/spree/backend/sections/_bulk_transfer.scss +8 -0
  144. data/app/assets/stylesheets/spree/backend/sections/_image_settings.scss +3 -0
  145. data/app/assets/stylesheets/spree/backend/sections/_log_entries.scss +17 -0
  146. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +77 -0
  147. data/app/assets/stylesheets/spree/backend/sections/_products.scss +61 -0
  148. data/app/assets/stylesheets/spree/backend/sections/_promotions.scss +149 -0
  149. data/app/assets/stylesheets/spree/backend/sections/_return_authorizations.scss +12 -0
  150. data/app/assets/stylesheets/spree/backend/sections/_stock_management.scss +92 -0
  151. data/app/assets/stylesheets/spree/backend/sections/_store_credits.scss +29 -0
  152. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +141 -0
  153. data/app/assets/stylesheets/spree/backend/sections/_taxonomies.scss +37 -0
  154. data/app/assets/stylesheets/spree/backend/sections/_taxons.scss +5 -0
  155. data/app/assets/stylesheets/spree/backend/sections/_users.scss +5 -0
  156. data/app/assets/stylesheets/spree/backend/sections/_variants.scss +5 -0
  157. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +215 -0
  158. data/app/assets/stylesheets/spree/backend/shared/_header.scss +32 -0
  159. data/app/assets/stylesheets/spree/backend/shared/_icons.scss +55 -0
  160. data/app/assets/stylesheets/spree/backend/shared/_images.scss +7 -0
  161. data/app/assets/stylesheets/spree/backend/shared/_layout.scss +40 -0
  162. data/app/assets/stylesheets/spree/backend/shared/_tables.scss +126 -0
  163. data/app/assets/stylesheets/spree/backend/shared/_typography.scss +109 -0
  164. data/app/assets/stylesheets/spree/backend/shared/_utilities.scss +47 -0
  165. data/app/assets/stylesheets/spree/backend/spree_admin.scss +54 -0
  166. data/app/assets/stylesheets/spree/backend/themes/blue_steel/globals/_variables_override.scss +25 -0
  167. data/app/assets/stylesheets/spree/backend.css +11 -0
  168. data/app/controllers/spree/admin/adjustment_reasons_controller.rb +8 -0
  169. data/app/controllers/spree/admin/adjustments_controller.rb +47 -0
  170. data/app/controllers/spree/admin/base_controller.rb +59 -0
  171. data/app/controllers/spree/admin/cancellations_controller.rb +46 -0
  172. data/app/controllers/spree/admin/customer_returns_controller.rb +76 -0
  173. data/app/controllers/spree/admin/dashboards_controller.rb +8 -0
  174. data/app/controllers/spree/admin/general_settings_controller.rb +11 -0
  175. data/app/controllers/spree/admin/images_controller.rb +35 -0
  176. data/app/controllers/spree/admin/locale_controller.rb +24 -0
  177. data/app/controllers/spree/admin/log_entries_controller.rb +20 -0
  178. data/app/controllers/spree/admin/option_types_controller.rb +41 -0
  179. data/app/controllers/spree/admin/option_values_controller.rb +13 -0
  180. data/app/controllers/spree/admin/orders/customer_details_controller.rb +74 -0
  181. data/app/controllers/spree/admin/orders_controller.rb +192 -0
  182. data/app/controllers/spree/admin/payment_methods_controller.rb +86 -0
  183. data/app/controllers/spree/admin/payments_controller.rb +123 -0
  184. data/app/controllers/spree/admin/prices_controller.rb +28 -0
  185. data/app/controllers/spree/admin/product_properties_controller.rb +29 -0
  186. data/app/controllers/spree/admin/products_controller.rb +143 -0
  187. data/app/controllers/spree/admin/promotion_actions_controller.rb +51 -0
  188. data/app/controllers/spree/admin/promotion_categories_controller.rb +8 -0
  189. data/app/controllers/spree/admin/promotion_code_batches_controller.rb +30 -0
  190. data/app/controllers/spree/admin/promotion_codes_controller.rb +25 -0
  191. data/app/controllers/spree/admin/promotion_rules_controller.rb +61 -0
  192. data/app/controllers/spree/admin/promotions_controller.rb +67 -0
  193. data/app/controllers/spree/admin/properties_controller.rb +27 -0
  194. data/app/controllers/spree/admin/refund_reasons_controller.rb +8 -0
  195. data/app/controllers/spree/admin/refunds_controller.rb +40 -0
  196. data/app/controllers/spree/admin/reimbursement_types_controller.rb +8 -0
  197. data/app/controllers/spree/admin/reimbursements_controller.rb +69 -0
  198. data/app/controllers/spree/admin/resource_controller.rb +292 -0
  199. data/app/controllers/spree/admin/return_authorizations_controller.rb +62 -0
  200. data/app/controllers/spree/admin/return_items_controller.rb +18 -0
  201. data/app/controllers/spree/admin/return_reasons_controller.rb +8 -0
  202. data/app/controllers/spree/admin/root_controller.rb +31 -0
  203. data/app/controllers/spree/admin/search_controller.rb +39 -0
  204. data/app/controllers/spree/admin/shipping_categories_controller.rb +8 -0
  205. data/app/controllers/spree/admin/shipping_methods_controller.rb +48 -0
  206. data/app/controllers/spree/admin/stock_items_controller.rb +63 -0
  207. data/app/controllers/spree/admin/stock_locations_controller.rb +18 -0
  208. data/app/controllers/spree/admin/stock_movements_controller.rb +23 -0
  209. data/app/controllers/spree/admin/store_credits_controller.rb +118 -0
  210. data/app/controllers/spree/admin/stores_controller.rb +25 -0
  211. data/app/controllers/spree/admin/style_guide_controller.rb +43 -0
  212. data/app/controllers/spree/admin/tax_categories_controller.rb +8 -0
  213. data/app/controllers/spree/admin/tax_rates_controller.rb +17 -0
  214. data/app/controllers/spree/admin/taxonomies_controller.rb +17 -0
  215. data/app/controllers/spree/admin/taxons_controller.rb +82 -0
  216. data/app/controllers/spree/admin/users_controller.rb +156 -0
  217. data/app/controllers/spree/admin/variant_property_rule_values_controller.rb +9 -0
  218. data/app/controllers/spree/admin/variants_controller.rb +51 -0
  219. data/app/controllers/spree/admin/variants_including_master_controller.rb +15 -0
  220. data/app/controllers/spree/admin/zones_controller.rb +28 -0
  221. data/app/helpers/spree/admin/adjustments_helper.rb +46 -0
  222. data/app/helpers/spree/admin/base_helper.rb +138 -0
  223. data/app/helpers/spree/admin/customer_returns_helper.rb +11 -0
  224. data/app/helpers/spree/admin/navigation_helper.rb +191 -0
  225. data/app/helpers/spree/admin/orders_helper.rb +65 -0
  226. data/app/helpers/spree/admin/payments_helper.rb +12 -0
  227. data/app/helpers/spree/admin/products_helper.rb +11 -0
  228. data/app/helpers/spree/admin/reimbursement_type_helper.rb +11 -0
  229. data/app/helpers/spree/admin/stock_locations_helper.rb +13 -0
  230. data/app/helpers/spree/admin/stock_movements_helper.rb +26 -0
  231. data/app/helpers/spree/admin/store_credit_events_helper.rb +86 -0
  232. data/app/helpers/spree/promotion_rules_helper.rb +12 -0
  233. data/app/models/spree/backend_configuration.rb +118 -0
  234. data/app/views/kaminari/solidus_admin/_first_page.html.erb +3 -0
  235. data/app/views/kaminari/solidus_admin/_gap.html.erb +3 -0
  236. data/app/views/kaminari/solidus_admin/_last_page.html.erb +3 -0
  237. data/app/views/kaminari/solidus_admin/_next_page.html.erb +3 -0
  238. data/app/views/kaminari/solidus_admin/_page.html.erb +9 -0
  239. data/app/views/kaminari/solidus_admin/_paginator.html.erb +15 -0
  240. data/app/views/kaminari/solidus_admin/_prev_page.html.erb +3 -0
  241. data/app/views/spree/admin/adjustment_reasons/edit.html.erb +15 -0
  242. data/app/views/spree/admin/adjustment_reasons/index.html.erb +53 -0
  243. data/app/views/spree/admin/adjustment_reasons/new.html.erb +18 -0
  244. data/app/views/spree/admin/adjustment_reasons/shared/_form.html.erb +20 -0
  245. data/app/views/spree/admin/adjustments/_adjustment.html.erb +24 -0
  246. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +27 -0
  247. data/app/views/spree/admin/adjustments/_form.html.erb +28 -0
  248. data/app/views/spree/admin/adjustments/edit.html.erb +19 -0
  249. data/app/views/spree/admin/adjustments/index.html.erb +23 -0
  250. data/app/views/spree/admin/adjustments/new.html.erb +21 -0
  251. data/app/views/spree/admin/cancellations/index.html.erb +57 -0
  252. data/app/views/spree/admin/customer_returns/_reimbursements_table.html.erb +39 -0
  253. data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +70 -0
  254. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +63 -0
  255. data/app/views/spree/admin/customer_returns/edit.html.erb +63 -0
  256. data/app/views/spree/admin/customer_returns/index.html.erb +52 -0
  257. data/app/views/spree/admin/customer_returns/new.html.erb +56 -0
  258. data/app/views/spree/admin/dashboards/home.html.erb +1 -0
  259. data/app/views/spree/admin/images/_form.html.erb +20 -0
  260. data/app/views/spree/admin/images/_image_row.html.erb +52 -0
  261. data/app/views/spree/admin/images/_new.html.erb +12 -0
  262. data/app/views/spree/admin/images/create.js.erb +12 -0
  263. data/app/views/spree/admin/images/edit.html.erb +33 -0
  264. data/app/views/spree/admin/images/index.html.erb +74 -0
  265. data/app/views/spree/admin/images/new.html.erb +1 -0
  266. data/app/views/spree/admin/log_entries/index.html.erb +29 -0
  267. data/app/views/spree/admin/option_types/_form.html.erb +17 -0
  268. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +11 -0
  269. data/app/views/spree/admin/option_types/edit.html.erb +42 -0
  270. data/app/views/spree/admin/option_types/index.html.erb +55 -0
  271. data/app/views/spree/admin/option_types/new.html.erb +9 -0
  272. data/app/views/spree/admin/option_types/new.js.erb +2 -0
  273. data/app/views/spree/admin/orders/_add_product.html.erb +12 -0
  274. data/app/views/spree/admin/orders/_adjustments.html.erb +19 -0
  275. data/app/views/spree/admin/orders/_carton.html.erb +97 -0
  276. data/app/views/spree/admin/orders/_carton_manifest.html.erb +23 -0
  277. data/app/views/spree/admin/orders/_form.html.erb +19 -0
  278. data/app/views/spree/admin/orders/_line_items.html.erb +24 -0
  279. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +13 -0
  280. data/app/views/spree/admin/orders/_order_details.html.erb +32 -0
  281. data/app/views/spree/admin/orders/_risk_analysis.html.erb +50 -0
  282. data/app/views/spree/admin/orders/_shipment.html.erb +68 -0
  283. data/app/views/spree/admin/orders/_shipment_manifest.html.erb +32 -0
  284. data/app/views/spree/admin/orders/cart.html.erb +27 -0
  285. data/app/views/spree/admin/orders/confirm/_customer_details.html.erb +26 -0
  286. data/app/views/spree/admin/orders/confirm/_line_items.html.erb +33 -0
  287. data/app/views/spree/admin/orders/confirm/_payments.html.erb +41 -0
  288. data/app/views/spree/admin/orders/confirm/_shipment.html.erb +56 -0
  289. data/app/views/spree/admin/orders/confirm/_shipment_manifest.html.erb +22 -0
  290. data/app/views/spree/admin/orders/confirm.html.erb +60 -0
  291. data/app/views/spree/admin/orders/confirm_advance.html.erb +11 -0
  292. data/app/views/spree/admin/orders/customer_details/_form.html.erb +85 -0
  293. data/app/views/spree/admin/orders/customer_details/edit.html.erb +22 -0
  294. data/app/views/spree/admin/orders/customer_details/show.html.erb +27 -0
  295. data/app/views/spree/admin/orders/edit.html.erb +35 -0
  296. data/app/views/spree/admin/orders/index.html.erb +199 -0
  297. data/app/views/spree/admin/payment_methods/_form.html.erb +74 -0
  298. data/app/views/spree/admin/payment_methods/edit.html.erb +21 -0
  299. data/app/views/spree/admin/payment_methods/index.html.erb +69 -0
  300. data/app/views/spree/admin/payment_methods/new.html.erb +21 -0
  301. data/app/views/spree/admin/payments/_capture_events.html.erb +19 -0
  302. data/app/views/spree/admin/payments/_form.html.erb +38 -0
  303. data/app/views/spree/admin/payments/_list.html.erb +73 -0
  304. data/app/views/spree/admin/payments/credit.html.erb +18 -0
  305. data/app/views/spree/admin/payments/index.html.erb +33 -0
  306. data/app/views/spree/admin/payments/new.html.erb +25 -0
  307. data/app/views/spree/admin/payments/show.html.erb +22 -0
  308. data/app/views/spree/admin/payments/source_forms/_check.html.erb +0 -0
  309. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +57 -0
  310. data/app/views/spree/admin/payments/source_forms/_storecredit.html.erb +1 -0
  311. data/app/views/spree/admin/payments/source_views/_check.html.erb +0 -0
  312. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +24 -0
  313. data/app/views/spree/admin/payments/source_views/_storecredit.html.erb +28 -0
  314. data/app/views/spree/admin/prices/_form.html.erb +36 -0
  315. data/app/views/spree/admin/prices/_master_variant_table.html.erb +41 -0
  316. data/app/views/spree/admin/prices/_table.html.erb +37 -0
  317. data/app/views/spree/admin/prices/edit.html.erb +14 -0
  318. data/app/views/spree/admin/prices/index.html.erb +76 -0
  319. data/app/views/spree/admin/prices/new.html.erb +11 -0
  320. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +19 -0
  321. data/app/views/spree/admin/product_properties/index.html.erb +96 -0
  322. data/app/views/spree/admin/products/_form.html.erb +195 -0
  323. data/app/views/spree/admin/products/edit.html.erb +21 -0
  324. data/app/views/spree/admin/products/index.html.erb +101 -0
  325. data/app/views/spree/admin/products/new.html.erb +14 -0
  326. data/app/views/spree/admin/promotion_actions/create.js.erb +10 -0
  327. data/app/views/spree/admin/promotion_actions/destroy.js.erb +1 -0
  328. data/app/views/spree/admin/promotion_categories/_form.html.erb +14 -0
  329. data/app/views/spree/admin/promotion_categories/edit.html.erb +11 -0
  330. data/app/views/spree/admin/promotion_categories/index.html.erb +48 -0
  331. data/app/views/spree/admin/promotion_categories/new.html.erb +11 -0
  332. data/app/views/spree/admin/promotion_code_batches/download.csv.ruby +8 -0
  333. data/app/views/spree/admin/promotion_code_batches/index.html.erb +65 -0
  334. data/app/views/spree/admin/promotion_code_batches/new.html.erb +28 -0
  335. data/app/views/spree/admin/promotion_codes/index.csv.ruby +8 -0
  336. data/app/views/spree/admin/promotion_codes/index.html.erb +28 -0
  337. data/app/views/spree/admin/promotion_rules/create.js.erb +8 -0
  338. data/app/views/spree/admin/promotion_rules/destroy.js.erb +3 -0
  339. data/app/views/spree/admin/promotions/_actions.html.erb +36 -0
  340. data/app/views/spree/admin/promotions/_activations_edit.html.erb +22 -0
  341. data/app/views/spree/admin/promotions/_activations_new.html.erb +58 -0
  342. data/app/views/spree/admin/promotions/_form.html.erb +67 -0
  343. data/app/views/spree/admin/promotions/_promotion_action.html.erb +13 -0
  344. data/app/views/spree/admin/promotions/_promotion_rule.html.erb +12 -0
  345. data/app/views/spree/admin/promotions/_rules.html.erb +51 -0
  346. data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +2 -0
  347. data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +6 -0
  348. data/app/views/spree/admin/promotions/actions/_create_quantity_adjustments.html.erb +11 -0
  349. data/app/views/spree/admin/promotions/actions/_free_shipping.html.erb +0 -0
  350. data/app/views/spree/admin/promotions/actions/_promotion_calculators_with_custom_fields.html.erb +29 -0
  351. data/app/views/spree/admin/promotions/calculators/_default_fields.html.erb +6 -0
  352. data/app/views/spree/admin/promotions/calculators/distributed_amount/_fields.html.erb +56 -0
  353. data/app/views/spree/admin/promotions/calculators/flat_rate/_fields.html.erb +6 -0
  354. data/app/views/spree/admin/promotions/calculators/tiered_flat_rate/_fields.html.erb +30 -0
  355. data/app/views/spree/admin/promotions/calculators/tiered_percent/_fields.html.erb +30 -0
  356. data/app/views/spree/admin/promotions/edit.html.erb +33 -0
  357. data/app/views/spree/admin/promotions/index.html.erb +118 -0
  358. data/app/views/spree/admin/promotions/new.html.erb +9 -0
  359. data/app/views/spree/admin/promotions/rules/_first_order.html.erb +0 -0
  360. data/app/views/spree/admin/promotions/rules/_first_repeat_purchase_since.html.erb +13 -0
  361. data/app/views/spree/admin/promotions/rules/_item_total.html.erb +14 -0
  362. data/app/views/spree/admin/promotions/rules/_nth_order.html.erb +12 -0
  363. data/app/views/spree/admin/promotions/rules/_one_use_per_user.html.erb +0 -0
  364. data/app/views/spree/admin/promotions/rules/_option_value.html.erb +13 -0
  365. data/app/views/spree/admin/promotions/rules/_product.html.erb +15 -0
  366. data/app/views/spree/admin/promotions/rules/_store.html.erb +6 -0
  367. data/app/views/spree/admin/promotions/rules/_taxon.html.erb +9 -0
  368. data/app/views/spree/admin/promotions/rules/_user.html.erb +4 -0
  369. data/app/views/spree/admin/promotions/rules/_user_logged_in.html.erb +0 -0
  370. data/app/views/spree/admin/promotions/rules/_user_role.html.erb +12 -0
  371. data/app/views/spree/admin/properties/_form.html.erb +16 -0
  372. data/app/views/spree/admin/properties/edit.html.erb +13 -0
  373. data/app/views/spree/admin/properties/filtered.html.erb +1 -0
  374. data/app/views/spree/admin/properties/index.html.erb +85 -0
  375. data/app/views/spree/admin/properties/new.html.erb +11 -0
  376. data/app/views/spree/admin/properties/new.js.erb +2 -0
  377. data/app/views/spree/admin/refund_reasons/edit.html.erb +18 -0
  378. data/app/views/spree/admin/refund_reasons/index.html.erb +58 -0
  379. data/app/views/spree/admin/refund_reasons/new.html.erb +19 -0
  380. data/app/views/spree/admin/refund_reasons/shared/_form.html.erb +20 -0
  381. data/app/views/spree/admin/refunds/edit.html.erb +29 -0
  382. data/app/views/spree/admin/refunds/new.html.erb +42 -0
  383. data/app/views/spree/admin/reimbursement_types/index.html.erb +27 -0
  384. data/app/views/spree/admin/reimbursements/edit.html.erb +106 -0
  385. data/app/views/spree/admin/reimbursements/index.html.erb +37 -0
  386. data/app/views/spree/admin/reimbursements/show.html.erb +93 -0
  387. data/app/views/spree/admin/return_authorizations/_form.html.erb +93 -0
  388. data/app/views/spree/admin/return_authorizations/edit.html.erb +35 -0
  389. data/app/views/spree/admin/return_authorizations/index.html.erb +57 -0
  390. data/app/views/spree/admin/return_authorizations/new.html.erb +20 -0
  391. data/app/views/spree/admin/return_reasons/edit.html.erb +5 -0
  392. data/app/views/spree/admin/return_reasons/index.html.erb +7 -0
  393. data/app/views/spree/admin/return_reasons/new.html.erb +6 -0
  394. data/app/views/spree/admin/search/products.json.jbuilder +12 -0
  395. data/app/views/spree/admin/search/users.json.jbuilder +39 -0
  396. data/app/views/spree/admin/shared/_address.html.erb +8 -0
  397. data/app/views/spree/admin/shared/_address_form.html.erb +64 -0
  398. data/app/views/spree/admin/shared/_calculator_fields.html.erb +23 -0
  399. data/app/views/spree/admin/shared/_configuration_menu.html.erb +12 -0
  400. data/app/views/spree/admin/shared/_datepicker.html.erb +8 -0
  401. data/app/views/spree/admin/shared/_destroy.js.erb +4 -0
  402. data/app/views/spree/admin/shared/_edit_resource_links.html.erb +4 -0
  403. data/app/views/spree/admin/shared/_flash.html.erb +11 -0
  404. data/app/views/spree/admin/shared/_general_tabs.html.erb +2 -0
  405. data/app/views/spree/admin/shared/_head.html.erb +56 -0
  406. data/app/views/spree/admin/shared/_header.html.erb +9 -0
  407. data/app/views/spree/admin/shared/_image.html.erb +7 -0
  408. data/app/views/spree/admin/shared/_js_locale_data.html.erb +39 -0
  409. data/app/views/spree/admin/shared/_locale_selection.html.erb +15 -0
  410. data/app/views/spree/admin/shared/_menu.html.erb +5 -0
  411. data/app/views/spree/admin/shared/_modal.html.erb +18 -0
  412. data/app/views/spree/admin/shared/_navigation.html.erb +10 -0
  413. data/app/views/spree/admin/shared/_navigation_footer.html.erb +40 -0
  414. data/app/views/spree/admin/shared/_navigation_header.html.erb +5 -0
  415. data/app/views/spree/admin/shared/_new_resource_links.html.erb +4 -0
  416. data/app/views/spree/admin/shared/_no_objects_found.html.erb +4 -0
  417. data/app/views/spree/admin/shared/_number_with_currency.html.erb +20 -0
  418. data/app/views/spree/admin/shared/_order_submenu.html.erb +63 -0
  419. data/app/views/spree/admin/shared/_order_summary.html.erb +69 -0
  420. data/app/views/spree/admin/shared/_order_tabs.html.erb +15 -0
  421. data/app/views/spree/admin/shared/_payments_tabs.html.erb +9 -0
  422. data/app/views/spree/admin/shared/_product_sub_menu.html.erb +17 -0
  423. data/app/views/spree/admin/shared/_product_tabs.html.erb +27 -0
  424. data/app/views/spree/admin/shared/_promotion_sub_menu.html.erb +8 -0
  425. data/app/views/spree/admin/shared/_rebuild_vat_prices_checkbox.html.erb +12 -0
  426. data/app/views/spree/admin/shared/_refunds.html.erb +32 -0
  427. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +21 -0
  428. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +26 -0
  429. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +18 -0
  430. data/app/views/spree/admin/shared/_sidebar.html.erb +10 -0
  431. data/app/views/spree/admin/shared/_spinner.html.erb +6 -0
  432. data/app/views/spree/admin/shared/_table_filter.html.erb +8 -0
  433. data/app/views/spree/admin/shared/_tabs.html.erb +14 -0
  434. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +13 -0
  435. data/app/views/spree/admin/shared/_variant_search.html.erb +26 -0
  436. data/app/views/spree/admin/shared/named_types/_edit.html.erb +19 -0
  437. data/app/views/spree/admin/shared/named_types/_form.html.erb +14 -0
  438. data/app/views/spree/admin/shared/named_types/_index.html.erb +58 -0
  439. data/app/views/spree/admin/shared/named_types/_new.html.erb +19 -0
  440. data/app/views/spree/admin/shared/preference_fields/_boolean.html.erb +14 -0
  441. data/app/views/spree/admin/shared/preference_fields/_decimal.html.erb +12 -0
  442. data/app/views/spree/admin/shared/preference_fields/_integer.html.erb +12 -0
  443. data/app/views/spree/admin/shared/preference_fields/_password.html.erb +12 -0
  444. data/app/views/spree/admin/shared/preference_fields/_string.html.erb +12 -0
  445. data/app/views/spree/admin/shared/preference_fields/_text.html.erb +12 -0
  446. data/app/views/spree/admin/shipping_categories/_form.html.erb +6 -0
  447. data/app/views/spree/admin/shipping_categories/edit.html.erb +19 -0
  448. data/app/views/spree/admin/shipping_categories/index.html.erb +51 -0
  449. data/app/views/spree/admin/shipping_categories/new.html.erb +19 -0
  450. data/app/views/spree/admin/shipping_methods/_form.html.erb +115 -0
  451. data/app/views/spree/admin/shipping_methods/edit.html.erb +28 -0
  452. data/app/views/spree/admin/shipping_methods/index.html.erb +60 -0
  453. data/app/views/spree/admin/shipping_methods/new.html.erb +28 -0
  454. data/app/views/spree/admin/stock_items/_stock_management.html.erb +107 -0
  455. data/app/views/spree/admin/stock_items/destroy.js.erb +1 -0
  456. data/app/views/spree/admin/stock_items/index.html.erb +27 -0
  457. data/app/views/spree/admin/stock_locations/_form.html.erb +134 -0
  458. data/app/views/spree/admin/stock_locations/edit.html.erb +26 -0
  459. data/app/views/spree/admin/stock_locations/index.html.erb +78 -0
  460. data/app/views/spree/admin/stock_locations/new.html.erb +17 -0
  461. data/app/views/spree/admin/stock_movements/index.html.erb +48 -0
  462. data/app/views/spree/admin/store_credits/_form.html.erb +25 -0
  463. data/app/views/spree/admin/store_credits/_update_reason_field.html.erb +7 -0
  464. data/app/views/spree/admin/store_credits/edit_amount.html.erb +32 -0
  465. data/app/views/spree/admin/store_credits/edit_validity.html.erb +26 -0
  466. data/app/views/spree/admin/store_credits/index.html.erb +75 -0
  467. data/app/views/spree/admin/store_credits/new.html.erb +18 -0
  468. data/app/views/spree/admin/store_credits/show.html.erb +106 -0
  469. data/app/views/spree/admin/stores/_form.html.erb +77 -0
  470. data/app/views/spree/admin/stores/edit.html.erb +19 -0
  471. data/app/views/spree/admin/stores/index.html.erb +41 -0
  472. data/app/views/spree/admin/stores/new.html.erb +15 -0
  473. data/app/views/spree/admin/style_guide/index.html.erb +5 -0
  474. data/app/views/spree/admin/style_guide/topics/components/_modals.html.erb +50 -0
  475. data/app/views/spree/admin/style_guide/topics/components/_pills.html.erb +101 -0
  476. data/app/views/spree/admin/style_guide/topics/components/_tabs.html.erb +17 -0
  477. data/app/views/spree/admin/style_guide/topics/forms/_building_forms.html.erb +81 -0
  478. data/app/views/spree/admin/style_guide/topics/forms/_buttons.html.erb +6 -0
  479. data/app/views/spree/admin/style_guide/topics/forms/_helper_text.html.erb +13 -0
  480. data/app/views/spree/admin/style_guide/topics/forms/_inputs.html.erb +96 -0
  481. data/app/views/spree/admin/style_guide/topics/forms/_labels.html.erb +6 -0
  482. data/app/views/spree/admin/style_guide/topics/forms/_validation.html.erb +21 -0
  483. data/app/views/spree/admin/style_guide/topics/layout/_full_width_table_layout.html.erb +10 -0
  484. data/app/views/spree/admin/style_guide/topics/layout/_helpful_layout.html.erb +0 -0
  485. data/app/views/spree/admin/style_guide/topics/layout/_sidebar_layout.html.erb +4 -0
  486. data/app/views/spree/admin/style_guide/topics/messaging/_flashes.html.erb +19 -0
  487. data/app/views/spree/admin/style_guide/topics/messaging/_loading.html.erb +30 -0
  488. data/app/views/spree/admin/style_guide/topics/messaging/_tooltips.html.erb +61 -0
  489. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +63 -0
  490. data/app/views/spree/admin/style_guide/topics/tables/_forms_in_tables.html.erb +4 -0
  491. data/app/views/spree/admin/style_guide/topics/tables/_pagination.html.erb +11 -0
  492. data/app/views/spree/admin/style_guide/topics/typography/_colors.html.erb +64 -0
  493. data/app/views/spree/admin/style_guide/topics/typography/_fonts.html.erb +19 -0
  494. data/app/views/spree/admin/style_guide/topics/typography/_icons.html.erb +13 -0
  495. data/app/views/spree/admin/style_guide/topics/typography/_lists.html.erb +25 -0
  496. data/app/views/spree/admin/tax_categories/_form.html.erb +31 -0
  497. data/app/views/spree/admin/tax_categories/edit.html.erb +19 -0
  498. data/app/views/spree/admin/tax_categories/index.html.erb +63 -0
  499. data/app/views/spree/admin/tax_categories/new.html.erb +20 -0
  500. data/app/views/spree/admin/tax_categories/show.html.erb +1 -0
  501. data/app/views/spree/admin/tax_rates/_form.html.erb +62 -0
  502. data/app/views/spree/admin/tax_rates/edit.html.erb +20 -0
  503. data/app/views/spree/admin/tax_rates/index.html.erb +77 -0
  504. data/app/views/spree/admin/tax_rates/new.html.erb +24 -0
  505. data/app/views/spree/admin/taxonomies/_form.html.erb +7 -0
  506. data/app/views/spree/admin/taxonomies/_list.html.erb +34 -0
  507. data/app/views/spree/admin/taxonomies/_taxon.html.erb +12 -0
  508. data/app/views/spree/admin/taxonomies/edit.html.erb +23 -0
  509. data/app/views/spree/admin/taxonomies/index.html.erb +23 -0
  510. data/app/views/spree/admin/taxonomies/new.html.erb +18 -0
  511. data/app/views/spree/admin/taxons/_form.html.erb +53 -0
  512. data/app/views/spree/admin/taxons/edit.html.erb +19 -0
  513. data/app/views/spree/admin/taxons/index.html.erb +16 -0
  514. data/app/views/spree/admin/taxons/search.json.jbuilder +7 -0
  515. data/app/views/spree/admin/users/_addresses_form.html.erb +21 -0
  516. data/app/views/spree/admin/users/_form.html.erb +78 -0
  517. data/app/views/spree/admin/users/_sidebar.html.erb +20 -0
  518. data/app/views/spree/admin/users/_tabs.html.erb +29 -0
  519. data/app/views/spree/admin/users/_user_page_actions.html.erb +7 -0
  520. data/app/views/spree/admin/users/addresses.html.erb +28 -0
  521. data/app/views/spree/admin/users/edit.html.erb +27 -0
  522. data/app/views/spree/admin/users/index.html.erb +101 -0
  523. data/app/views/spree/admin/users/items.html.erb +81 -0
  524. data/app/views/spree/admin/users/new.html.erb +16 -0
  525. data/app/views/spree/admin/users/orders.html.erb +82 -0
  526. data/app/views/spree/admin/variants/_form.html.erb +103 -0
  527. data/app/views/spree/admin/variants/_table.html.erb +48 -0
  528. data/app/views/spree/admin/variants/_table_filter.html.erb +29 -0
  529. data/app/views/spree/admin/variants/edit.html.erb +21 -0
  530. data/app/views/spree/admin/variants/index.html.erb +43 -0
  531. data/app/views/spree/admin/variants/new.html.erb +12 -0
  532. data/app/views/spree/admin/variants/update.js.erb +1 -0
  533. data/app/views/spree/admin/zones/_country_members.html.erb +10 -0
  534. data/app/views/spree/admin/zones/_form.html.erb +44 -0
  535. data/app/views/spree/admin/zones/_state_members.html.erb +10 -0
  536. data/app/views/spree/admin/zones/edit.html.erb +15 -0
  537. data/app/views/spree/admin/zones/index.html.erb +56 -0
  538. data/app/views/spree/admin/zones/new.html.erb +17 -0
  539. data/app/views/spree/layouts/admin.html.erb +27 -0
  540. data/app/views/spree/layouts/admin_style_guide.html.erb +58 -0
  541. data/config/initializers/assets.rb +3 -0
  542. data/config/initializers/form_builder.rb +22 -0
  543. data/config/routes.rb +190 -0
  544. data/lib/solidus_backend.rb +3 -0
  545. data/lib/spree/backend/action_callbacks.rb +27 -0
  546. data/lib/spree/backend/callbacks.rb +52 -0
  547. data/lib/spree/backend/engine.rb +13 -0
  548. data/lib/spree/backend.rb +18 -0
  549. data/lib/spree_backend.rb +3 -0
  550. data/script/rails +10 -0
  551. data/solidus_backend.gemspec +38 -0
  552. data/spec/controllers/spree/admin/base_controller_spec.rb +26 -0
  553. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +79 -0
  554. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +235 -0
  555. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +18 -0
  556. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +80 -0
  557. data/spec/controllers/spree/admin/orders_controller_spec.rb +408 -0
  558. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +95 -0
  559. data/spec/controllers/spree/admin/payments_controller_spec.rb +194 -0
  560. data/spec/controllers/spree/admin/prices_controller_spec.rb +45 -0
  561. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +71 -0
  562. data/spec/controllers/spree/admin/products_controller_spec.rb +270 -0
  563. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +23 -0
  564. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +20 -0
  565. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +36 -0
  566. data/spec/controllers/spree/admin/promotions_controller_spec.rb +122 -0
  567. data/spec/controllers/spree/admin/refunds_controller_spec.rb +35 -0
  568. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +126 -0
  569. data/spec/controllers/spree/admin/resource_controller_spec.rb +168 -0
  570. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +291 -0
  571. data/spec/controllers/spree/admin/return_items_controller_spec.rb +29 -0
  572. data/spec/controllers/spree/admin/root_controller_spec.rb +43 -0
  573. data/spec/controllers/spree/admin/search_controller_spec.rb +106 -0
  574. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +16 -0
  575. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +52 -0
  576. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +44 -0
  577. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +311 -0
  578. data/spec/controllers/spree/admin/users_controller_spec.rb +249 -0
  579. data/spec/controllers/spree/admin/variants_controller_spec.rb +71 -0
  580. data/spec/features/admin/configuration/payment_methods_spec.rb +167 -0
  581. data/spec/features/admin/configuration/shipping_methods_spec.rb +114 -0
  582. data/spec/features/admin/configuration/stock_locations_spec.rb +54 -0
  583. data/spec/features/admin/configuration/store_spec.rb +62 -0
  584. data/spec/features/admin/configuration/tax_categories_spec.rb +58 -0
  585. data/spec/features/admin/configuration/tax_rates_spec.rb +31 -0
  586. data/spec/features/admin/configuration/taxonomies_spec.rb +54 -0
  587. data/spec/features/admin/configuration/zones_spec.rb +41 -0
  588. data/spec/features/admin/homepage_spec.rb +86 -0
  589. data/spec/features/admin/javascript_format_money_spec.rb +22 -0
  590. data/spec/features/admin/locale_spec.rb +35 -0
  591. data/spec/features/admin/orders/adjustments_promotions_spec.rb +55 -0
  592. data/spec/features/admin/orders/adjustments_spec.rb +130 -0
  593. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +46 -0
  594. data/spec/features/admin/orders/cancelling_inventory_spec.rb +50 -0
  595. data/spec/features/admin/orders/customer_details_spec.rb +206 -0
  596. data/spec/features/admin/orders/line_items_spec.rb +52 -0
  597. data/spec/features/admin/orders/listing_spec.rb +191 -0
  598. data/spec/features/admin/orders/log_entries_spec.rb +56 -0
  599. data/spec/features/admin/orders/new_order_spec.rb +216 -0
  600. data/spec/features/admin/orders/order_details_spec.rb +572 -0
  601. data/spec/features/admin/orders/payments_spec.rb +289 -0
  602. data/spec/features/admin/orders/return_authorizations_spec.rb +27 -0
  603. data/spec/features/admin/orders/return_payment_state_spec.rb +62 -0
  604. data/spec/features/admin/orders/risk_analysis_spec.rb +49 -0
  605. data/spec/features/admin/orders/shipments_spec.rb +145 -0
  606. data/spec/features/admin/payments/store_credits_spec.rb +23 -0
  607. data/spec/features/admin/products/edit/images_spec.rb +76 -0
  608. data/spec/features/admin/products/edit/products_spec.rb +67 -0
  609. data/spec/features/admin/products/edit/taxons_spec.rb +47 -0
  610. data/spec/features/admin/products/edit/variants_spec.rb +63 -0
  611. data/spec/features/admin/products/option_types_spec.rb +116 -0
  612. data/spec/features/admin/products/pricing_spec.rb +109 -0
  613. data/spec/features/admin/products/products_spec.rb +336 -0
  614. data/spec/features/admin/products/properties_spec.rb +141 -0
  615. data/spec/features/admin/products/stock_management_spec.rb +84 -0
  616. data/spec/features/admin/products/variant_spec.rb +89 -0
  617. data/spec/features/admin/promotion_adjustments_spec.rb +277 -0
  618. data/spec/features/admin/promotions/option_value_rule_spec.rb +97 -0
  619. data/spec/features/admin/promotions/product_rule_spec.rb +35 -0
  620. data/spec/features/admin/promotions/promotion_categories_spec.rb +83 -0
  621. data/spec/features/admin/promotions/tiered_calculator_spec.rb +76 -0
  622. data/spec/features/admin/promotions/user_rule_spec.rb +44 -0
  623. data/spec/features/admin/reimbursements_spec.rb +18 -0
  624. data/spec/features/admin/store_credits_spec.rb +83 -0
  625. data/spec/features/admin/stores_spec.rb +37 -0
  626. data/spec/features/admin/style_guide_spec.rb +14 -0
  627. data/spec/features/admin/taxons_spec.rb +78 -0
  628. data/spec/features/admin/users_spec.rb +338 -0
  629. data/spec/helpers/admin/base_helper_spec.rb +49 -0
  630. data/spec/helpers/admin/navigation_helper_spec.rb +137 -0
  631. data/spec/helpers/admin/stock_movements_helper_spec.rb +29 -0
  632. data/spec/helpers/admin/store_credit_events_helper_spec.rb +97 -0
  633. data/spec/helpers/promotion_rules_helper_spec.rb +14 -0
  634. data/spec/javascripts/fixtures/_boot.html.erb +8 -0
  635. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +3 -0
  636. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +3 -0
  637. data/spec/javascripts/format_money_spec.js +48 -0
  638. data/spec/javascripts/spec_helper.js +11 -0
  639. data/spec/javascripts/support/show_errors.js +8 -0
  640. data/spec/javascripts/support/with_translations.js +11 -0
  641. data/spec/javascripts/translation_spec.js +58 -0
  642. data/spec/javascripts/views/number_with_currency_spec.js +72 -0
  643. data/spec/spec_helper.rb +123 -0
  644. data/spec/support/appear_before_matcher.rb +10 -0
  645. data/spec/support/feature/base_feature_helper.rb +12 -0
  646. data/spec/support/feature/order_feature_helper.rb +27 -0
  647. data/spec/support/ror_ringer.jpeg +0 -0
  648. data/spec/teaspoon_env.rb +66 -0
  649. data/spec/test_views/spree/admin/widgets/edit.html.erb +1 -0
  650. data/spec/test_views/spree/admin/widgets/new.html.erb +1 -0
  651. data/spec/views/spree/admin/shared/navigation_footer_spec.rb +67 -0
  652. data/vendor/assets/images/solidus_admin/select2-spinner.gif +0 -0
  653. data/vendor/assets/images/solidus_admin/select2.png +0 -0
  654. data/vendor/assets/images/solidus_admin/select2x2.png +0 -0
  655. data/vendor/assets/javascripts/jquery.sticky-kit.min.js +10 -0
  656. data/vendor/assets/javascripts/prism.js +7 -0
  657. data/vendor/assets/javascripts/solidus_admin/Sortable.js +1540 -0
  658. data/vendor/assets/javascripts/solidus_admin/accounting.js +4 -0
  659. data/vendor/assets/javascripts/solidus_admin/backbone-nested-models.js +193 -0
  660. data/vendor/assets/javascripts/solidus_admin/backbone.js +1920 -0
  661. data/vendor/assets/javascripts/solidus_admin/bind-polyfill.js +28 -0
  662. data/vendor/assets/javascripts/solidus_admin/bootstrap.js +3893 -0
  663. data/vendor/assets/javascripts/solidus_admin/flatpickr/flatpickr.js +2218 -0
  664. data/vendor/assets/javascripts/solidus_admin/popover.js +4 -0
  665. data/vendor/assets/javascripts/solidus_admin/select2.js +3729 -0
  666. data/vendor/assets/javascripts/solidus_admin/select2_locales/index.js +1 -0
  667. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ar.js +19 -0
  668. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_az.js +20 -0
  669. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_bg.js +20 -0
  670. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ca.js +19 -0
  671. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_cs.js +51 -0
  672. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_da.js +19 -0
  673. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_de.js +18 -0
  674. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_el.js +19 -0
  675. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_en-US.js +10 -0
  676. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_es-MX.js +19 -0
  677. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_es.js +19 -0
  678. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_et.js +19 -0
  679. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_eu.js +45 -0
  680. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_fa.js +21 -0
  681. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_fi.js +30 -0
  682. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_fr.js +18 -0
  683. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_gl.js +45 -0
  684. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_he.js +19 -0
  685. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_hr.js +24 -0
  686. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_hu.js +17 -0
  687. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_id.js +21 -0
  688. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_is.js +17 -0
  689. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_it.js +17 -0
  690. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ja.js +17 -0
  691. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ka.js +19 -0
  692. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ko.js +19 -0
  693. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_lt.js +26 -0
  694. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_lv.js +19 -0
  695. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_mk.js +19 -0
  696. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ms.js +21 -0
  697. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_nb.js +22 -0
  698. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_nl.js +17 -0
  699. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_pl.js +54 -0
  700. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_pt-BR.js +18 -0
  701. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_pt-PT.js +17 -0
  702. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ro.js +17 -0
  703. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_rs.js +19 -0
  704. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ru.js +23 -0
  705. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_sk.js +50 -0
  706. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_sv.js +19 -0
  707. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_th.js +19 -0
  708. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_tr.js +20 -0
  709. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_ug-CN.js +16 -0
  710. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_uk.js +25 -0
  711. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_vi.js +20 -0
  712. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_zh-CN.js +16 -0
  713. data/vendor/assets/javascripts/solidus_admin/select2_locales/select2_locale_zh-TW.js +16 -0
  714. data/vendor/assets/javascripts/solidus_admin/underscore.js +1548 -0
  715. data/vendor/assets/stylesheets/prism.css +139 -0
  716. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_alert.scss +51 -0
  717. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_badge.scss +47 -0
  718. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_breadcrumb.scss +38 -0
  719. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_button-group.scss +166 -0
  720. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_buttons.scss +143 -0
  721. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_card.scss +270 -0
  722. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_carousel.scss +191 -0
  723. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_close.scss +34 -0
  724. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_code.scss +56 -0
  725. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_custom-forms.scss +297 -0
  726. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_dropdown.scss +131 -0
  727. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_forms.scss +333 -0
  728. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_functions.scss +86 -0
  729. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_grid.scss +52 -0
  730. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_images.scss +42 -0
  731. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_input-group.scss +159 -0
  732. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_jumbotron.scss +16 -0
  733. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_list-group.scss +115 -0
  734. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_media.scss +8 -0
  735. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_mixins.scss +42 -0
  736. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_modal.scss +168 -0
  737. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_nav.scss +118 -0
  738. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_navbar.scss +311 -0
  739. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_pagination.scss +77 -0
  740. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_popover.scss +183 -0
  741. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_print.scss +124 -0
  742. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_progress.scss +33 -0
  743. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_reboot.scss +482 -0
  744. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_root.scss +19 -0
  745. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_tables.scss +180 -0
  746. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_tooltip.scss +115 -0
  747. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_transitions.scss +36 -0
  748. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_type.scss +125 -0
  749. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_utilities.scss +14 -0
  750. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_variables.scss +894 -0
  751. data/vendor/assets/stylesheets/solidus_admin/bootstrap/bootstrap-grid.scss +32 -0
  752. data/vendor/assets/stylesheets/solidus_admin/bootstrap/bootstrap-reboot.scss +12 -0
  753. data/vendor/assets/stylesheets/solidus_admin/bootstrap/bootstrap.scss +42 -0
  754. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_alert.scss +13 -0
  755. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_background-variant.scss +21 -0
  756. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_badge.scss +12 -0
  757. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_border-radius.scss +35 -0
  758. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_box-shadow.scss +5 -0
  759. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_breakpoints.scss +123 -0
  760. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_buttons.scss +109 -0
  761. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_caret.scss +65 -0
  762. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_clearfix.scss +7 -0
  763. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_float.scss +11 -0
  764. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_forms.scss +137 -0
  765. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_gradients.scss +45 -0
  766. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_grid-framework.scss +67 -0
  767. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_grid.scss +52 -0
  768. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_hover.scss +39 -0
  769. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_image.scss +36 -0
  770. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_list-group.scss +21 -0
  771. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_lists.scss +7 -0
  772. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_nav-divider.scss +10 -0
  773. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_navbar-align.scss +10 -0
  774. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_pagination.scss +22 -0
  775. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_reset-text.scss +17 -0
  776. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_resize.scss +6 -0
  777. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_screen-reader.scss +35 -0
  778. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_size.scss +6 -0
  779. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_table-row.scss +30 -0
  780. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_text-emphasis.scss +14 -0
  781. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_text-hide.scss +9 -0
  782. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_text-truncate.scss +8 -0
  783. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_transition.scss +9 -0
  784. data/vendor/assets/stylesheets/solidus_admin/bootstrap/mixins/_visibility.scss +7 -0
  785. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_align.scss +8 -0
  786. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_background.scss +19 -0
  787. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_borders.scss +59 -0
  788. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_clearfix.scss +3 -0
  789. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_display.scss +38 -0
  790. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_embed.scss +52 -0
  791. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_flex.scss +46 -0
  792. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_float.scss +9 -0
  793. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_position.scss +36 -0
  794. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_screenreaders.scss +11 -0
  795. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_sizing.scss +12 -0
  796. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_spacing.scss +51 -0
  797. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_text.scss +52 -0
  798. data/vendor/assets/stylesheets/solidus_admin/bootstrap/utilities/_visibility.scss +11 -0
  799. data/vendor/assets/stylesheets/solidus_admin/flatpickr/flatpickr.css +857 -0
  800. data/vendor/assets/stylesheets/solidus_admin/select2.scss +692 -0
  801. metadata +998 -0
@@ -0,0 +1,3893 @@
1
+ /*!
2
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
3
+ * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8
+ typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9
+ (factory((global.bootstrap = {}),global.jQuery,global.Popper));
10
+ }(this, (function (exports,$,Popper) { 'use strict';
11
+
12
+ $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
+ Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
+
15
+ function _defineProperties(target, props) {
16
+ for (var i = 0; i < props.length; i++) {
17
+ var descriptor = props[i];
18
+ descriptor.enumerable = descriptor.enumerable || false;
19
+ descriptor.configurable = true;
20
+ if ("value" in descriptor) descriptor.writable = true;
21
+ Object.defineProperty(target, descriptor.key, descriptor);
22
+ }
23
+ }
24
+
25
+ function _createClass(Constructor, protoProps, staticProps) {
26
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
+ if (staticProps) _defineProperties(Constructor, staticProps);
28
+ return Constructor;
29
+ }
30
+
31
+ function _extends() {
32
+ _extends = Object.assign || function (target) {
33
+ for (var i = 1; i < arguments.length; i++) {
34
+ var source = arguments[i];
35
+
36
+ for (var key in source) {
37
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
38
+ target[key] = source[key];
39
+ }
40
+ }
41
+ }
42
+
43
+ return target;
44
+ };
45
+
46
+ return _extends.apply(this, arguments);
47
+ }
48
+
49
+ function _inheritsLoose(subClass, superClass) {
50
+ subClass.prototype = Object.create(superClass.prototype);
51
+ subClass.prototype.constructor = subClass;
52
+ subClass.__proto__ = superClass;
53
+ }
54
+
55
+ /**
56
+ * --------------------------------------------------------------------------
57
+ * Bootstrap (v4.0.0): util.js
58
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
59
+ * --------------------------------------------------------------------------
60
+ */
61
+
62
+ var Util = function ($$$1) {
63
+ /**
64
+ * ------------------------------------------------------------------------
65
+ * Private TransitionEnd Helpers
66
+ * ------------------------------------------------------------------------
67
+ */
68
+ var transition = false;
69
+ var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
70
+
71
+ function toType(obj) {
72
+ return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
73
+ }
74
+
75
+ function getSpecialTransitionEndEvent() {
76
+ return {
77
+ bindType: transition.end,
78
+ delegateType: transition.end,
79
+ handle: function handle(event) {
80
+ if ($$$1(event.target).is(this)) {
81
+ return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
82
+ }
83
+
84
+ return undefined; // eslint-disable-line no-undefined
85
+ }
86
+ };
87
+ }
88
+
89
+ function transitionEndTest() {
90
+ if (typeof window !== 'undefined' && window.QUnit) {
91
+ return false;
92
+ }
93
+
94
+ return {
95
+ end: 'transitionend'
96
+ };
97
+ }
98
+
99
+ function transitionEndEmulator(duration) {
100
+ var _this = this;
101
+
102
+ var called = false;
103
+ $$$1(this).one(Util.TRANSITION_END, function () {
104
+ called = true;
105
+ });
106
+ setTimeout(function () {
107
+ if (!called) {
108
+ Util.triggerTransitionEnd(_this);
109
+ }
110
+ }, duration);
111
+ return this;
112
+ }
113
+
114
+ function setTransitionEndSupport() {
115
+ transition = transitionEndTest();
116
+ $$$1.fn.emulateTransitionEnd = transitionEndEmulator;
117
+
118
+ if (Util.supportsTransitionEnd()) {
119
+ $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
120
+ }
121
+ }
122
+
123
+ function escapeId(selector) {
124
+ // We escape IDs in case of special selectors (selector = '#myId:something')
125
+ // $.escapeSelector does not exist in jQuery < 3
126
+ selector = typeof $$$1.escapeSelector === 'function' ? $$$1.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1');
127
+ return selector;
128
+ }
129
+ /**
130
+ * --------------------------------------------------------------------------
131
+ * Public Util Api
132
+ * --------------------------------------------------------------------------
133
+ */
134
+
135
+
136
+ var Util = {
137
+ TRANSITION_END: 'bsTransitionEnd',
138
+ getUID: function getUID(prefix) {
139
+ do {
140
+ // eslint-disable-next-line no-bitwise
141
+ prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
142
+ } while (document.getElementById(prefix));
143
+
144
+ return prefix;
145
+ },
146
+ getSelectorFromElement: function getSelectorFromElement(element) {
147
+ var selector = element.getAttribute('data-target');
148
+
149
+ if (!selector || selector === '#') {
150
+ selector = element.getAttribute('href') || '';
151
+ } // If it's an ID
152
+
153
+
154
+ if (selector.charAt(0) === '#') {
155
+ selector = escapeId(selector);
156
+ }
157
+
158
+ try {
159
+ var $selector = $$$1(document).find(selector);
160
+ return $selector.length > 0 ? selector : null;
161
+ } catch (err) {
162
+ return null;
163
+ }
164
+ },
165
+ reflow: function reflow(element) {
166
+ return element.offsetHeight;
167
+ },
168
+ triggerTransitionEnd: function triggerTransitionEnd(element) {
169
+ $$$1(element).trigger(transition.end);
170
+ },
171
+ supportsTransitionEnd: function supportsTransitionEnd() {
172
+ return Boolean(transition);
173
+ },
174
+ isElement: function isElement(obj) {
175
+ return (obj[0] || obj).nodeType;
176
+ },
177
+ typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
178
+ for (var property in configTypes) {
179
+ if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
180
+ var expectedTypes = configTypes[property];
181
+ var value = config[property];
182
+ var valueType = value && Util.isElement(value) ? 'element' : toType(value);
183
+
184
+ if (!new RegExp(expectedTypes).test(valueType)) {
185
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
186
+ }
187
+ }
188
+ }
189
+ }
190
+ };
191
+ setTransitionEndSupport();
192
+ return Util;
193
+ }($);
194
+
195
+ /**
196
+ * --------------------------------------------------------------------------
197
+ * Bootstrap (v4.0.0): alert.js
198
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
199
+ * --------------------------------------------------------------------------
200
+ */
201
+
202
+ var Alert = function ($$$1) {
203
+ /**
204
+ * ------------------------------------------------------------------------
205
+ * Constants
206
+ * ------------------------------------------------------------------------
207
+ */
208
+ var NAME = 'alert';
209
+ var VERSION = '4.0.0';
210
+ var DATA_KEY = 'bs.alert';
211
+ var EVENT_KEY = "." + DATA_KEY;
212
+ var DATA_API_KEY = '.data-api';
213
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
214
+ var TRANSITION_DURATION = 150;
215
+ var Selector = {
216
+ DISMISS: '[data-dismiss="alert"]'
217
+ };
218
+ var Event = {
219
+ CLOSE: "close" + EVENT_KEY,
220
+ CLOSED: "closed" + EVENT_KEY,
221
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
222
+ };
223
+ var ClassName = {
224
+ ALERT: 'alert',
225
+ FADE: 'fade',
226
+ SHOW: 'show'
227
+ /**
228
+ * ------------------------------------------------------------------------
229
+ * Class Definition
230
+ * ------------------------------------------------------------------------
231
+ */
232
+
233
+ };
234
+
235
+ var Alert =
236
+ /*#__PURE__*/
237
+ function () {
238
+ function Alert(element) {
239
+ this._element = element;
240
+ } // Getters
241
+
242
+
243
+ var _proto = Alert.prototype;
244
+
245
+ // Public
246
+ _proto.close = function close(element) {
247
+ element = element || this._element;
248
+
249
+ var rootElement = this._getRootElement(element);
250
+
251
+ var customEvent = this._triggerCloseEvent(rootElement);
252
+
253
+ if (customEvent.isDefaultPrevented()) {
254
+ return;
255
+ }
256
+
257
+ this._removeElement(rootElement);
258
+ };
259
+
260
+ _proto.dispose = function dispose() {
261
+ $$$1.removeData(this._element, DATA_KEY);
262
+ this._element = null;
263
+ }; // Private
264
+
265
+
266
+ _proto._getRootElement = function _getRootElement(element) {
267
+ var selector = Util.getSelectorFromElement(element);
268
+ var parent = false;
269
+
270
+ if (selector) {
271
+ parent = $$$1(selector)[0];
272
+ }
273
+
274
+ if (!parent) {
275
+ parent = $$$1(element).closest("." + ClassName.ALERT)[0];
276
+ }
277
+
278
+ return parent;
279
+ };
280
+
281
+ _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
282
+ var closeEvent = $$$1.Event(Event.CLOSE);
283
+ $$$1(element).trigger(closeEvent);
284
+ return closeEvent;
285
+ };
286
+
287
+ _proto._removeElement = function _removeElement(element) {
288
+ var _this = this;
289
+
290
+ $$$1(element).removeClass(ClassName.SHOW);
291
+
292
+ if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) {
293
+ this._destroyElement(element);
294
+
295
+ return;
296
+ }
297
+
298
+ $$$1(element).one(Util.TRANSITION_END, function (event) {
299
+ return _this._destroyElement(element, event);
300
+ }).emulateTransitionEnd(TRANSITION_DURATION);
301
+ };
302
+
303
+ _proto._destroyElement = function _destroyElement(element) {
304
+ $$$1(element).detach().trigger(Event.CLOSED).remove();
305
+ }; // Static
306
+
307
+
308
+ Alert._jQueryInterface = function _jQueryInterface(config) {
309
+ return this.each(function () {
310
+ var $element = $$$1(this);
311
+ var data = $element.data(DATA_KEY);
312
+
313
+ if (!data) {
314
+ data = new Alert(this);
315
+ $element.data(DATA_KEY, data);
316
+ }
317
+
318
+ if (config === 'close') {
319
+ data[config](this);
320
+ }
321
+ });
322
+ };
323
+
324
+ Alert._handleDismiss = function _handleDismiss(alertInstance) {
325
+ return function (event) {
326
+ if (event) {
327
+ event.preventDefault();
328
+ }
329
+
330
+ alertInstance.close(this);
331
+ };
332
+ };
333
+
334
+ _createClass(Alert, null, [{
335
+ key: "VERSION",
336
+ get: function get() {
337
+ return VERSION;
338
+ }
339
+ }]);
340
+ return Alert;
341
+ }();
342
+ /**
343
+ * ------------------------------------------------------------------------
344
+ * Data Api implementation
345
+ * ------------------------------------------------------------------------
346
+ */
347
+
348
+
349
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
350
+ /**
351
+ * ------------------------------------------------------------------------
352
+ * jQuery
353
+ * ------------------------------------------------------------------------
354
+ */
355
+
356
+ $$$1.fn[NAME] = Alert._jQueryInterface;
357
+ $$$1.fn[NAME].Constructor = Alert;
358
+
359
+ $$$1.fn[NAME].noConflict = function () {
360
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
361
+ return Alert._jQueryInterface;
362
+ };
363
+
364
+ return Alert;
365
+ }($);
366
+
367
+ /**
368
+ * --------------------------------------------------------------------------
369
+ * Bootstrap (v4.0.0): button.js
370
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
371
+ * --------------------------------------------------------------------------
372
+ */
373
+
374
+ var Button = function ($$$1) {
375
+ /**
376
+ * ------------------------------------------------------------------------
377
+ * Constants
378
+ * ------------------------------------------------------------------------
379
+ */
380
+ var NAME = 'button';
381
+ var VERSION = '4.0.0';
382
+ var DATA_KEY = 'bs.button';
383
+ var EVENT_KEY = "." + DATA_KEY;
384
+ var DATA_API_KEY = '.data-api';
385
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
386
+ var ClassName = {
387
+ ACTIVE: 'active',
388
+ BUTTON: 'btn',
389
+ FOCUS: 'focus'
390
+ };
391
+ var Selector = {
392
+ DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
393
+ DATA_TOGGLE: '[data-toggle="buttons"]',
394
+ INPUT: 'input',
395
+ ACTIVE: '.active',
396
+ BUTTON: '.btn'
397
+ };
398
+ var Event = {
399
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
400
+ FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
401
+ /**
402
+ * ------------------------------------------------------------------------
403
+ * Class Definition
404
+ * ------------------------------------------------------------------------
405
+ */
406
+
407
+ };
408
+
409
+ var Button =
410
+ /*#__PURE__*/
411
+ function () {
412
+ function Button(element) {
413
+ this._element = element;
414
+ } // Getters
415
+
416
+
417
+ var _proto = Button.prototype;
418
+
419
+ // Public
420
+ _proto.toggle = function toggle() {
421
+ var triggerChangeEvent = true;
422
+ var addAriaPressed = true;
423
+ var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];
424
+
425
+ if (rootElement) {
426
+ var input = $$$1(this._element).find(Selector.INPUT)[0];
427
+
428
+ if (input) {
429
+ if (input.type === 'radio') {
430
+ if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) {
431
+ triggerChangeEvent = false;
432
+ } else {
433
+ var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0];
434
+
435
+ if (activeElement) {
436
+ $$$1(activeElement).removeClass(ClassName.ACTIVE);
437
+ }
438
+ }
439
+ }
440
+
441
+ if (triggerChangeEvent) {
442
+ if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
443
+ return;
444
+ }
445
+
446
+ input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE);
447
+ $$$1(input).trigger('change');
448
+ }
449
+
450
+ input.focus();
451
+ addAriaPressed = false;
452
+ }
453
+ }
454
+
455
+ if (addAriaPressed) {
456
+ this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE));
457
+ }
458
+
459
+ if (triggerChangeEvent) {
460
+ $$$1(this._element).toggleClass(ClassName.ACTIVE);
461
+ }
462
+ };
463
+
464
+ _proto.dispose = function dispose() {
465
+ $$$1.removeData(this._element, DATA_KEY);
466
+ this._element = null;
467
+ }; // Static
468
+
469
+
470
+ Button._jQueryInterface = function _jQueryInterface(config) {
471
+ return this.each(function () {
472
+ var data = $$$1(this).data(DATA_KEY);
473
+
474
+ if (!data) {
475
+ data = new Button(this);
476
+ $$$1(this).data(DATA_KEY, data);
477
+ }
478
+
479
+ if (config === 'toggle') {
480
+ data[config]();
481
+ }
482
+ });
483
+ };
484
+
485
+ _createClass(Button, null, [{
486
+ key: "VERSION",
487
+ get: function get() {
488
+ return VERSION;
489
+ }
490
+ }]);
491
+ return Button;
492
+ }();
493
+ /**
494
+ * ------------------------------------------------------------------------
495
+ * Data Api implementation
496
+ * ------------------------------------------------------------------------
497
+ */
498
+
499
+
500
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
501
+ event.preventDefault();
502
+ var button = event.target;
503
+
504
+ if (!$$$1(button).hasClass(ClassName.BUTTON)) {
505
+ button = $$$1(button).closest(Selector.BUTTON);
506
+ }
507
+
508
+ Button._jQueryInterface.call($$$1(button), 'toggle');
509
+ }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
510
+ var button = $$$1(event.target).closest(Selector.BUTTON)[0];
511
+ $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
512
+ });
513
+ /**
514
+ * ------------------------------------------------------------------------
515
+ * jQuery
516
+ * ------------------------------------------------------------------------
517
+ */
518
+
519
+ $$$1.fn[NAME] = Button._jQueryInterface;
520
+ $$$1.fn[NAME].Constructor = Button;
521
+
522
+ $$$1.fn[NAME].noConflict = function () {
523
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
524
+ return Button._jQueryInterface;
525
+ };
526
+
527
+ return Button;
528
+ }($);
529
+
530
+ /**
531
+ * --------------------------------------------------------------------------
532
+ * Bootstrap (v4.0.0): carousel.js
533
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
534
+ * --------------------------------------------------------------------------
535
+ */
536
+
537
+ var Carousel = function ($$$1) {
538
+ /**
539
+ * ------------------------------------------------------------------------
540
+ * Constants
541
+ * ------------------------------------------------------------------------
542
+ */
543
+ var NAME = 'carousel';
544
+ var VERSION = '4.0.0';
545
+ var DATA_KEY = 'bs.carousel';
546
+ var EVENT_KEY = "." + DATA_KEY;
547
+ var DATA_API_KEY = '.data-api';
548
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
549
+ var TRANSITION_DURATION = 600;
550
+ var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
551
+
552
+ var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
553
+
554
+ var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
555
+
556
+ var Default = {
557
+ interval: 5000,
558
+ keyboard: true,
559
+ slide: false,
560
+ pause: 'hover',
561
+ wrap: true
562
+ };
563
+ var DefaultType = {
564
+ interval: '(number|boolean)',
565
+ keyboard: 'boolean',
566
+ slide: '(boolean|string)',
567
+ pause: '(string|boolean)',
568
+ wrap: 'boolean'
569
+ };
570
+ var Direction = {
571
+ NEXT: 'next',
572
+ PREV: 'prev',
573
+ LEFT: 'left',
574
+ RIGHT: 'right'
575
+ };
576
+ var Event = {
577
+ SLIDE: "slide" + EVENT_KEY,
578
+ SLID: "slid" + EVENT_KEY,
579
+ KEYDOWN: "keydown" + EVENT_KEY,
580
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
581
+ MOUSELEAVE: "mouseleave" + EVENT_KEY,
582
+ TOUCHEND: "touchend" + EVENT_KEY,
583
+ LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
584
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
585
+ };
586
+ var ClassName = {
587
+ CAROUSEL: 'carousel',
588
+ ACTIVE: 'active',
589
+ SLIDE: 'slide',
590
+ RIGHT: 'carousel-item-right',
591
+ LEFT: 'carousel-item-left',
592
+ NEXT: 'carousel-item-next',
593
+ PREV: 'carousel-item-prev',
594
+ ITEM: 'carousel-item'
595
+ };
596
+ var Selector = {
597
+ ACTIVE: '.active',
598
+ ACTIVE_ITEM: '.active.carousel-item',
599
+ ITEM: '.carousel-item',
600
+ NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
601
+ INDICATORS: '.carousel-indicators',
602
+ DATA_SLIDE: '[data-slide], [data-slide-to]',
603
+ DATA_RIDE: '[data-ride="carousel"]'
604
+ /**
605
+ * ------------------------------------------------------------------------
606
+ * Class Definition
607
+ * ------------------------------------------------------------------------
608
+ */
609
+
610
+ };
611
+
612
+ var Carousel =
613
+ /*#__PURE__*/
614
+ function () {
615
+ function Carousel(element, config) {
616
+ this._items = null;
617
+ this._interval = null;
618
+ this._activeElement = null;
619
+ this._isPaused = false;
620
+ this._isSliding = false;
621
+ this.touchTimeout = null;
622
+ this._config = this._getConfig(config);
623
+ this._element = $$$1(element)[0];
624
+ this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0];
625
+
626
+ this._addEventListeners();
627
+ } // Getters
628
+
629
+
630
+ var _proto = Carousel.prototype;
631
+
632
+ // Public
633
+ _proto.next = function next() {
634
+ if (!this._isSliding) {
635
+ this._slide(Direction.NEXT);
636
+ }
637
+ };
638
+
639
+ _proto.nextWhenVisible = function nextWhenVisible() {
640
+ // Don't call next when the page isn't visible
641
+ // or the carousel or its parent isn't visible
642
+ if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') {
643
+ this.next();
644
+ }
645
+ };
646
+
647
+ _proto.prev = function prev() {
648
+ if (!this._isSliding) {
649
+ this._slide(Direction.PREV);
650
+ }
651
+ };
652
+
653
+ _proto.pause = function pause(event) {
654
+ if (!event) {
655
+ this._isPaused = true;
656
+ }
657
+
658
+ if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
659
+ Util.triggerTransitionEnd(this._element);
660
+ this.cycle(true);
661
+ }
662
+
663
+ clearInterval(this._interval);
664
+ this._interval = null;
665
+ };
666
+
667
+ _proto.cycle = function cycle(event) {
668
+ if (!event) {
669
+ this._isPaused = false;
670
+ }
671
+
672
+ if (this._interval) {
673
+ clearInterval(this._interval);
674
+ this._interval = null;
675
+ }
676
+
677
+ if (this._config.interval && !this._isPaused) {
678
+ this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
679
+ }
680
+ };
681
+
682
+ _proto.to = function to(index) {
683
+ var _this = this;
684
+
685
+ this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
686
+
687
+ var activeIndex = this._getItemIndex(this._activeElement);
688
+
689
+ if (index > this._items.length - 1 || index < 0) {
690
+ return;
691
+ }
692
+
693
+ if (this._isSliding) {
694
+ $$$1(this._element).one(Event.SLID, function () {
695
+ return _this.to(index);
696
+ });
697
+ return;
698
+ }
699
+
700
+ if (activeIndex === index) {
701
+ this.pause();
702
+ this.cycle();
703
+ return;
704
+ }
705
+
706
+ var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
707
+
708
+ this._slide(direction, this._items[index]);
709
+ };
710
+
711
+ _proto.dispose = function dispose() {
712
+ $$$1(this._element).off(EVENT_KEY);
713
+ $$$1.removeData(this._element, DATA_KEY);
714
+ this._items = null;
715
+ this._config = null;
716
+ this._element = null;
717
+ this._interval = null;
718
+ this._isPaused = null;
719
+ this._isSliding = null;
720
+ this._activeElement = null;
721
+ this._indicatorsElement = null;
722
+ }; // Private
723
+
724
+
725
+ _proto._getConfig = function _getConfig(config) {
726
+ config = _extends({}, Default, config);
727
+ Util.typeCheckConfig(NAME, config, DefaultType);
728
+ return config;
729
+ };
730
+
731
+ _proto._addEventListeners = function _addEventListeners() {
732
+ var _this2 = this;
733
+
734
+ if (this._config.keyboard) {
735
+ $$$1(this._element).on(Event.KEYDOWN, function (event) {
736
+ return _this2._keydown(event);
737
+ });
738
+ }
739
+
740
+ if (this._config.pause === 'hover') {
741
+ $$$1(this._element).on(Event.MOUSEENTER, function (event) {
742
+ return _this2.pause(event);
743
+ }).on(Event.MOUSELEAVE, function (event) {
744
+ return _this2.cycle(event);
745
+ });
746
+
747
+ if ('ontouchstart' in document.documentElement) {
748
+ // If it's a touch-enabled device, mouseenter/leave are fired as
749
+ // part of the mouse compatibility events on first tap - the carousel
750
+ // would stop cycling until user tapped out of it;
751
+ // here, we listen for touchend, explicitly pause the carousel
752
+ // (as if it's the second time we tap on it, mouseenter compat event
753
+ // is NOT fired) and after a timeout (to allow for mouse compatibility
754
+ // events to fire) we explicitly restart cycling
755
+ $$$1(this._element).on(Event.TOUCHEND, function () {
756
+ _this2.pause();
757
+
758
+ if (_this2.touchTimeout) {
759
+ clearTimeout(_this2.touchTimeout);
760
+ }
761
+
762
+ _this2.touchTimeout = setTimeout(function (event) {
763
+ return _this2.cycle(event);
764
+ }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
765
+ });
766
+ }
767
+ }
768
+ };
769
+
770
+ _proto._keydown = function _keydown(event) {
771
+ if (/input|textarea/i.test(event.target.tagName)) {
772
+ return;
773
+ }
774
+
775
+ switch (event.which) {
776
+ case ARROW_LEFT_KEYCODE:
777
+ event.preventDefault();
778
+ this.prev();
779
+ break;
780
+
781
+ case ARROW_RIGHT_KEYCODE:
782
+ event.preventDefault();
783
+ this.next();
784
+ break;
785
+
786
+ default:
787
+ }
788
+ };
789
+
790
+ _proto._getItemIndex = function _getItemIndex(element) {
791
+ this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM));
792
+ return this._items.indexOf(element);
793
+ };
794
+
795
+ _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
796
+ var isNextDirection = direction === Direction.NEXT;
797
+ var isPrevDirection = direction === Direction.PREV;
798
+
799
+ var activeIndex = this._getItemIndex(activeElement);
800
+
801
+ var lastItemIndex = this._items.length - 1;
802
+ var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
803
+
804
+ if (isGoingToWrap && !this._config.wrap) {
805
+ return activeElement;
806
+ }
807
+
808
+ var delta = direction === Direction.PREV ? -1 : 1;
809
+ var itemIndex = (activeIndex + delta) % this._items.length;
810
+ return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
811
+ };
812
+
813
+ _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
814
+ var targetIndex = this._getItemIndex(relatedTarget);
815
+
816
+ var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]);
817
+
818
+ var slideEvent = $$$1.Event(Event.SLIDE, {
819
+ relatedTarget: relatedTarget,
820
+ direction: eventDirectionName,
821
+ from: fromIndex,
822
+ to: targetIndex
823
+ });
824
+ $$$1(this._element).trigger(slideEvent);
825
+ return slideEvent;
826
+ };
827
+
828
+ _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
829
+ if (this._indicatorsElement) {
830
+ $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
831
+
832
+ var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
833
+
834
+ if (nextIndicator) {
835
+ $$$1(nextIndicator).addClass(ClassName.ACTIVE);
836
+ }
837
+ }
838
+ };
839
+
840
+ _proto._slide = function _slide(direction, element) {
841
+ var _this3 = this;
842
+
843
+ var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
844
+
845
+ var activeElementIndex = this._getItemIndex(activeElement);
846
+
847
+ var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
848
+
849
+ var nextElementIndex = this._getItemIndex(nextElement);
850
+
851
+ var isCycling = Boolean(this._interval);
852
+ var directionalClassName;
853
+ var orderClassName;
854
+ var eventDirectionName;
855
+
856
+ if (direction === Direction.NEXT) {
857
+ directionalClassName = ClassName.LEFT;
858
+ orderClassName = ClassName.NEXT;
859
+ eventDirectionName = Direction.LEFT;
860
+ } else {
861
+ directionalClassName = ClassName.RIGHT;
862
+ orderClassName = ClassName.PREV;
863
+ eventDirectionName = Direction.RIGHT;
864
+ }
865
+
866
+ if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) {
867
+ this._isSliding = false;
868
+ return;
869
+ }
870
+
871
+ var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
872
+
873
+ if (slideEvent.isDefaultPrevented()) {
874
+ return;
875
+ }
876
+
877
+ if (!activeElement || !nextElement) {
878
+ // Some weirdness is happening, so we bail
879
+ return;
880
+ }
881
+
882
+ this._isSliding = true;
883
+
884
+ if (isCycling) {
885
+ this.pause();
886
+ }
887
+
888
+ this._setActiveIndicatorElement(nextElement);
889
+
890
+ var slidEvent = $$$1.Event(Event.SLID, {
891
+ relatedTarget: nextElement,
892
+ direction: eventDirectionName,
893
+ from: activeElementIndex,
894
+ to: nextElementIndex
895
+ });
896
+
897
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) {
898
+ $$$1(nextElement).addClass(orderClassName);
899
+ Util.reflow(nextElement);
900
+ $$$1(activeElement).addClass(directionalClassName);
901
+ $$$1(nextElement).addClass(directionalClassName);
902
+ $$$1(activeElement).one(Util.TRANSITION_END, function () {
903
+ $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
904
+ $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
905
+ _this3._isSliding = false;
906
+ setTimeout(function () {
907
+ return $$$1(_this3._element).trigger(slidEvent);
908
+ }, 0);
909
+ }).emulateTransitionEnd(TRANSITION_DURATION);
910
+ } else {
911
+ $$$1(activeElement).removeClass(ClassName.ACTIVE);
912
+ $$$1(nextElement).addClass(ClassName.ACTIVE);
913
+ this._isSliding = false;
914
+ $$$1(this._element).trigger(slidEvent);
915
+ }
916
+
917
+ if (isCycling) {
918
+ this.cycle();
919
+ }
920
+ }; // Static
921
+
922
+
923
+ Carousel._jQueryInterface = function _jQueryInterface(config) {
924
+ return this.each(function () {
925
+ var data = $$$1(this).data(DATA_KEY);
926
+
927
+ var _config = _extends({}, Default, $$$1(this).data());
928
+
929
+ if (typeof config === 'object') {
930
+ _config = _extends({}, _config, config);
931
+ }
932
+
933
+ var action = typeof config === 'string' ? config : _config.slide;
934
+
935
+ if (!data) {
936
+ data = new Carousel(this, _config);
937
+ $$$1(this).data(DATA_KEY, data);
938
+ }
939
+
940
+ if (typeof config === 'number') {
941
+ data.to(config);
942
+ } else if (typeof action === 'string') {
943
+ if (typeof data[action] === 'undefined') {
944
+ throw new TypeError("No method named \"" + action + "\"");
945
+ }
946
+
947
+ data[action]();
948
+ } else if (_config.interval) {
949
+ data.pause();
950
+ data.cycle();
951
+ }
952
+ });
953
+ };
954
+
955
+ Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
956
+ var selector = Util.getSelectorFromElement(this);
957
+
958
+ if (!selector) {
959
+ return;
960
+ }
961
+
962
+ var target = $$$1(selector)[0];
963
+
964
+ if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) {
965
+ return;
966
+ }
967
+
968
+ var config = _extends({}, $$$1(target).data(), $$$1(this).data());
969
+ var slideIndex = this.getAttribute('data-slide-to');
970
+
971
+ if (slideIndex) {
972
+ config.interval = false;
973
+ }
974
+
975
+ Carousel._jQueryInterface.call($$$1(target), config);
976
+
977
+ if (slideIndex) {
978
+ $$$1(target).data(DATA_KEY).to(slideIndex);
979
+ }
980
+
981
+ event.preventDefault();
982
+ };
983
+
984
+ _createClass(Carousel, null, [{
985
+ key: "VERSION",
986
+ get: function get() {
987
+ return VERSION;
988
+ }
989
+ }, {
990
+ key: "Default",
991
+ get: function get() {
992
+ return Default;
993
+ }
994
+ }]);
995
+ return Carousel;
996
+ }();
997
+ /**
998
+ * ------------------------------------------------------------------------
999
+ * Data Api implementation
1000
+ * ------------------------------------------------------------------------
1001
+ */
1002
+
1003
+
1004
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
1005
+ $$$1(window).on(Event.LOAD_DATA_API, function () {
1006
+ $$$1(Selector.DATA_RIDE).each(function () {
1007
+ var $carousel = $$$1(this);
1008
+
1009
+ Carousel._jQueryInterface.call($carousel, $carousel.data());
1010
+ });
1011
+ });
1012
+ /**
1013
+ * ------------------------------------------------------------------------
1014
+ * jQuery
1015
+ * ------------------------------------------------------------------------
1016
+ */
1017
+
1018
+ $$$1.fn[NAME] = Carousel._jQueryInterface;
1019
+ $$$1.fn[NAME].Constructor = Carousel;
1020
+
1021
+ $$$1.fn[NAME].noConflict = function () {
1022
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1023
+ return Carousel._jQueryInterface;
1024
+ };
1025
+
1026
+ return Carousel;
1027
+ }($);
1028
+
1029
+ /**
1030
+ * --------------------------------------------------------------------------
1031
+ * Bootstrap (v4.0.0): collapse.js
1032
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1033
+ * --------------------------------------------------------------------------
1034
+ */
1035
+
1036
+ var Collapse = function ($$$1) {
1037
+ /**
1038
+ * ------------------------------------------------------------------------
1039
+ * Constants
1040
+ * ------------------------------------------------------------------------
1041
+ */
1042
+ var NAME = 'collapse';
1043
+ var VERSION = '4.0.0';
1044
+ var DATA_KEY = 'bs.collapse';
1045
+ var EVENT_KEY = "." + DATA_KEY;
1046
+ var DATA_API_KEY = '.data-api';
1047
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1048
+ var TRANSITION_DURATION = 600;
1049
+ var Default = {
1050
+ toggle: true,
1051
+ parent: ''
1052
+ };
1053
+ var DefaultType = {
1054
+ toggle: 'boolean',
1055
+ parent: '(string|element)'
1056
+ };
1057
+ var Event = {
1058
+ SHOW: "show" + EVENT_KEY,
1059
+ SHOWN: "shown" + EVENT_KEY,
1060
+ HIDE: "hide" + EVENT_KEY,
1061
+ HIDDEN: "hidden" + EVENT_KEY,
1062
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1063
+ };
1064
+ var ClassName = {
1065
+ SHOW: 'show',
1066
+ COLLAPSE: 'collapse',
1067
+ COLLAPSING: 'collapsing',
1068
+ COLLAPSED: 'collapsed'
1069
+ };
1070
+ var Dimension = {
1071
+ WIDTH: 'width',
1072
+ HEIGHT: 'height'
1073
+ };
1074
+ var Selector = {
1075
+ ACTIVES: '.show, .collapsing',
1076
+ DATA_TOGGLE: '[data-toggle="collapse"]'
1077
+ /**
1078
+ * ------------------------------------------------------------------------
1079
+ * Class Definition
1080
+ * ------------------------------------------------------------------------
1081
+ */
1082
+
1083
+ };
1084
+
1085
+ var Collapse =
1086
+ /*#__PURE__*/
1087
+ function () {
1088
+ function Collapse(element, config) {
1089
+ this._isTransitioning = false;
1090
+ this._element = element;
1091
+ this._config = this._getConfig(config);
1092
+ this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1093
+ var tabToggles = $$$1(Selector.DATA_TOGGLE);
1094
+
1095
+ for (var i = 0; i < tabToggles.length; i++) {
1096
+ var elem = tabToggles[i];
1097
+ var selector = Util.getSelectorFromElement(elem);
1098
+
1099
+ if (selector !== null && $$$1(selector).filter(element).length > 0) {
1100
+ this._selector = selector;
1101
+
1102
+ this._triggerArray.push(elem);
1103
+ }
1104
+ }
1105
+
1106
+ this._parent = this._config.parent ? this._getParent() : null;
1107
+
1108
+ if (!this._config.parent) {
1109
+ this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1110
+ }
1111
+
1112
+ if (this._config.toggle) {
1113
+ this.toggle();
1114
+ }
1115
+ } // Getters
1116
+
1117
+
1118
+ var _proto = Collapse.prototype;
1119
+
1120
+ // Public
1121
+ _proto.toggle = function toggle() {
1122
+ if ($$$1(this._element).hasClass(ClassName.SHOW)) {
1123
+ this.hide();
1124
+ } else {
1125
+ this.show();
1126
+ }
1127
+ };
1128
+
1129
+ _proto.show = function show() {
1130
+ var _this = this;
1131
+
1132
+ if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) {
1133
+ return;
1134
+ }
1135
+
1136
+ var actives;
1137
+ var activesData;
1138
+
1139
+ if (this._parent) {
1140
+ actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]"));
1141
+
1142
+ if (actives.length === 0) {
1143
+ actives = null;
1144
+ }
1145
+ }
1146
+
1147
+ if (actives) {
1148
+ activesData = $$$1(actives).not(this._selector).data(DATA_KEY);
1149
+
1150
+ if (activesData && activesData._isTransitioning) {
1151
+ return;
1152
+ }
1153
+ }
1154
+
1155
+ var startEvent = $$$1.Event(Event.SHOW);
1156
+ $$$1(this._element).trigger(startEvent);
1157
+
1158
+ if (startEvent.isDefaultPrevented()) {
1159
+ return;
1160
+ }
1161
+
1162
+ if (actives) {
1163
+ Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide');
1164
+
1165
+ if (!activesData) {
1166
+ $$$1(actives).data(DATA_KEY, null);
1167
+ }
1168
+ }
1169
+
1170
+ var dimension = this._getDimension();
1171
+
1172
+ $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
1173
+ this._element.style[dimension] = 0;
1174
+
1175
+ if (this._triggerArray.length > 0) {
1176
+ $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
1177
+ }
1178
+
1179
+ this.setTransitioning(true);
1180
+
1181
+ var complete = function complete() {
1182
+ $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
1183
+ _this._element.style[dimension] = '';
1184
+
1185
+ _this.setTransitioning(false);
1186
+
1187
+ $$$1(_this._element).trigger(Event.SHOWN);
1188
+ };
1189
+
1190
+ if (!Util.supportsTransitionEnd()) {
1191
+ complete();
1192
+ return;
1193
+ }
1194
+
1195
+ var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1196
+ var scrollSize = "scroll" + capitalizedDimension;
1197
+ $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1198
+ this._element.style[dimension] = this._element[scrollSize] + "px";
1199
+ };
1200
+
1201
+ _proto.hide = function hide() {
1202
+ var _this2 = this;
1203
+
1204
+ if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) {
1205
+ return;
1206
+ }
1207
+
1208
+ var startEvent = $$$1.Event(Event.HIDE);
1209
+ $$$1(this._element).trigger(startEvent);
1210
+
1211
+ if (startEvent.isDefaultPrevented()) {
1212
+ return;
1213
+ }
1214
+
1215
+ var dimension = this._getDimension();
1216
+
1217
+ this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1218
+ Util.reflow(this._element);
1219
+ $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
1220
+
1221
+ if (this._triggerArray.length > 0) {
1222
+ for (var i = 0; i < this._triggerArray.length; i++) {
1223
+ var trigger = this._triggerArray[i];
1224
+ var selector = Util.getSelectorFromElement(trigger);
1225
+
1226
+ if (selector !== null) {
1227
+ var $elem = $$$1(selector);
1228
+
1229
+ if (!$elem.hasClass(ClassName.SHOW)) {
1230
+ $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
1231
+ }
1232
+ }
1233
+ }
1234
+ }
1235
+
1236
+ this.setTransitioning(true);
1237
+
1238
+ var complete = function complete() {
1239
+ _this2.setTransitioning(false);
1240
+
1241
+ $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
1242
+ };
1243
+
1244
+ this._element.style[dimension] = '';
1245
+
1246
+ if (!Util.supportsTransitionEnd()) {
1247
+ complete();
1248
+ return;
1249
+ }
1250
+
1251
+ $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1252
+ };
1253
+
1254
+ _proto.setTransitioning = function setTransitioning(isTransitioning) {
1255
+ this._isTransitioning = isTransitioning;
1256
+ };
1257
+
1258
+ _proto.dispose = function dispose() {
1259
+ $$$1.removeData(this._element, DATA_KEY);
1260
+ this._config = null;
1261
+ this._parent = null;
1262
+ this._element = null;
1263
+ this._triggerArray = null;
1264
+ this._isTransitioning = null;
1265
+ }; // Private
1266
+
1267
+
1268
+ _proto._getConfig = function _getConfig(config) {
1269
+ config = _extends({}, Default, config);
1270
+ config.toggle = Boolean(config.toggle); // Coerce string values
1271
+
1272
+ Util.typeCheckConfig(NAME, config, DefaultType);
1273
+ return config;
1274
+ };
1275
+
1276
+ _proto._getDimension = function _getDimension() {
1277
+ var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH);
1278
+ return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1279
+ };
1280
+
1281
+ _proto._getParent = function _getParent() {
1282
+ var _this3 = this;
1283
+
1284
+ var parent = null;
1285
+
1286
+ if (Util.isElement(this._config.parent)) {
1287
+ parent = this._config.parent; // It's a jQuery object
1288
+
1289
+ if (typeof this._config.parent.jquery !== 'undefined') {
1290
+ parent = this._config.parent[0];
1291
+ }
1292
+ } else {
1293
+ parent = $$$1(this._config.parent)[0];
1294
+ }
1295
+
1296
+ var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1297
+ $$$1(parent).find(selector).each(function (i, element) {
1298
+ _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1299
+ });
1300
+ return parent;
1301
+ };
1302
+
1303
+ _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1304
+ if (element) {
1305
+ var isOpen = $$$1(element).hasClass(ClassName.SHOW);
1306
+
1307
+ if (triggerArray.length > 0) {
1308
+ $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1309
+ }
1310
+ }
1311
+ }; // Static
1312
+
1313
+
1314
+ Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1315
+ var selector = Util.getSelectorFromElement(element);
1316
+ return selector ? $$$1(selector)[0] : null;
1317
+ };
1318
+
1319
+ Collapse._jQueryInterface = function _jQueryInterface(config) {
1320
+ return this.each(function () {
1321
+ var $this = $$$1(this);
1322
+ var data = $this.data(DATA_KEY);
1323
+
1324
+ var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config);
1325
+
1326
+ if (!data && _config.toggle && /show|hide/.test(config)) {
1327
+ _config.toggle = false;
1328
+ }
1329
+
1330
+ if (!data) {
1331
+ data = new Collapse(this, _config);
1332
+ $this.data(DATA_KEY, data);
1333
+ }
1334
+
1335
+ if (typeof config === 'string') {
1336
+ if (typeof data[config] === 'undefined') {
1337
+ throw new TypeError("No method named \"" + config + "\"");
1338
+ }
1339
+
1340
+ data[config]();
1341
+ }
1342
+ });
1343
+ };
1344
+
1345
+ _createClass(Collapse, null, [{
1346
+ key: "VERSION",
1347
+ get: function get() {
1348
+ return VERSION;
1349
+ }
1350
+ }, {
1351
+ key: "Default",
1352
+ get: function get() {
1353
+ return Default;
1354
+ }
1355
+ }]);
1356
+ return Collapse;
1357
+ }();
1358
+ /**
1359
+ * ------------------------------------------------------------------------
1360
+ * Data Api implementation
1361
+ * ------------------------------------------------------------------------
1362
+ */
1363
+
1364
+
1365
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
1366
+ // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1367
+ if (event.currentTarget.tagName === 'A') {
1368
+ event.preventDefault();
1369
+ }
1370
+
1371
+ var $trigger = $$$1(this);
1372
+ var selector = Util.getSelectorFromElement(this);
1373
+ $$$1(selector).each(function () {
1374
+ var $target = $$$1(this);
1375
+ var data = $target.data(DATA_KEY);
1376
+ var config = data ? 'toggle' : $trigger.data();
1377
+
1378
+ Collapse._jQueryInterface.call($target, config);
1379
+ });
1380
+ });
1381
+ /**
1382
+ * ------------------------------------------------------------------------
1383
+ * jQuery
1384
+ * ------------------------------------------------------------------------
1385
+ */
1386
+
1387
+ $$$1.fn[NAME] = Collapse._jQueryInterface;
1388
+ $$$1.fn[NAME].Constructor = Collapse;
1389
+
1390
+ $$$1.fn[NAME].noConflict = function () {
1391
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1392
+ return Collapse._jQueryInterface;
1393
+ };
1394
+
1395
+ return Collapse;
1396
+ }($);
1397
+
1398
+ /**
1399
+ * --------------------------------------------------------------------------
1400
+ * Bootstrap (v4.0.0): dropdown.js
1401
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1402
+ * --------------------------------------------------------------------------
1403
+ */
1404
+
1405
+ var Dropdown = function ($$$1) {
1406
+ /**
1407
+ * ------------------------------------------------------------------------
1408
+ * Constants
1409
+ * ------------------------------------------------------------------------
1410
+ */
1411
+ var NAME = 'dropdown';
1412
+ var VERSION = '4.0.0';
1413
+ var DATA_KEY = 'bs.dropdown';
1414
+ var EVENT_KEY = "." + DATA_KEY;
1415
+ var DATA_API_KEY = '.data-api';
1416
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1417
+ var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1418
+
1419
+ var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1420
+
1421
+ var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1422
+
1423
+ var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1424
+
1425
+ var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1426
+
1427
+ var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1428
+
1429
+ var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1430
+ var Event = {
1431
+ HIDE: "hide" + EVENT_KEY,
1432
+ HIDDEN: "hidden" + EVENT_KEY,
1433
+ SHOW: "show" + EVENT_KEY,
1434
+ SHOWN: "shown" + EVENT_KEY,
1435
+ CLICK: "click" + EVENT_KEY,
1436
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
1437
+ KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
1438
+ KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
1439
+ };
1440
+ var ClassName = {
1441
+ DISABLED: 'disabled',
1442
+ SHOW: 'show',
1443
+ DROPUP: 'dropup',
1444
+ DROPRIGHT: 'dropright',
1445
+ DROPLEFT: 'dropleft',
1446
+ MENURIGHT: 'dropdown-menu-right',
1447
+ MENULEFT: 'dropdown-menu-left',
1448
+ POSITION_STATIC: 'position-static'
1449
+ };
1450
+ var Selector = {
1451
+ DATA_TOGGLE: '[data-toggle="dropdown"]',
1452
+ FORM_CHILD: '.dropdown form',
1453
+ MENU: '.dropdown-menu',
1454
+ NAVBAR_NAV: '.navbar-nav',
1455
+ VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
1456
+ };
1457
+ var AttachmentMap = {
1458
+ TOP: 'top-start',
1459
+ TOPEND: 'top-end',
1460
+ BOTTOM: 'bottom-start',
1461
+ BOTTOMEND: 'bottom-end',
1462
+ RIGHT: 'right-start',
1463
+ RIGHTEND: 'right-end',
1464
+ LEFT: 'left-start',
1465
+ LEFTEND: 'left-end'
1466
+ };
1467
+ var Default = {
1468
+ offset: 0,
1469
+ flip: true,
1470
+ boundary: 'scrollParent'
1471
+ };
1472
+ var DefaultType = {
1473
+ offset: '(number|string|function)',
1474
+ flip: 'boolean',
1475
+ boundary: '(string|element)'
1476
+ /**
1477
+ * ------------------------------------------------------------------------
1478
+ * Class Definition
1479
+ * ------------------------------------------------------------------------
1480
+ */
1481
+
1482
+ };
1483
+
1484
+ var Dropdown =
1485
+ /*#__PURE__*/
1486
+ function () {
1487
+ function Dropdown(element, config) {
1488
+ this._element = element;
1489
+ this._popper = null;
1490
+ this._config = this._getConfig(config);
1491
+ this._menu = this._getMenuElement();
1492
+ this._inNavbar = this._detectNavbar();
1493
+
1494
+ this._addEventListeners();
1495
+ } // Getters
1496
+
1497
+
1498
+ var _proto = Dropdown.prototype;
1499
+
1500
+ // Public
1501
+ _proto.toggle = function toggle() {
1502
+ if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) {
1503
+ return;
1504
+ }
1505
+
1506
+ var parent = Dropdown._getParentFromElement(this._element);
1507
+
1508
+ var isActive = $$$1(this._menu).hasClass(ClassName.SHOW);
1509
+
1510
+ Dropdown._clearMenus();
1511
+
1512
+ if (isActive) {
1513
+ return;
1514
+ }
1515
+
1516
+ var relatedTarget = {
1517
+ relatedTarget: this._element
1518
+ };
1519
+ var showEvent = $$$1.Event(Event.SHOW, relatedTarget);
1520
+ $$$1(parent).trigger(showEvent);
1521
+
1522
+ if (showEvent.isDefaultPrevented()) {
1523
+ return;
1524
+ } // Disable totally Popper.js for Dropdown in Navbar
1525
+
1526
+
1527
+ if (!this._inNavbar) {
1528
+ /**
1529
+ * Check for Popper dependency
1530
+ * Popper - https://popper.js.org
1531
+ */
1532
+ if (typeof Popper === 'undefined') {
1533
+ throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
1534
+ }
1535
+
1536
+ var element = this._element; // For dropup with alignment we use the parent as popper container
1537
+
1538
+ if ($$$1(parent).hasClass(ClassName.DROPUP)) {
1539
+ if ($$$1(this._menu).hasClass(ClassName.MENULEFT) || $$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1540
+ element = parent;
1541
+ }
1542
+ } // If boundary is not `scrollParent`, then set position to `static`
1543
+ // to allow the menu to "escape" the scroll parent's boundaries
1544
+ // https://github.com/twbs/bootstrap/issues/24251
1545
+
1546
+
1547
+ if (this._config.boundary !== 'scrollParent') {
1548
+ $$$1(parent).addClass(ClassName.POSITION_STATIC);
1549
+ }
1550
+
1551
+ this._popper = new Popper(element, this._menu, this._getPopperConfig());
1552
+ } // If this is a touch-enabled device we add extra
1553
+ // empty mouseover listeners to the body's immediate children;
1554
+ // only needed because of broken event delegation on iOS
1555
+ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1556
+
1557
+
1558
+ if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) {
1559
+ $$$1('body').children().on('mouseover', null, $$$1.noop);
1560
+ }
1561
+
1562
+ this._element.focus();
1563
+
1564
+ this._element.setAttribute('aria-expanded', true);
1565
+
1566
+ $$$1(this._menu).toggleClass(ClassName.SHOW);
1567
+ $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget));
1568
+ };
1569
+
1570
+ _proto.dispose = function dispose() {
1571
+ $$$1.removeData(this._element, DATA_KEY);
1572
+ $$$1(this._element).off(EVENT_KEY);
1573
+ this._element = null;
1574
+ this._menu = null;
1575
+
1576
+ if (this._popper !== null) {
1577
+ this._popper.destroy();
1578
+
1579
+ this._popper = null;
1580
+ }
1581
+ };
1582
+
1583
+ _proto.update = function update() {
1584
+ this._inNavbar = this._detectNavbar();
1585
+
1586
+ if (this._popper !== null) {
1587
+ this._popper.scheduleUpdate();
1588
+ }
1589
+ }; // Private
1590
+
1591
+
1592
+ _proto._addEventListeners = function _addEventListeners() {
1593
+ var _this = this;
1594
+
1595
+ $$$1(this._element).on(Event.CLICK, function (event) {
1596
+ event.preventDefault();
1597
+ event.stopPropagation();
1598
+
1599
+ _this.toggle();
1600
+ });
1601
+ };
1602
+
1603
+ _proto._getConfig = function _getConfig(config) {
1604
+ config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config);
1605
+ Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
1606
+ return config;
1607
+ };
1608
+
1609
+ _proto._getMenuElement = function _getMenuElement() {
1610
+ if (!this._menu) {
1611
+ var parent = Dropdown._getParentFromElement(this._element);
1612
+
1613
+ this._menu = $$$1(parent).find(Selector.MENU)[0];
1614
+ }
1615
+
1616
+ return this._menu;
1617
+ };
1618
+
1619
+ _proto._getPlacement = function _getPlacement() {
1620
+ var $parentDropdown = $$$1(this._element).parent();
1621
+ var placement = AttachmentMap.BOTTOM; // Handle dropup
1622
+
1623
+ if ($parentDropdown.hasClass(ClassName.DROPUP)) {
1624
+ placement = AttachmentMap.TOP;
1625
+
1626
+ if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1627
+ placement = AttachmentMap.TOPEND;
1628
+ }
1629
+ } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
1630
+ placement = AttachmentMap.RIGHT;
1631
+ } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
1632
+ placement = AttachmentMap.LEFT;
1633
+ } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1634
+ placement = AttachmentMap.BOTTOMEND;
1635
+ }
1636
+
1637
+ return placement;
1638
+ };
1639
+
1640
+ _proto._detectNavbar = function _detectNavbar() {
1641
+ return $$$1(this._element).closest('.navbar').length > 0;
1642
+ };
1643
+
1644
+ _proto._getPopperConfig = function _getPopperConfig() {
1645
+ var _this2 = this;
1646
+
1647
+ var offsetConf = {};
1648
+
1649
+ if (typeof this._config.offset === 'function') {
1650
+ offsetConf.fn = function (data) {
1651
+ data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
1652
+ return data;
1653
+ };
1654
+ } else {
1655
+ offsetConf.offset = this._config.offset;
1656
+ }
1657
+
1658
+ var popperConfig = {
1659
+ placement: this._getPlacement(),
1660
+ modifiers: {
1661
+ offset: offsetConf,
1662
+ flip: {
1663
+ enabled: this._config.flip
1664
+ },
1665
+ preventOverflow: {
1666
+ boundariesElement: this._config.boundary
1667
+ }
1668
+ }
1669
+ };
1670
+ return popperConfig;
1671
+ }; // Static
1672
+
1673
+
1674
+ Dropdown._jQueryInterface = function _jQueryInterface(config) {
1675
+ return this.each(function () {
1676
+ var data = $$$1(this).data(DATA_KEY);
1677
+
1678
+ var _config = typeof config === 'object' ? config : null;
1679
+
1680
+ if (!data) {
1681
+ data = new Dropdown(this, _config);
1682
+ $$$1(this).data(DATA_KEY, data);
1683
+ }
1684
+
1685
+ if (typeof config === 'string') {
1686
+ if (typeof data[config] === 'undefined') {
1687
+ throw new TypeError("No method named \"" + config + "\"");
1688
+ }
1689
+
1690
+ data[config]();
1691
+ }
1692
+ });
1693
+ };
1694
+
1695
+ Dropdown._clearMenus = function _clearMenus(event) {
1696
+ if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
1697
+ return;
1698
+ }
1699
+
1700
+ var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE));
1701
+
1702
+ for (var i = 0; i < toggles.length; i++) {
1703
+ var parent = Dropdown._getParentFromElement(toggles[i]);
1704
+
1705
+ var context = $$$1(toggles[i]).data(DATA_KEY);
1706
+ var relatedTarget = {
1707
+ relatedTarget: toggles[i]
1708
+ };
1709
+
1710
+ if (!context) {
1711
+ continue;
1712
+ }
1713
+
1714
+ var dropdownMenu = context._menu;
1715
+
1716
+ if (!$$$1(parent).hasClass(ClassName.SHOW)) {
1717
+ continue;
1718
+ }
1719
+
1720
+ if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) {
1721
+ continue;
1722
+ }
1723
+
1724
+ var hideEvent = $$$1.Event(Event.HIDE, relatedTarget);
1725
+ $$$1(parent).trigger(hideEvent);
1726
+
1727
+ if (hideEvent.isDefaultPrevented()) {
1728
+ continue;
1729
+ } // If this is a touch-enabled device we remove the extra
1730
+ // empty mouseover listeners we added for iOS support
1731
+
1732
+
1733
+ if ('ontouchstart' in document.documentElement) {
1734
+ $$$1('body').children().off('mouseover', null, $$$1.noop);
1735
+ }
1736
+
1737
+ toggles[i].setAttribute('aria-expanded', 'false');
1738
+ $$$1(dropdownMenu).removeClass(ClassName.SHOW);
1739
+ $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget));
1740
+ }
1741
+ };
1742
+
1743
+ Dropdown._getParentFromElement = function _getParentFromElement(element) {
1744
+ var parent;
1745
+ var selector = Util.getSelectorFromElement(element);
1746
+
1747
+ if (selector) {
1748
+ parent = $$$1(selector)[0];
1749
+ }
1750
+
1751
+ return parent || element.parentNode;
1752
+ }; // eslint-disable-next-line complexity
1753
+
1754
+
1755
+ Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1756
+ // If not input/textarea:
1757
+ // - And not a key in REGEXP_KEYDOWN => not a dropdown command
1758
+ // If input/textarea:
1759
+ // - If space key => not a dropdown command
1760
+ // - If key is other than escape
1761
+ // - If key is not up or down => not a dropdown command
1762
+ // - If trigger inside the menu => not a dropdown command
1763
+ if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1764
+ return;
1765
+ }
1766
+
1767
+ event.preventDefault();
1768
+ event.stopPropagation();
1769
+
1770
+ if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) {
1771
+ return;
1772
+ }
1773
+
1774
+ var parent = Dropdown._getParentFromElement(this);
1775
+
1776
+ var isActive = $$$1(parent).hasClass(ClassName.SHOW);
1777
+
1778
+ if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1779
+ if (event.which === ESCAPE_KEYCODE) {
1780
+ var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0];
1781
+ $$$1(toggle).trigger('focus');
1782
+ }
1783
+
1784
+ $$$1(this).trigger('click');
1785
+ return;
1786
+ }
1787
+
1788
+ var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get();
1789
+
1790
+ if (items.length === 0) {
1791
+ return;
1792
+ }
1793
+
1794
+ var index = items.indexOf(event.target);
1795
+
1796
+ if (event.which === ARROW_UP_KEYCODE && index > 0) {
1797
+ // Up
1798
+ index--;
1799
+ }
1800
+
1801
+ if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
1802
+ // Down
1803
+ index++;
1804
+ }
1805
+
1806
+ if (index < 0) {
1807
+ index = 0;
1808
+ }
1809
+
1810
+ items[index].focus();
1811
+ };
1812
+
1813
+ _createClass(Dropdown, null, [{
1814
+ key: "VERSION",
1815
+ get: function get() {
1816
+ return VERSION;
1817
+ }
1818
+ }, {
1819
+ key: "Default",
1820
+ get: function get() {
1821
+ return Default;
1822
+ }
1823
+ }, {
1824
+ key: "DefaultType",
1825
+ get: function get() {
1826
+ return DefaultType;
1827
+ }
1828
+ }]);
1829
+ return Dropdown;
1830
+ }();
1831
+ /**
1832
+ * ------------------------------------------------------------------------
1833
+ * Data Api implementation
1834
+ * ------------------------------------------------------------------------
1835
+ */
1836
+
1837
+
1838
+ $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
1839
+ event.preventDefault();
1840
+ event.stopPropagation();
1841
+
1842
+ Dropdown._jQueryInterface.call($$$1(this), 'toggle');
1843
+ }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
1844
+ e.stopPropagation();
1845
+ });
1846
+ /**
1847
+ * ------------------------------------------------------------------------
1848
+ * jQuery
1849
+ * ------------------------------------------------------------------------
1850
+ */
1851
+
1852
+ $$$1.fn[NAME] = Dropdown._jQueryInterface;
1853
+ $$$1.fn[NAME].Constructor = Dropdown;
1854
+
1855
+ $$$1.fn[NAME].noConflict = function () {
1856
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1857
+ return Dropdown._jQueryInterface;
1858
+ };
1859
+
1860
+ return Dropdown;
1861
+ }($, Popper);
1862
+
1863
+ /**
1864
+ * --------------------------------------------------------------------------
1865
+ * Bootstrap (v4.0.0): modal.js
1866
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1867
+ * --------------------------------------------------------------------------
1868
+ */
1869
+
1870
+ var Modal = function ($$$1) {
1871
+ /**
1872
+ * ------------------------------------------------------------------------
1873
+ * Constants
1874
+ * ------------------------------------------------------------------------
1875
+ */
1876
+ var NAME = 'modal';
1877
+ var VERSION = '4.0.0';
1878
+ var DATA_KEY = 'bs.modal';
1879
+ var EVENT_KEY = "." + DATA_KEY;
1880
+ var DATA_API_KEY = '.data-api';
1881
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1882
+ var TRANSITION_DURATION = 300;
1883
+ var BACKDROP_TRANSITION_DURATION = 150;
1884
+ var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1885
+
1886
+ var Default = {
1887
+ backdrop: true,
1888
+ keyboard: true,
1889
+ focus: true,
1890
+ show: true
1891
+ };
1892
+ var DefaultType = {
1893
+ backdrop: '(boolean|string)',
1894
+ keyboard: 'boolean',
1895
+ focus: 'boolean',
1896
+ show: 'boolean'
1897
+ };
1898
+ var Event = {
1899
+ HIDE: "hide" + EVENT_KEY,
1900
+ HIDDEN: "hidden" + EVENT_KEY,
1901
+ SHOW: "show" + EVENT_KEY,
1902
+ SHOWN: "shown" + EVENT_KEY,
1903
+ FOCUSIN: "focusin" + EVENT_KEY,
1904
+ RESIZE: "resize" + EVENT_KEY,
1905
+ CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
1906
+ KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
1907
+ MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
1908
+ MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
1909
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1910
+ };
1911
+ var ClassName = {
1912
+ SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
1913
+ BACKDROP: 'modal-backdrop',
1914
+ OPEN: 'modal-open',
1915
+ FADE: 'fade',
1916
+ SHOW: 'show'
1917
+ };
1918
+ var Selector = {
1919
+ DIALOG: '.modal-dialog',
1920
+ DATA_TOGGLE: '[data-toggle="modal"]',
1921
+ DATA_DISMISS: '[data-dismiss="modal"]',
1922
+ FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
1923
+ STICKY_CONTENT: '.sticky-top',
1924
+ NAVBAR_TOGGLER: '.navbar-toggler'
1925
+ /**
1926
+ * ------------------------------------------------------------------------
1927
+ * Class Definition
1928
+ * ------------------------------------------------------------------------
1929
+ */
1930
+
1931
+ };
1932
+
1933
+ var Modal =
1934
+ /*#__PURE__*/
1935
+ function () {
1936
+ function Modal(element, config) {
1937
+ this._config = this._getConfig(config);
1938
+ this._element = element;
1939
+ this._dialog = $$$1(element).find(Selector.DIALOG)[0];
1940
+ this._backdrop = null;
1941
+ this._isShown = false;
1942
+ this._isBodyOverflowing = false;
1943
+ this._ignoreBackdropClick = false;
1944
+ this._originalBodyPadding = 0;
1945
+ this._scrollbarWidth = 0;
1946
+ } // Getters
1947
+
1948
+
1949
+ var _proto = Modal.prototype;
1950
+
1951
+ // Public
1952
+ _proto.toggle = function toggle(relatedTarget) {
1953
+ return this._isShown ? this.hide() : this.show(relatedTarget);
1954
+ };
1955
+
1956
+ _proto.show = function show(relatedTarget) {
1957
+ var _this = this;
1958
+
1959
+ if (this._isTransitioning || this._isShown) {
1960
+ return;
1961
+ }
1962
+
1963
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
1964
+ this._isTransitioning = true;
1965
+ }
1966
+
1967
+ var showEvent = $$$1.Event(Event.SHOW, {
1968
+ relatedTarget: relatedTarget
1969
+ });
1970
+ $$$1(this._element).trigger(showEvent);
1971
+
1972
+ if (this._isShown || showEvent.isDefaultPrevented()) {
1973
+ return;
1974
+ }
1975
+
1976
+ this._isShown = true;
1977
+
1978
+ this._checkScrollbar();
1979
+
1980
+ this._setScrollbar();
1981
+
1982
+ this._adjustDialog();
1983
+
1984
+ $$$1(document.body).addClass(ClassName.OPEN);
1985
+
1986
+ this._setEscapeEvent();
1987
+
1988
+ this._setResizeEvent();
1989
+
1990
+ $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
1991
+ return _this.hide(event);
1992
+ });
1993
+ $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
1994
+ $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
1995
+ if ($$$1(event.target).is(_this._element)) {
1996
+ _this._ignoreBackdropClick = true;
1997
+ }
1998
+ });
1999
+ });
2000
+
2001
+ this._showBackdrop(function () {
2002
+ return _this._showElement(relatedTarget);
2003
+ });
2004
+ };
2005
+
2006
+ _proto.hide = function hide(event) {
2007
+ var _this2 = this;
2008
+
2009
+ if (event) {
2010
+ event.preventDefault();
2011
+ }
2012
+
2013
+ if (this._isTransitioning || !this._isShown) {
2014
+ return;
2015
+ }
2016
+
2017
+ var hideEvent = $$$1.Event(Event.HIDE);
2018
+ $$$1(this._element).trigger(hideEvent);
2019
+
2020
+ if (!this._isShown || hideEvent.isDefaultPrevented()) {
2021
+ return;
2022
+ }
2023
+
2024
+ this._isShown = false;
2025
+ var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
2026
+
2027
+ if (transition) {
2028
+ this._isTransitioning = true;
2029
+ }
2030
+
2031
+ this._setEscapeEvent();
2032
+
2033
+ this._setResizeEvent();
2034
+
2035
+ $$$1(document).off(Event.FOCUSIN);
2036
+ $$$1(this._element).removeClass(ClassName.SHOW);
2037
+ $$$1(this._element).off(Event.CLICK_DISMISS);
2038
+ $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
2039
+
2040
+ if (transition) {
2041
+ $$$1(this._element).one(Util.TRANSITION_END, function (event) {
2042
+ return _this2._hideModal(event);
2043
+ }).emulateTransitionEnd(TRANSITION_DURATION);
2044
+ } else {
2045
+ this._hideModal();
2046
+ }
2047
+ };
2048
+
2049
+ _proto.dispose = function dispose() {
2050
+ $$$1.removeData(this._element, DATA_KEY);
2051
+ $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
2052
+ this._config = null;
2053
+ this._element = null;
2054
+ this._dialog = null;
2055
+ this._backdrop = null;
2056
+ this._isShown = null;
2057
+ this._isBodyOverflowing = null;
2058
+ this._ignoreBackdropClick = null;
2059
+ this._scrollbarWidth = null;
2060
+ };
2061
+
2062
+ _proto.handleUpdate = function handleUpdate() {
2063
+ this._adjustDialog();
2064
+ }; // Private
2065
+
2066
+
2067
+ _proto._getConfig = function _getConfig(config) {
2068
+ config = _extends({}, Default, config);
2069
+ Util.typeCheckConfig(NAME, config, DefaultType);
2070
+ return config;
2071
+ };
2072
+
2073
+ _proto._showElement = function _showElement(relatedTarget) {
2074
+ var _this3 = this;
2075
+
2076
+ var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
2077
+
2078
+ if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2079
+ // Don't move modal's DOM position
2080
+ document.body.appendChild(this._element);
2081
+ }
2082
+
2083
+ this._element.style.display = 'block';
2084
+
2085
+ this._element.removeAttribute('aria-hidden');
2086
+
2087
+ this._element.scrollTop = 0;
2088
+
2089
+ if (transition) {
2090
+ Util.reflow(this._element);
2091
+ }
2092
+
2093
+ $$$1(this._element).addClass(ClassName.SHOW);
2094
+
2095
+ if (this._config.focus) {
2096
+ this._enforceFocus();
2097
+ }
2098
+
2099
+ var shownEvent = $$$1.Event(Event.SHOWN, {
2100
+ relatedTarget: relatedTarget
2101
+ });
2102
+
2103
+ var transitionComplete = function transitionComplete() {
2104
+ if (_this3._config.focus) {
2105
+ _this3._element.focus();
2106
+ }
2107
+
2108
+ _this3._isTransitioning = false;
2109
+ $$$1(_this3._element).trigger(shownEvent);
2110
+ };
2111
+
2112
+ if (transition) {
2113
+ $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
2114
+ } else {
2115
+ transitionComplete();
2116
+ }
2117
+ };
2118
+
2119
+ _proto._enforceFocus = function _enforceFocus() {
2120
+ var _this4 = this;
2121
+
2122
+ $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop
2123
+ .on(Event.FOCUSIN, function (event) {
2124
+ if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
2125
+ _this4._element.focus();
2126
+ }
2127
+ });
2128
+ };
2129
+
2130
+ _proto._setEscapeEvent = function _setEscapeEvent() {
2131
+ var _this5 = this;
2132
+
2133
+ if (this._isShown && this._config.keyboard) {
2134
+ $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
2135
+ if (event.which === ESCAPE_KEYCODE) {
2136
+ event.preventDefault();
2137
+
2138
+ _this5.hide();
2139
+ }
2140
+ });
2141
+ } else if (!this._isShown) {
2142
+ $$$1(this._element).off(Event.KEYDOWN_DISMISS);
2143
+ }
2144
+ };
2145
+
2146
+ _proto._setResizeEvent = function _setResizeEvent() {
2147
+ var _this6 = this;
2148
+
2149
+ if (this._isShown) {
2150
+ $$$1(window).on(Event.RESIZE, function (event) {
2151
+ return _this6.handleUpdate(event);
2152
+ });
2153
+ } else {
2154
+ $$$1(window).off(Event.RESIZE);
2155
+ }
2156
+ };
2157
+
2158
+ _proto._hideModal = function _hideModal() {
2159
+ var _this7 = this;
2160
+
2161
+ this._element.style.display = 'none';
2162
+
2163
+ this._element.setAttribute('aria-hidden', true);
2164
+
2165
+ this._isTransitioning = false;
2166
+
2167
+ this._showBackdrop(function () {
2168
+ $$$1(document.body).removeClass(ClassName.OPEN);
2169
+
2170
+ _this7._resetAdjustments();
2171
+
2172
+ _this7._resetScrollbar();
2173
+
2174
+ $$$1(_this7._element).trigger(Event.HIDDEN);
2175
+ });
2176
+ };
2177
+
2178
+ _proto._removeBackdrop = function _removeBackdrop() {
2179
+ if (this._backdrop) {
2180
+ $$$1(this._backdrop).remove();
2181
+ this._backdrop = null;
2182
+ }
2183
+ };
2184
+
2185
+ _proto._showBackdrop = function _showBackdrop(callback) {
2186
+ var _this8 = this;
2187
+
2188
+ var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
2189
+
2190
+ if (this._isShown && this._config.backdrop) {
2191
+ var doAnimate = Util.supportsTransitionEnd() && animate;
2192
+ this._backdrop = document.createElement('div');
2193
+ this._backdrop.className = ClassName.BACKDROP;
2194
+
2195
+ if (animate) {
2196
+ $$$1(this._backdrop).addClass(animate);
2197
+ }
2198
+
2199
+ $$$1(this._backdrop).appendTo(document.body);
2200
+ $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
2201
+ if (_this8._ignoreBackdropClick) {
2202
+ _this8._ignoreBackdropClick = false;
2203
+ return;
2204
+ }
2205
+
2206
+ if (event.target !== event.currentTarget) {
2207
+ return;
2208
+ }
2209
+
2210
+ if (_this8._config.backdrop === 'static') {
2211
+ _this8._element.focus();
2212
+ } else {
2213
+ _this8.hide();
2214
+ }
2215
+ });
2216
+
2217
+ if (doAnimate) {
2218
+ Util.reflow(this._backdrop);
2219
+ }
2220
+
2221
+ $$$1(this._backdrop).addClass(ClassName.SHOW);
2222
+
2223
+ if (!callback) {
2224
+ return;
2225
+ }
2226
+
2227
+ if (!doAnimate) {
2228
+ callback();
2229
+ return;
2230
+ }
2231
+
2232
+ $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2233
+ } else if (!this._isShown && this._backdrop) {
2234
+ $$$1(this._backdrop).removeClass(ClassName.SHOW);
2235
+
2236
+ var callbackRemove = function callbackRemove() {
2237
+ _this8._removeBackdrop();
2238
+
2239
+ if (callback) {
2240
+ callback();
2241
+ }
2242
+ };
2243
+
2244
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
2245
+ $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2246
+ } else {
2247
+ callbackRemove();
2248
+ }
2249
+ } else if (callback) {
2250
+ callback();
2251
+ }
2252
+ }; // ----------------------------------------------------------------------
2253
+ // the following methods are used to handle overflowing modals
2254
+ // todo (fat): these should probably be refactored out of modal.js
2255
+ // ----------------------------------------------------------------------
2256
+
2257
+
2258
+ _proto._adjustDialog = function _adjustDialog() {
2259
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2260
+
2261
+ if (!this._isBodyOverflowing && isModalOverflowing) {
2262
+ this._element.style.paddingLeft = this._scrollbarWidth + "px";
2263
+ }
2264
+
2265
+ if (this._isBodyOverflowing && !isModalOverflowing) {
2266
+ this._element.style.paddingRight = this._scrollbarWidth + "px";
2267
+ }
2268
+ };
2269
+
2270
+ _proto._resetAdjustments = function _resetAdjustments() {
2271
+ this._element.style.paddingLeft = '';
2272
+ this._element.style.paddingRight = '';
2273
+ };
2274
+
2275
+ _proto._checkScrollbar = function _checkScrollbar() {
2276
+ var rect = document.body.getBoundingClientRect();
2277
+ this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2278
+ this._scrollbarWidth = this._getScrollbarWidth();
2279
+ };
2280
+
2281
+ _proto._setScrollbar = function _setScrollbar() {
2282
+ var _this9 = this;
2283
+
2284
+ if (this._isBodyOverflowing) {
2285
+ // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2286
+ // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2287
+ // Adjust fixed content padding
2288
+ $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
2289
+ var actualPadding = $$$1(element)[0].style.paddingRight;
2290
+ var calculatedPadding = $$$1(element).css('padding-right');
2291
+ $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2292
+ }); // Adjust sticky content margin
2293
+
2294
+ $$$1(Selector.STICKY_CONTENT).each(function (index, element) {
2295
+ var actualMargin = $$$1(element)[0].style.marginRight;
2296
+ var calculatedMargin = $$$1(element).css('margin-right');
2297
+ $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2298
+ }); // Adjust navbar-toggler margin
2299
+
2300
+ $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
2301
+ var actualMargin = $$$1(element)[0].style.marginRight;
2302
+ var calculatedMargin = $$$1(element).css('margin-right');
2303
+ $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
2304
+ }); // Adjust body padding
2305
+
2306
+ var actualPadding = document.body.style.paddingRight;
2307
+ var calculatedPadding = $$$1('body').css('padding-right');
2308
+ $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2309
+ }
2310
+ };
2311
+
2312
+ _proto._resetScrollbar = function _resetScrollbar() {
2313
+ // Restore fixed content padding
2314
+ $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
2315
+ var padding = $$$1(element).data('padding-right');
2316
+
2317
+ if (typeof padding !== 'undefined') {
2318
+ $$$1(element).css('padding-right', padding).removeData('padding-right');
2319
+ }
2320
+ }); // Restore sticky content and navbar-toggler margin
2321
+
2322
+ $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
2323
+ var margin = $$$1(element).data('margin-right');
2324
+
2325
+ if (typeof margin !== 'undefined') {
2326
+ $$$1(element).css('margin-right', margin).removeData('margin-right');
2327
+ }
2328
+ }); // Restore body padding
2329
+
2330
+ var padding = $$$1('body').data('padding-right');
2331
+
2332
+ if (typeof padding !== 'undefined') {
2333
+ $$$1('body').css('padding-right', padding).removeData('padding-right');
2334
+ }
2335
+ };
2336
+
2337
+ _proto._getScrollbarWidth = function _getScrollbarWidth() {
2338
+ // thx d.walsh
2339
+ var scrollDiv = document.createElement('div');
2340
+ scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
2341
+ document.body.appendChild(scrollDiv);
2342
+ var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2343
+ document.body.removeChild(scrollDiv);
2344
+ return scrollbarWidth;
2345
+ }; // Static
2346
+
2347
+
2348
+ Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2349
+ return this.each(function () {
2350
+ var data = $$$1(this).data(DATA_KEY);
2351
+
2352
+ var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config);
2353
+
2354
+ if (!data) {
2355
+ data = new Modal(this, _config);
2356
+ $$$1(this).data(DATA_KEY, data);
2357
+ }
2358
+
2359
+ if (typeof config === 'string') {
2360
+ if (typeof data[config] === 'undefined') {
2361
+ throw new TypeError("No method named \"" + config + "\"");
2362
+ }
2363
+
2364
+ data[config](relatedTarget);
2365
+ } else if (_config.show) {
2366
+ data.show(relatedTarget);
2367
+ }
2368
+ });
2369
+ };
2370
+
2371
+ _createClass(Modal, null, [{
2372
+ key: "VERSION",
2373
+ get: function get() {
2374
+ return VERSION;
2375
+ }
2376
+ }, {
2377
+ key: "Default",
2378
+ get: function get() {
2379
+ return Default;
2380
+ }
2381
+ }]);
2382
+ return Modal;
2383
+ }();
2384
+ /**
2385
+ * ------------------------------------------------------------------------
2386
+ * Data Api implementation
2387
+ * ------------------------------------------------------------------------
2388
+ */
2389
+
2390
+
2391
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
2392
+ var _this10 = this;
2393
+
2394
+ var target;
2395
+ var selector = Util.getSelectorFromElement(this);
2396
+
2397
+ if (selector) {
2398
+ target = $$$1(selector)[0];
2399
+ }
2400
+
2401
+ var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data());
2402
+
2403
+ if (this.tagName === 'A' || this.tagName === 'AREA') {
2404
+ event.preventDefault();
2405
+ }
2406
+
2407
+ var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
2408
+ if (showEvent.isDefaultPrevented()) {
2409
+ // Only register focus restorer if modal will actually get shown
2410
+ return;
2411
+ }
2412
+
2413
+ $target.one(Event.HIDDEN, function () {
2414
+ if ($$$1(_this10).is(':visible')) {
2415
+ _this10.focus();
2416
+ }
2417
+ });
2418
+ });
2419
+
2420
+ Modal._jQueryInterface.call($$$1(target), config, this);
2421
+ });
2422
+ /**
2423
+ * ------------------------------------------------------------------------
2424
+ * jQuery
2425
+ * ------------------------------------------------------------------------
2426
+ */
2427
+
2428
+ $$$1.fn[NAME] = Modal._jQueryInterface;
2429
+ $$$1.fn[NAME].Constructor = Modal;
2430
+
2431
+ $$$1.fn[NAME].noConflict = function () {
2432
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
2433
+ return Modal._jQueryInterface;
2434
+ };
2435
+
2436
+ return Modal;
2437
+ }($);
2438
+
2439
+ /**
2440
+ * --------------------------------------------------------------------------
2441
+ * Bootstrap (v4.0.0): tooltip.js
2442
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2443
+ * --------------------------------------------------------------------------
2444
+ */
2445
+
2446
+ var Tooltip = function ($$$1) {
2447
+ /**
2448
+ * ------------------------------------------------------------------------
2449
+ * Constants
2450
+ * ------------------------------------------------------------------------
2451
+ */
2452
+ var NAME = 'tooltip';
2453
+ var VERSION = '4.0.0';
2454
+ var DATA_KEY = 'bs.tooltip';
2455
+ var EVENT_KEY = "." + DATA_KEY;
2456
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
2457
+ var TRANSITION_DURATION = 150;
2458
+ var CLASS_PREFIX = 'bs-tooltip';
2459
+ var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2460
+ var DefaultType = {
2461
+ animation: 'boolean',
2462
+ template: 'string',
2463
+ title: '(string|element|function)',
2464
+ trigger: 'string',
2465
+ delay: '(number|object)',
2466
+ html: 'boolean',
2467
+ selector: '(string|boolean)',
2468
+ placement: '(string|function)',
2469
+ offset: '(number|string)',
2470
+ container: '(string|element|boolean)',
2471
+ fallbackPlacement: '(string|array)',
2472
+ boundary: '(string|element)'
2473
+ };
2474
+ var AttachmentMap = {
2475
+ AUTO: 'auto',
2476
+ TOP: 'top',
2477
+ RIGHT: 'right',
2478
+ BOTTOM: 'bottom',
2479
+ LEFT: 'left'
2480
+ };
2481
+ var Default = {
2482
+ animation: true,
2483
+ template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2484
+ trigger: 'hover focus',
2485
+ title: '',
2486
+ delay: 0,
2487
+ html: false,
2488
+ selector: false,
2489
+ placement: 'top',
2490
+ offset: 0,
2491
+ container: false,
2492
+ fallbackPlacement: 'flip',
2493
+ boundary: 'scrollParent'
2494
+ };
2495
+ var HoverState = {
2496
+ SHOW: 'show',
2497
+ OUT: 'out'
2498
+ };
2499
+ var Event = {
2500
+ HIDE: "hide" + EVENT_KEY,
2501
+ HIDDEN: "hidden" + EVENT_KEY,
2502
+ SHOW: "show" + EVENT_KEY,
2503
+ SHOWN: "shown" + EVENT_KEY,
2504
+ INSERTED: "inserted" + EVENT_KEY,
2505
+ CLICK: "click" + EVENT_KEY,
2506
+ FOCUSIN: "focusin" + EVENT_KEY,
2507
+ FOCUSOUT: "focusout" + EVENT_KEY,
2508
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
2509
+ MOUSELEAVE: "mouseleave" + EVENT_KEY
2510
+ };
2511
+ var ClassName = {
2512
+ FADE: 'fade',
2513
+ SHOW: 'show'
2514
+ };
2515
+ var Selector = {
2516
+ TOOLTIP: '.tooltip',
2517
+ TOOLTIP_INNER: '.tooltip-inner',
2518
+ ARROW: '.arrow'
2519
+ };
2520
+ var Trigger = {
2521
+ HOVER: 'hover',
2522
+ FOCUS: 'focus',
2523
+ CLICK: 'click',
2524
+ MANUAL: 'manual'
2525
+ /**
2526
+ * ------------------------------------------------------------------------
2527
+ * Class Definition
2528
+ * ------------------------------------------------------------------------
2529
+ */
2530
+
2531
+ };
2532
+
2533
+ var Tooltip =
2534
+ /*#__PURE__*/
2535
+ function () {
2536
+ function Tooltip(element, config) {
2537
+ /**
2538
+ * Check for Popper dependency
2539
+ * Popper - https://popper.js.org
2540
+ */
2541
+ if (typeof Popper === 'undefined') {
2542
+ throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');
2543
+ } // private
2544
+
2545
+
2546
+ this._isEnabled = true;
2547
+ this._timeout = 0;
2548
+ this._hoverState = '';
2549
+ this._activeTrigger = {};
2550
+ this._popper = null; // Protected
2551
+
2552
+ this.element = element;
2553
+ this.config = this._getConfig(config);
2554
+ this.tip = null;
2555
+
2556
+ this._setListeners();
2557
+ } // Getters
2558
+
2559
+
2560
+ var _proto = Tooltip.prototype;
2561
+
2562
+ // Public
2563
+ _proto.enable = function enable() {
2564
+ this._isEnabled = true;
2565
+ };
2566
+
2567
+ _proto.disable = function disable() {
2568
+ this._isEnabled = false;
2569
+ };
2570
+
2571
+ _proto.toggleEnabled = function toggleEnabled() {
2572
+ this._isEnabled = !this._isEnabled;
2573
+ };
2574
+
2575
+ _proto.toggle = function toggle(event) {
2576
+ if (!this._isEnabled) {
2577
+ return;
2578
+ }
2579
+
2580
+ if (event) {
2581
+ var dataKey = this.constructor.DATA_KEY;
2582
+ var context = $$$1(event.currentTarget).data(dataKey);
2583
+
2584
+ if (!context) {
2585
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2586
+ $$$1(event.currentTarget).data(dataKey, context);
2587
+ }
2588
+
2589
+ context._activeTrigger.click = !context._activeTrigger.click;
2590
+
2591
+ if (context._isWithActiveTrigger()) {
2592
+ context._enter(null, context);
2593
+ } else {
2594
+ context._leave(null, context);
2595
+ }
2596
+ } else {
2597
+ if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
2598
+ this._leave(null, this);
2599
+
2600
+ return;
2601
+ }
2602
+
2603
+ this._enter(null, this);
2604
+ }
2605
+ };
2606
+
2607
+ _proto.dispose = function dispose() {
2608
+ clearTimeout(this._timeout);
2609
+ $$$1.removeData(this.element, this.constructor.DATA_KEY);
2610
+ $$$1(this.element).off(this.constructor.EVENT_KEY);
2611
+ $$$1(this.element).closest('.modal').off('hide.bs.modal');
2612
+
2613
+ if (this.tip) {
2614
+ $$$1(this.tip).remove();
2615
+ }
2616
+
2617
+ this._isEnabled = null;
2618
+ this._timeout = null;
2619
+ this._hoverState = null;
2620
+ this._activeTrigger = null;
2621
+
2622
+ if (this._popper !== null) {
2623
+ this._popper.destroy();
2624
+ }
2625
+
2626
+ this._popper = null;
2627
+ this.element = null;
2628
+ this.config = null;
2629
+ this.tip = null;
2630
+ };
2631
+
2632
+ _proto.show = function show() {
2633
+ var _this = this;
2634
+
2635
+ if ($$$1(this.element).css('display') === 'none') {
2636
+ throw new Error('Please use show on visible elements');
2637
+ }
2638
+
2639
+ var showEvent = $$$1.Event(this.constructor.Event.SHOW);
2640
+
2641
+ if (this.isWithContent() && this._isEnabled) {
2642
+ $$$1(this.element).trigger(showEvent);
2643
+ var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
2644
+
2645
+ if (showEvent.isDefaultPrevented() || !isInTheDom) {
2646
+ return;
2647
+ }
2648
+
2649
+ var tip = this.getTipElement();
2650
+ var tipId = Util.getUID(this.constructor.NAME);
2651
+ tip.setAttribute('id', tipId);
2652
+ this.element.setAttribute('aria-describedby', tipId);
2653
+ this.setContent();
2654
+
2655
+ if (this.config.animation) {
2656
+ $$$1(tip).addClass(ClassName.FADE);
2657
+ }
2658
+
2659
+ var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
2660
+
2661
+ var attachment = this._getAttachment(placement);
2662
+
2663
+ this.addAttachmentClass(attachment);
2664
+ var container = this.config.container === false ? document.body : $$$1(this.config.container);
2665
+ $$$1(tip).data(this.constructor.DATA_KEY, this);
2666
+
2667
+ if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
2668
+ $$$1(tip).appendTo(container);
2669
+ }
2670
+
2671
+ $$$1(this.element).trigger(this.constructor.Event.INSERTED);
2672
+ this._popper = new Popper(this.element, tip, {
2673
+ placement: attachment,
2674
+ modifiers: {
2675
+ offset: {
2676
+ offset: this.config.offset
2677
+ },
2678
+ flip: {
2679
+ behavior: this.config.fallbackPlacement
2680
+ },
2681
+ arrow: {
2682
+ element: Selector.ARROW
2683
+ },
2684
+ preventOverflow: {
2685
+ boundariesElement: this.config.boundary
2686
+ }
2687
+ },
2688
+ onCreate: function onCreate(data) {
2689
+ if (data.originalPlacement !== data.placement) {
2690
+ _this._handlePopperPlacementChange(data);
2691
+ }
2692
+ },
2693
+ onUpdate: function onUpdate(data) {
2694
+ _this._handlePopperPlacementChange(data);
2695
+ }
2696
+ });
2697
+ $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
2698
+ // empty mouseover listeners to the body's immediate children;
2699
+ // only needed because of broken event delegation on iOS
2700
+ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2701
+
2702
+ if ('ontouchstart' in document.documentElement) {
2703
+ $$$1('body').children().on('mouseover', null, $$$1.noop);
2704
+ }
2705
+
2706
+ var complete = function complete() {
2707
+ if (_this.config.animation) {
2708
+ _this._fixTransition();
2709
+ }
2710
+
2711
+ var prevHoverState = _this._hoverState;
2712
+ _this._hoverState = null;
2713
+ $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
2714
+
2715
+ if (prevHoverState === HoverState.OUT) {
2716
+ _this._leave(null, _this);
2717
+ }
2718
+ };
2719
+
2720
+ if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
2721
+ $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
2722
+ } else {
2723
+ complete();
2724
+ }
2725
+ }
2726
+ };
2727
+
2728
+ _proto.hide = function hide(callback) {
2729
+ var _this2 = this;
2730
+
2731
+ var tip = this.getTipElement();
2732
+ var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
2733
+
2734
+ var complete = function complete() {
2735
+ if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
2736
+ tip.parentNode.removeChild(tip);
2737
+ }
2738
+
2739
+ _this2._cleanTipClass();
2740
+
2741
+ _this2.element.removeAttribute('aria-describedby');
2742
+
2743
+ $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
2744
+
2745
+ if (_this2._popper !== null) {
2746
+ _this2._popper.destroy();
2747
+ }
2748
+
2749
+ if (callback) {
2750
+ callback();
2751
+ }
2752
+ };
2753
+
2754
+ $$$1(this.element).trigger(hideEvent);
2755
+
2756
+ if (hideEvent.isDefaultPrevented()) {
2757
+ return;
2758
+ }
2759
+
2760
+ $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
2761
+ // empty mouseover listeners we added for iOS support
2762
+
2763
+ if ('ontouchstart' in document.documentElement) {
2764
+ $$$1('body').children().off('mouseover', null, $$$1.noop);
2765
+ }
2766
+
2767
+ this._activeTrigger[Trigger.CLICK] = false;
2768
+ this._activeTrigger[Trigger.FOCUS] = false;
2769
+ this._activeTrigger[Trigger.HOVER] = false;
2770
+
2771
+ if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
2772
+ $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
2773
+ } else {
2774
+ complete();
2775
+ }
2776
+
2777
+ this._hoverState = '';
2778
+ };
2779
+
2780
+ _proto.update = function update() {
2781
+ if (this._popper !== null) {
2782
+ this._popper.scheduleUpdate();
2783
+ }
2784
+ }; // Protected
2785
+
2786
+
2787
+ _proto.isWithContent = function isWithContent() {
2788
+ return Boolean(this.getTitle());
2789
+ };
2790
+
2791
+ _proto.addAttachmentClass = function addAttachmentClass(attachment) {
2792
+ $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
2793
+ };
2794
+
2795
+ _proto.getTipElement = function getTipElement() {
2796
+ this.tip = this.tip || $$$1(this.config.template)[0];
2797
+ return this.tip;
2798
+ };
2799
+
2800
+ _proto.setContent = function setContent() {
2801
+ var $tip = $$$1(this.getTipElement());
2802
+ this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
2803
+ $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
2804
+ };
2805
+
2806
+ _proto.setElementContent = function setElementContent($element, content) {
2807
+ var html = this.config.html;
2808
+
2809
+ if (typeof content === 'object' && (content.nodeType || content.jquery)) {
2810
+ // Content is a DOM node or a jQuery
2811
+ if (html) {
2812
+ if (!$$$1(content).parent().is($element)) {
2813
+ $element.empty().append(content);
2814
+ }
2815
+ } else {
2816
+ $element.text($$$1(content).text());
2817
+ }
2818
+ } else {
2819
+ $element[html ? 'html' : 'text'](content);
2820
+ }
2821
+ };
2822
+
2823
+ _proto.getTitle = function getTitle() {
2824
+ var title = this.element.getAttribute('data-original-title');
2825
+
2826
+ if (!title) {
2827
+ title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
2828
+ }
2829
+
2830
+ return title;
2831
+ }; // Private
2832
+
2833
+
2834
+ _proto._getAttachment = function _getAttachment(placement) {
2835
+ return AttachmentMap[placement.toUpperCase()];
2836
+ };
2837
+
2838
+ _proto._setListeners = function _setListeners() {
2839
+ var _this3 = this;
2840
+
2841
+ var triggers = this.config.trigger.split(' ');
2842
+ triggers.forEach(function (trigger) {
2843
+ if (trigger === 'click') {
2844
+ $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
2845
+ return _this3.toggle(event);
2846
+ });
2847
+ } else if (trigger !== Trigger.MANUAL) {
2848
+ var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
2849
+ var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
2850
+ $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
2851
+ return _this3._enter(event);
2852
+ }).on(eventOut, _this3.config.selector, function (event) {
2853
+ return _this3._leave(event);
2854
+ });
2855
+ }
2856
+
2857
+ $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
2858
+ return _this3.hide();
2859
+ });
2860
+ });
2861
+
2862
+ if (this.config.selector) {
2863
+ this.config = _extends({}, this.config, {
2864
+ trigger: 'manual',
2865
+ selector: ''
2866
+ });
2867
+ } else {
2868
+ this._fixTitle();
2869
+ }
2870
+ };
2871
+
2872
+ _proto._fixTitle = function _fixTitle() {
2873
+ var titleType = typeof this.element.getAttribute('data-original-title');
2874
+
2875
+ if (this.element.getAttribute('title') || titleType !== 'string') {
2876
+ this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
2877
+ this.element.setAttribute('title', '');
2878
+ }
2879
+ };
2880
+
2881
+ _proto._enter = function _enter(event, context) {
2882
+ var dataKey = this.constructor.DATA_KEY;
2883
+ context = context || $$$1(event.currentTarget).data(dataKey);
2884
+
2885
+ if (!context) {
2886
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2887
+ $$$1(event.currentTarget).data(dataKey, context);
2888
+ }
2889
+
2890
+ if (event) {
2891
+ context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
2892
+ }
2893
+
2894
+ if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
2895
+ context._hoverState = HoverState.SHOW;
2896
+ return;
2897
+ }
2898
+
2899
+ clearTimeout(context._timeout);
2900
+ context._hoverState = HoverState.SHOW;
2901
+
2902
+ if (!context.config.delay || !context.config.delay.show) {
2903
+ context.show();
2904
+ return;
2905
+ }
2906
+
2907
+ context._timeout = setTimeout(function () {
2908
+ if (context._hoverState === HoverState.SHOW) {
2909
+ context.show();
2910
+ }
2911
+ }, context.config.delay.show);
2912
+ };
2913
+
2914
+ _proto._leave = function _leave(event, context) {
2915
+ var dataKey = this.constructor.DATA_KEY;
2916
+ context = context || $$$1(event.currentTarget).data(dataKey);
2917
+
2918
+ if (!context) {
2919
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2920
+ $$$1(event.currentTarget).data(dataKey, context);
2921
+ }
2922
+
2923
+ if (event) {
2924
+ context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
2925
+ }
2926
+
2927
+ if (context._isWithActiveTrigger()) {
2928
+ return;
2929
+ }
2930
+
2931
+ clearTimeout(context._timeout);
2932
+ context._hoverState = HoverState.OUT;
2933
+
2934
+ if (!context.config.delay || !context.config.delay.hide) {
2935
+ context.hide();
2936
+ return;
2937
+ }
2938
+
2939
+ context._timeout = setTimeout(function () {
2940
+ if (context._hoverState === HoverState.OUT) {
2941
+ context.hide();
2942
+ }
2943
+ }, context.config.delay.hide);
2944
+ };
2945
+
2946
+ _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
2947
+ for (var trigger in this._activeTrigger) {
2948
+ if (this._activeTrigger[trigger]) {
2949
+ return true;
2950
+ }
2951
+ }
2952
+
2953
+ return false;
2954
+ };
2955
+
2956
+ _proto._getConfig = function _getConfig(config) {
2957
+ config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config);
2958
+
2959
+ if (typeof config.delay === 'number') {
2960
+ config.delay = {
2961
+ show: config.delay,
2962
+ hide: config.delay
2963
+ };
2964
+ }
2965
+
2966
+ if (typeof config.title === 'number') {
2967
+ config.title = config.title.toString();
2968
+ }
2969
+
2970
+ if (typeof config.content === 'number') {
2971
+ config.content = config.content.toString();
2972
+ }
2973
+
2974
+ Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
2975
+ return config;
2976
+ };
2977
+
2978
+ _proto._getDelegateConfig = function _getDelegateConfig() {
2979
+ var config = {};
2980
+
2981
+ if (this.config) {
2982
+ for (var key in this.config) {
2983
+ if (this.constructor.Default[key] !== this.config[key]) {
2984
+ config[key] = this.config[key];
2985
+ }
2986
+ }
2987
+ }
2988
+
2989
+ return config;
2990
+ };
2991
+
2992
+ _proto._cleanTipClass = function _cleanTipClass() {
2993
+ var $tip = $$$1(this.getTipElement());
2994
+ var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
2995
+
2996
+ if (tabClass !== null && tabClass.length > 0) {
2997
+ $tip.removeClass(tabClass.join(''));
2998
+ }
2999
+ };
3000
+
3001
+ _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
3002
+ this._cleanTipClass();
3003
+
3004
+ this.addAttachmentClass(this._getAttachment(data.placement));
3005
+ };
3006
+
3007
+ _proto._fixTransition = function _fixTransition() {
3008
+ var tip = this.getTipElement();
3009
+ var initConfigAnimation = this.config.animation;
3010
+
3011
+ if (tip.getAttribute('x-placement') !== null) {
3012
+ return;
3013
+ }
3014
+
3015
+ $$$1(tip).removeClass(ClassName.FADE);
3016
+ this.config.animation = false;
3017
+ this.hide();
3018
+ this.show();
3019
+ this.config.animation = initConfigAnimation;
3020
+ }; // Static
3021
+
3022
+
3023
+ Tooltip._jQueryInterface = function _jQueryInterface(config) {
3024
+ return this.each(function () {
3025
+ var data = $$$1(this).data(DATA_KEY);
3026
+
3027
+ var _config = typeof config === 'object' && config;
3028
+
3029
+ if (!data && /dispose|hide/.test(config)) {
3030
+ return;
3031
+ }
3032
+
3033
+ if (!data) {
3034
+ data = new Tooltip(this, _config);
3035
+ $$$1(this).data(DATA_KEY, data);
3036
+ }
3037
+
3038
+ if (typeof config === 'string') {
3039
+ if (typeof data[config] === 'undefined') {
3040
+ throw new TypeError("No method named \"" + config + "\"");
3041
+ }
3042
+
3043
+ data[config]();
3044
+ }
3045
+ });
3046
+ };
3047
+
3048
+ _createClass(Tooltip, null, [{
3049
+ key: "VERSION",
3050
+ get: function get() {
3051
+ return VERSION;
3052
+ }
3053
+ }, {
3054
+ key: "Default",
3055
+ get: function get() {
3056
+ return Default;
3057
+ }
3058
+ }, {
3059
+ key: "NAME",
3060
+ get: function get() {
3061
+ return NAME;
3062
+ }
3063
+ }, {
3064
+ key: "DATA_KEY",
3065
+ get: function get() {
3066
+ return DATA_KEY;
3067
+ }
3068
+ }, {
3069
+ key: "Event",
3070
+ get: function get() {
3071
+ return Event;
3072
+ }
3073
+ }, {
3074
+ key: "EVENT_KEY",
3075
+ get: function get() {
3076
+ return EVENT_KEY;
3077
+ }
3078
+ }, {
3079
+ key: "DefaultType",
3080
+ get: function get() {
3081
+ return DefaultType;
3082
+ }
3083
+ }]);
3084
+ return Tooltip;
3085
+ }();
3086
+ /**
3087
+ * ------------------------------------------------------------------------
3088
+ * jQuery
3089
+ * ------------------------------------------------------------------------
3090
+ */
3091
+
3092
+
3093
+ $$$1.fn[NAME] = Tooltip._jQueryInterface;
3094
+ $$$1.fn[NAME].Constructor = Tooltip;
3095
+
3096
+ $$$1.fn[NAME].noConflict = function () {
3097
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3098
+ return Tooltip._jQueryInterface;
3099
+ };
3100
+
3101
+ return Tooltip;
3102
+ }($, Popper);
3103
+
3104
+ /**
3105
+ * --------------------------------------------------------------------------
3106
+ * Bootstrap (v4.0.0): popover.js
3107
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3108
+ * --------------------------------------------------------------------------
3109
+ */
3110
+
3111
+ var Popover = function ($$$1) {
3112
+ /**
3113
+ * ------------------------------------------------------------------------
3114
+ * Constants
3115
+ * ------------------------------------------------------------------------
3116
+ */
3117
+ var NAME = 'popover';
3118
+ var VERSION = '4.0.0';
3119
+ var DATA_KEY = 'bs.popover';
3120
+ var EVENT_KEY = "." + DATA_KEY;
3121
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3122
+ var CLASS_PREFIX = 'bs-popover';
3123
+ var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
3124
+ var Default = _extends({}, Tooltip.Default, {
3125
+ placement: 'right',
3126
+ trigger: 'click',
3127
+ content: '',
3128
+ template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3129
+ });
3130
+ var DefaultType = _extends({}, Tooltip.DefaultType, {
3131
+ content: '(string|element|function)'
3132
+ });
3133
+ var ClassName = {
3134
+ FADE: 'fade',
3135
+ SHOW: 'show'
3136
+ };
3137
+ var Selector = {
3138
+ TITLE: '.popover-header',
3139
+ CONTENT: '.popover-body'
3140
+ };
3141
+ var Event = {
3142
+ HIDE: "hide" + EVENT_KEY,
3143
+ HIDDEN: "hidden" + EVENT_KEY,
3144
+ SHOW: "show" + EVENT_KEY,
3145
+ SHOWN: "shown" + EVENT_KEY,
3146
+ INSERTED: "inserted" + EVENT_KEY,
3147
+ CLICK: "click" + EVENT_KEY,
3148
+ FOCUSIN: "focusin" + EVENT_KEY,
3149
+ FOCUSOUT: "focusout" + EVENT_KEY,
3150
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
3151
+ MOUSELEAVE: "mouseleave" + EVENT_KEY
3152
+ /**
3153
+ * ------------------------------------------------------------------------
3154
+ * Class Definition
3155
+ * ------------------------------------------------------------------------
3156
+ */
3157
+
3158
+ };
3159
+
3160
+ var Popover =
3161
+ /*#__PURE__*/
3162
+ function (_Tooltip) {
3163
+ _inheritsLoose(Popover, _Tooltip);
3164
+
3165
+ function Popover() {
3166
+ return _Tooltip.apply(this, arguments) || this;
3167
+ }
3168
+
3169
+ var _proto = Popover.prototype;
3170
+
3171
+ // Overrides
3172
+ _proto.isWithContent = function isWithContent() {
3173
+ return this.getTitle() || this._getContent();
3174
+ };
3175
+
3176
+ _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3177
+ $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3178
+ };
3179
+
3180
+ _proto.getTipElement = function getTipElement() {
3181
+ this.tip = this.tip || $$$1(this.config.template)[0];
3182
+ return this.tip;
3183
+ };
3184
+
3185
+ _proto.setContent = function setContent() {
3186
+ var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events
3187
+
3188
+ this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
3189
+
3190
+ var content = this._getContent();
3191
+
3192
+ if (typeof content === 'function') {
3193
+ content = content.call(this.element);
3194
+ }
3195
+
3196
+ this.setElementContent($tip.find(Selector.CONTENT), content);
3197
+ $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
3198
+ }; // Private
3199
+
3200
+
3201
+ _proto._getContent = function _getContent() {
3202
+ return this.element.getAttribute('data-content') || this.config.content;
3203
+ };
3204
+
3205
+ _proto._cleanTipClass = function _cleanTipClass() {
3206
+ var $tip = $$$1(this.getTipElement());
3207
+ var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3208
+
3209
+ if (tabClass !== null && tabClass.length > 0) {
3210
+ $tip.removeClass(tabClass.join(''));
3211
+ }
3212
+ }; // Static
3213
+
3214
+
3215
+ Popover._jQueryInterface = function _jQueryInterface(config) {
3216
+ return this.each(function () {
3217
+ var data = $$$1(this).data(DATA_KEY);
3218
+
3219
+ var _config = typeof config === 'object' ? config : null;
3220
+
3221
+ if (!data && /destroy|hide/.test(config)) {
3222
+ return;
3223
+ }
3224
+
3225
+ if (!data) {
3226
+ data = new Popover(this, _config);
3227
+ $$$1(this).data(DATA_KEY, data);
3228
+ }
3229
+
3230
+ if (typeof config === 'string') {
3231
+ if (typeof data[config] === 'undefined') {
3232
+ throw new TypeError("No method named \"" + config + "\"");
3233
+ }
3234
+
3235
+ data[config]();
3236
+ }
3237
+ });
3238
+ };
3239
+
3240
+ _createClass(Popover, null, [{
3241
+ key: "VERSION",
3242
+ // Getters
3243
+ get: function get() {
3244
+ return VERSION;
3245
+ }
3246
+ }, {
3247
+ key: "Default",
3248
+ get: function get() {
3249
+ return Default;
3250
+ }
3251
+ }, {
3252
+ key: "NAME",
3253
+ get: function get() {
3254
+ return NAME;
3255
+ }
3256
+ }, {
3257
+ key: "DATA_KEY",
3258
+ get: function get() {
3259
+ return DATA_KEY;
3260
+ }
3261
+ }, {
3262
+ key: "Event",
3263
+ get: function get() {
3264
+ return Event;
3265
+ }
3266
+ }, {
3267
+ key: "EVENT_KEY",
3268
+ get: function get() {
3269
+ return EVENT_KEY;
3270
+ }
3271
+ }, {
3272
+ key: "DefaultType",
3273
+ get: function get() {
3274
+ return DefaultType;
3275
+ }
3276
+ }]);
3277
+ return Popover;
3278
+ }(Tooltip);
3279
+ /**
3280
+ * ------------------------------------------------------------------------
3281
+ * jQuery
3282
+ * ------------------------------------------------------------------------
3283
+ */
3284
+
3285
+
3286
+ $$$1.fn[NAME] = Popover._jQueryInterface;
3287
+ $$$1.fn[NAME].Constructor = Popover;
3288
+
3289
+ $$$1.fn[NAME].noConflict = function () {
3290
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3291
+ return Popover._jQueryInterface;
3292
+ };
3293
+
3294
+ return Popover;
3295
+ }($);
3296
+
3297
+ /**
3298
+ * --------------------------------------------------------------------------
3299
+ * Bootstrap (v4.0.0): scrollspy.js
3300
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3301
+ * --------------------------------------------------------------------------
3302
+ */
3303
+
3304
+ var ScrollSpy = function ($$$1) {
3305
+ /**
3306
+ * ------------------------------------------------------------------------
3307
+ * Constants
3308
+ * ------------------------------------------------------------------------
3309
+ */
3310
+ var NAME = 'scrollspy';
3311
+ var VERSION = '4.0.0';
3312
+ var DATA_KEY = 'bs.scrollspy';
3313
+ var EVENT_KEY = "." + DATA_KEY;
3314
+ var DATA_API_KEY = '.data-api';
3315
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3316
+ var Default = {
3317
+ offset: 10,
3318
+ method: 'auto',
3319
+ target: ''
3320
+ };
3321
+ var DefaultType = {
3322
+ offset: 'number',
3323
+ method: 'string',
3324
+ target: '(string|element)'
3325
+ };
3326
+ var Event = {
3327
+ ACTIVATE: "activate" + EVENT_KEY,
3328
+ SCROLL: "scroll" + EVENT_KEY,
3329
+ LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
3330
+ };
3331
+ var ClassName = {
3332
+ DROPDOWN_ITEM: 'dropdown-item',
3333
+ DROPDOWN_MENU: 'dropdown-menu',
3334
+ ACTIVE: 'active'
3335
+ };
3336
+ var Selector = {
3337
+ DATA_SPY: '[data-spy="scroll"]',
3338
+ ACTIVE: '.active',
3339
+ NAV_LIST_GROUP: '.nav, .list-group',
3340
+ NAV_LINKS: '.nav-link',
3341
+ NAV_ITEMS: '.nav-item',
3342
+ LIST_ITEMS: '.list-group-item',
3343
+ DROPDOWN: '.dropdown',
3344
+ DROPDOWN_ITEMS: '.dropdown-item',
3345
+ DROPDOWN_TOGGLE: '.dropdown-toggle'
3346
+ };
3347
+ var OffsetMethod = {
3348
+ OFFSET: 'offset',
3349
+ POSITION: 'position'
3350
+ /**
3351
+ * ------------------------------------------------------------------------
3352
+ * Class Definition
3353
+ * ------------------------------------------------------------------------
3354
+ */
3355
+
3356
+ };
3357
+
3358
+ var ScrollSpy =
3359
+ /*#__PURE__*/
3360
+ function () {
3361
+ function ScrollSpy(element, config) {
3362
+ var _this = this;
3363
+
3364
+ this._element = element;
3365
+ this._scrollElement = element.tagName === 'BODY' ? window : element;
3366
+ this._config = this._getConfig(config);
3367
+ this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
3368
+ this._offsets = [];
3369
+ this._targets = [];
3370
+ this._activeTarget = null;
3371
+ this._scrollHeight = 0;
3372
+ $$$1(this._scrollElement).on(Event.SCROLL, function (event) {
3373
+ return _this._process(event);
3374
+ });
3375
+ this.refresh();
3376
+
3377
+ this._process();
3378
+ } // Getters
3379
+
3380
+
3381
+ var _proto = ScrollSpy.prototype;
3382
+
3383
+ // Public
3384
+ _proto.refresh = function refresh() {
3385
+ var _this2 = this;
3386
+
3387
+ var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3388
+ var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3389
+ var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3390
+ this._offsets = [];
3391
+ this._targets = [];
3392
+ this._scrollHeight = this._getScrollHeight();
3393
+ var targets = $$$1.makeArray($$$1(this._selector));
3394
+ targets.map(function (element) {
3395
+ var target;
3396
+ var targetSelector = Util.getSelectorFromElement(element);
3397
+
3398
+ if (targetSelector) {
3399
+ target = $$$1(targetSelector)[0];
3400
+ }
3401
+
3402
+ if (target) {
3403
+ var targetBCR = target.getBoundingClientRect();
3404
+
3405
+ if (targetBCR.width || targetBCR.height) {
3406
+ // TODO (fat): remove sketch reliance on jQuery position/offset
3407
+ return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
3408
+ }
3409
+ }
3410
+
3411
+ return null;
3412
+ }).filter(function (item) {
3413
+ return item;
3414
+ }).sort(function (a, b) {
3415
+ return a[0] - b[0];
3416
+ }).forEach(function (item) {
3417
+ _this2._offsets.push(item[0]);
3418
+
3419
+ _this2._targets.push(item[1]);
3420
+ });
3421
+ };
3422
+
3423
+ _proto.dispose = function dispose() {
3424
+ $$$1.removeData(this._element, DATA_KEY);
3425
+ $$$1(this._scrollElement).off(EVENT_KEY);
3426
+ this._element = null;
3427
+ this._scrollElement = null;
3428
+ this._config = null;
3429
+ this._selector = null;
3430
+ this._offsets = null;
3431
+ this._targets = null;
3432
+ this._activeTarget = null;
3433
+ this._scrollHeight = null;
3434
+ }; // Private
3435
+
3436
+
3437
+ _proto._getConfig = function _getConfig(config) {
3438
+ config = _extends({}, Default, config);
3439
+
3440
+ if (typeof config.target !== 'string') {
3441
+ var id = $$$1(config.target).attr('id');
3442
+
3443
+ if (!id) {
3444
+ id = Util.getUID(NAME);
3445
+ $$$1(config.target).attr('id', id);
3446
+ }
3447
+
3448
+ config.target = "#" + id;
3449
+ }
3450
+
3451
+ Util.typeCheckConfig(NAME, config, DefaultType);
3452
+ return config;
3453
+ };
3454
+
3455
+ _proto._getScrollTop = function _getScrollTop() {
3456
+ return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3457
+ };
3458
+
3459
+ _proto._getScrollHeight = function _getScrollHeight() {
3460
+ return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3461
+ };
3462
+
3463
+ _proto._getOffsetHeight = function _getOffsetHeight() {
3464
+ return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3465
+ };
3466
+
3467
+ _proto._process = function _process() {
3468
+ var scrollTop = this._getScrollTop() + this._config.offset;
3469
+
3470
+ var scrollHeight = this._getScrollHeight();
3471
+
3472
+ var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3473
+
3474
+ if (this._scrollHeight !== scrollHeight) {
3475
+ this.refresh();
3476
+ }
3477
+
3478
+ if (scrollTop >= maxScroll) {
3479
+ var target = this._targets[this._targets.length - 1];
3480
+
3481
+ if (this._activeTarget !== target) {
3482
+ this._activate(target);
3483
+ }
3484
+
3485
+ return;
3486
+ }
3487
+
3488
+ if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3489
+ this._activeTarget = null;
3490
+
3491
+ this._clear();
3492
+
3493
+ return;
3494
+ }
3495
+
3496
+ for (var i = this._offsets.length; i--;) {
3497
+ var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3498
+
3499
+ if (isActiveTarget) {
3500
+ this._activate(this._targets[i]);
3501
+ }
3502
+ }
3503
+ };
3504
+
3505
+ _proto._activate = function _activate(target) {
3506
+ this._activeTarget = target;
3507
+
3508
+ this._clear();
3509
+
3510
+ var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
3511
+
3512
+
3513
+ queries = queries.map(function (selector) {
3514
+ return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
3515
+ });
3516
+ var $link = $$$1(queries.join(','));
3517
+
3518
+ if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
3519
+ $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
3520
+ $link.addClass(ClassName.ACTIVE);
3521
+ } else {
3522
+ // Set triggered link as active
3523
+ $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
3524
+ // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3525
+
3526
+ $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3527
+
3528
+ $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
3529
+ }
3530
+
3531
+ $$$1(this._scrollElement).trigger(Event.ACTIVATE, {
3532
+ relatedTarget: target
3533
+ });
3534
+ };
3535
+
3536
+ _proto._clear = function _clear() {
3537
+ $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
3538
+ }; // Static
3539
+
3540
+
3541
+ ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3542
+ return this.each(function () {
3543
+ var data = $$$1(this).data(DATA_KEY);
3544
+
3545
+ var _config = typeof config === 'object' && config;
3546
+
3547
+ if (!data) {
3548
+ data = new ScrollSpy(this, _config);
3549
+ $$$1(this).data(DATA_KEY, data);
3550
+ }
3551
+
3552
+ if (typeof config === 'string') {
3553
+ if (typeof data[config] === 'undefined') {
3554
+ throw new TypeError("No method named \"" + config + "\"");
3555
+ }
3556
+
3557
+ data[config]();
3558
+ }
3559
+ });
3560
+ };
3561
+
3562
+ _createClass(ScrollSpy, null, [{
3563
+ key: "VERSION",
3564
+ get: function get() {
3565
+ return VERSION;
3566
+ }
3567
+ }, {
3568
+ key: "Default",
3569
+ get: function get() {
3570
+ return Default;
3571
+ }
3572
+ }]);
3573
+ return ScrollSpy;
3574
+ }();
3575
+ /**
3576
+ * ------------------------------------------------------------------------
3577
+ * Data Api implementation
3578
+ * ------------------------------------------------------------------------
3579
+ */
3580
+
3581
+
3582
+ $$$1(window).on(Event.LOAD_DATA_API, function () {
3583
+ var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY));
3584
+
3585
+ for (var i = scrollSpys.length; i--;) {
3586
+ var $spy = $$$1(scrollSpys[i]);
3587
+
3588
+ ScrollSpy._jQueryInterface.call($spy, $spy.data());
3589
+ }
3590
+ });
3591
+ /**
3592
+ * ------------------------------------------------------------------------
3593
+ * jQuery
3594
+ * ------------------------------------------------------------------------
3595
+ */
3596
+
3597
+ $$$1.fn[NAME] = ScrollSpy._jQueryInterface;
3598
+ $$$1.fn[NAME].Constructor = ScrollSpy;
3599
+
3600
+ $$$1.fn[NAME].noConflict = function () {
3601
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3602
+ return ScrollSpy._jQueryInterface;
3603
+ };
3604
+
3605
+ return ScrollSpy;
3606
+ }($);
3607
+
3608
+ /**
3609
+ * --------------------------------------------------------------------------
3610
+ * Bootstrap (v4.0.0): tab.js
3611
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3612
+ * --------------------------------------------------------------------------
3613
+ */
3614
+
3615
+ var Tab = function ($$$1) {
3616
+ /**
3617
+ * ------------------------------------------------------------------------
3618
+ * Constants
3619
+ * ------------------------------------------------------------------------
3620
+ */
3621
+ var NAME = 'tab';
3622
+ var VERSION = '4.0.0';
3623
+ var DATA_KEY = 'bs.tab';
3624
+ var EVENT_KEY = "." + DATA_KEY;
3625
+ var DATA_API_KEY = '.data-api';
3626
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3627
+ var TRANSITION_DURATION = 150;
3628
+ var Event = {
3629
+ HIDE: "hide" + EVENT_KEY,
3630
+ HIDDEN: "hidden" + EVENT_KEY,
3631
+ SHOW: "show" + EVENT_KEY,
3632
+ SHOWN: "shown" + EVENT_KEY,
3633
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
3634
+ };
3635
+ var ClassName = {
3636
+ DROPDOWN_MENU: 'dropdown-menu',
3637
+ ACTIVE: 'active',
3638
+ DISABLED: 'disabled',
3639
+ FADE: 'fade',
3640
+ SHOW: 'show'
3641
+ };
3642
+ var Selector = {
3643
+ DROPDOWN: '.dropdown',
3644
+ NAV_LIST_GROUP: '.nav, .list-group',
3645
+ ACTIVE: '.active',
3646
+ ACTIVE_UL: '> li > .active',
3647
+ DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3648
+ DROPDOWN_TOGGLE: '.dropdown-toggle',
3649
+ DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3650
+ /**
3651
+ * ------------------------------------------------------------------------
3652
+ * Class Definition
3653
+ * ------------------------------------------------------------------------
3654
+ */
3655
+
3656
+ };
3657
+
3658
+ var Tab =
3659
+ /*#__PURE__*/
3660
+ function () {
3661
+ function Tab(element) {
3662
+ this._element = element;
3663
+ } // Getters
3664
+
3665
+
3666
+ var _proto = Tab.prototype;
3667
+
3668
+ // Public
3669
+ _proto.show = function show() {
3670
+ var _this = this;
3671
+
3672
+ if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) {
3673
+ return;
3674
+ }
3675
+
3676
+ var target;
3677
+ var previous;
3678
+ var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0];
3679
+ var selector = Util.getSelectorFromElement(this._element);
3680
+
3681
+ if (listElement) {
3682
+ var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
3683
+ previous = $$$1.makeArray($$$1(listElement).find(itemSelector));
3684
+ previous = previous[previous.length - 1];
3685
+ }
3686
+
3687
+ var hideEvent = $$$1.Event(Event.HIDE, {
3688
+ relatedTarget: this._element
3689
+ });
3690
+ var showEvent = $$$1.Event(Event.SHOW, {
3691
+ relatedTarget: previous
3692
+ });
3693
+
3694
+ if (previous) {
3695
+ $$$1(previous).trigger(hideEvent);
3696
+ }
3697
+
3698
+ $$$1(this._element).trigger(showEvent);
3699
+
3700
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
3701
+ return;
3702
+ }
3703
+
3704
+ if (selector) {
3705
+ target = $$$1(selector)[0];
3706
+ }
3707
+
3708
+ this._activate(this._element, listElement);
3709
+
3710
+ var complete = function complete() {
3711
+ var hiddenEvent = $$$1.Event(Event.HIDDEN, {
3712
+ relatedTarget: _this._element
3713
+ });
3714
+ var shownEvent = $$$1.Event(Event.SHOWN, {
3715
+ relatedTarget: previous
3716
+ });
3717
+ $$$1(previous).trigger(hiddenEvent);
3718
+ $$$1(_this._element).trigger(shownEvent);
3719
+ };
3720
+
3721
+ if (target) {
3722
+ this._activate(target, target.parentNode, complete);
3723
+ } else {
3724
+ complete();
3725
+ }
3726
+ };
3727
+
3728
+ _proto.dispose = function dispose() {
3729
+ $$$1.removeData(this._element, DATA_KEY);
3730
+ this._element = null;
3731
+ }; // Private
3732
+
3733
+
3734
+ _proto._activate = function _activate(element, container, callback) {
3735
+ var _this2 = this;
3736
+
3737
+ var activeElements;
3738
+
3739
+ if (container.nodeName === 'UL') {
3740
+ activeElements = $$$1(container).find(Selector.ACTIVE_UL);
3741
+ } else {
3742
+ activeElements = $$$1(container).children(Selector.ACTIVE);
3743
+ }
3744
+
3745
+ var active = activeElements[0];
3746
+ var isTransitioning = callback && Util.supportsTransitionEnd() && active && $$$1(active).hasClass(ClassName.FADE);
3747
+
3748
+ var complete = function complete() {
3749
+ return _this2._transitionComplete(element, active, callback);
3750
+ };
3751
+
3752
+ if (active && isTransitioning) {
3753
+ $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
3754
+ } else {
3755
+ complete();
3756
+ }
3757
+ };
3758
+
3759
+ _proto._transitionComplete = function _transitionComplete(element, active, callback) {
3760
+ if (active) {
3761
+ $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
3762
+ var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
3763
+
3764
+ if (dropdownChild) {
3765
+ $$$1(dropdownChild).removeClass(ClassName.ACTIVE);
3766
+ }
3767
+
3768
+ if (active.getAttribute('role') === 'tab') {
3769
+ active.setAttribute('aria-selected', false);
3770
+ }
3771
+ }
3772
+
3773
+ $$$1(element).addClass(ClassName.ACTIVE);
3774
+
3775
+ if (element.getAttribute('role') === 'tab') {
3776
+ element.setAttribute('aria-selected', true);
3777
+ }
3778
+
3779
+ Util.reflow(element);
3780
+ $$$1(element).addClass(ClassName.SHOW);
3781
+
3782
+ if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
3783
+ var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0];
3784
+
3785
+ if (dropdownElement) {
3786
+ $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
3787
+ }
3788
+
3789
+ element.setAttribute('aria-expanded', true);
3790
+ }
3791
+
3792
+ if (callback) {
3793
+ callback();
3794
+ }
3795
+ }; // Static
3796
+
3797
+
3798
+ Tab._jQueryInterface = function _jQueryInterface(config) {
3799
+ return this.each(function () {
3800
+ var $this = $$$1(this);
3801
+ var data = $this.data(DATA_KEY);
3802
+
3803
+ if (!data) {
3804
+ data = new Tab(this);
3805
+ $this.data(DATA_KEY, data);
3806
+ }
3807
+
3808
+ if (typeof config === 'string') {
3809
+ if (typeof data[config] === 'undefined') {
3810
+ throw new TypeError("No method named \"" + config + "\"");
3811
+ }
3812
+
3813
+ data[config]();
3814
+ }
3815
+ });
3816
+ };
3817
+
3818
+ _createClass(Tab, null, [{
3819
+ key: "VERSION",
3820
+ get: function get() {
3821
+ return VERSION;
3822
+ }
3823
+ }]);
3824
+ return Tab;
3825
+ }();
3826
+ /**
3827
+ * ------------------------------------------------------------------------
3828
+ * Data Api implementation
3829
+ * ------------------------------------------------------------------------
3830
+ */
3831
+
3832
+
3833
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
3834
+ event.preventDefault();
3835
+
3836
+ Tab._jQueryInterface.call($$$1(this), 'show');
3837
+ });
3838
+ /**
3839
+ * ------------------------------------------------------------------------
3840
+ * jQuery
3841
+ * ------------------------------------------------------------------------
3842
+ */
3843
+
3844
+ $$$1.fn[NAME] = Tab._jQueryInterface;
3845
+ $$$1.fn[NAME].Constructor = Tab;
3846
+
3847
+ $$$1.fn[NAME].noConflict = function () {
3848
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3849
+ return Tab._jQueryInterface;
3850
+ };
3851
+
3852
+ return Tab;
3853
+ }($);
3854
+
3855
+ /**
3856
+ * --------------------------------------------------------------------------
3857
+ * Bootstrap (v4.0.0-alpha.6): index.js
3858
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3859
+ * --------------------------------------------------------------------------
3860
+ */
3861
+
3862
+ (function ($$$1) {
3863
+ if (typeof $$$1 === 'undefined') {
3864
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
3865
+ }
3866
+
3867
+ var version = $$$1.fn.jquery.split(' ')[0].split('.');
3868
+ var minMajor = 1;
3869
+ var ltMajor = 2;
3870
+ var minMinor = 9;
3871
+ var minPatch = 1;
3872
+ var maxMajor = 4;
3873
+
3874
+ if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
3875
+ throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
3876
+ }
3877
+ })($);
3878
+
3879
+ exports.Util = Util;
3880
+ exports.Alert = Alert;
3881
+ exports.Button = Button;
3882
+ exports.Carousel = Carousel;
3883
+ exports.Collapse = Collapse;
3884
+ exports.Dropdown = Dropdown;
3885
+ exports.Modal = Modal;
3886
+ exports.Popover = Popover;
3887
+ exports.Scrollspy = ScrollSpy;
3888
+ exports.Tab = Tab;
3889
+ exports.Tooltip = Tooltip;
3890
+
3891
+ Object.defineProperty(exports, '__esModule', { value: true });
3892
+
3893
+ })));