jekyll-rubin-collab-theme 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (389) hide show
  1. checksums.yaml +4 -4
  2. data/_third_party/mdb-ui-kit/.gitignore +1 -0
  3. data/_third_party/mdb-ui-kit/LICENSE +21 -0
  4. data/_third_party/mdb-ui-kit/README.md +551 -0
  5. data/_third_party/mdb-ui-kit/README.txt +8 -0
  6. data/_third_party/mdb-ui-kit/css/mdb.dark.min.css +23 -0
  7. data/_third_party/mdb-ui-kit/css/mdb.dark.min.css.map +1 -0
  8. data/_third_party/mdb-ui-kit/css/mdb.dark.rtl.min.css +10 -0
  9. data/_third_party/mdb-ui-kit/css/mdb.dark.rtl.min.css.map +1 -0
  10. data/_third_party/mdb-ui-kit/css/mdb.min.css +40 -0
  11. data/_third_party/mdb-ui-kit/css/mdb.min.css.map +1 -0
  12. data/_third_party/mdb-ui-kit/css/mdb.rtl.min.css +10 -0
  13. data/_third_party/mdb-ui-kit/css/mdb.rtl.min.css.map +1 -0
  14. data/_third_party/mdb-ui-kit/img/mdb-favicon.ico +0 -0
  15. data/_third_party/mdb-ui-kit/index.html +52 -0
  16. data/_third_party/mdb-ui-kit/js/mdb.min.js +20 -0
  17. data/_third_party/mdb-ui-kit/js/mdb.min.js.map +1 -0
  18. data/_third_party/mdb-ui-kit/license.txt +153 -0
  19. data/_third_party/mdb-ui-kit/package.json +9 -0
  20. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/alert.js +112 -0
  21. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/alert.js.map +1 -0
  22. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/base-component.js +113 -0
  23. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/base-component.js.map +1 -0
  24. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/button.js +91 -0
  25. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/button.js.map +1 -0
  26. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/carousel.js +515 -0
  27. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/carousel.js.map +1 -0
  28. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/collapse.js +341 -0
  29. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/collapse.js.map +1 -0
  30. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/data.js +73 -0
  31. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/data.js.map +1 -0
  32. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/event-handler.js +346 -0
  33. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/event-handler.js.map +1 -0
  34. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/manipulator.js +89 -0
  35. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/manipulator.js.map +1 -0
  36. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/selector-engine.js +101 -0
  37. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/selector-engine.js.map +1 -0
  38. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dropdown.js +556 -0
  39. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dropdown.js.map +1 -0
  40. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/modal.js +452 -0
  41. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/modal.js.map +1 -0
  42. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/offcanvas.js +344 -0
  43. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/offcanvas.js.map +1 -0
  44. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/popover.js +108 -0
  45. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/popover.js.map +1 -0
  46. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/scrollspy.js +340 -0
  47. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/scrollspy.js.map +1 -0
  48. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/tab.js +355 -0
  49. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/tab.js.map +1 -0
  50. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/toast.js +256 -0
  51. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/toast.js.map +1 -0
  52. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/tooltip.js +749 -0
  53. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/tooltip.js.map +1 -0
  54. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/backdrop.js +169 -0
  55. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/backdrop.js.map +1 -0
  56. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/component-functions.js +59 -0
  57. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/component-functions.js.map +1 -0
  58. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/config.js +90 -0
  59. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/config.js.map +1 -0
  60. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/focustrap.js +139 -0
  61. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/focustrap.js.map +1 -0
  62. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/index.js +350 -0
  63. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/index.js.map +1 -0
  64. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/sanitizer.js +142 -0
  65. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/sanitizer.js.map +1 -0
  66. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/scrollbar.js +157 -0
  67. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/scrollbar.js.map +1 -0
  68. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/swipe.js +173 -0
  69. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/swipe.js.map +1 -0
  70. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/template-factory.js +193 -0
  71. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/template-factory.js.map +1 -0
  72. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/alert.js +87 -0
  73. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/base-component.js +87 -0
  74. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/button.js +72 -0
  75. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/carousel.js +482 -0
  76. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/collapse.js +308 -0
  77. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dom/data.js +59 -0
  78. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dom/event-handler.js +333 -0
  79. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dom/manipulator.js +73 -0
  80. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dom/selector-engine.js +85 -0
  81. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dropdown.js +477 -0
  82. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/modal.js +379 -0
  83. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/offcanvas.js +278 -0
  84. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/popover.js +98 -0
  85. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/scrollspy.js +312 -0
  86. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/tab.js +320 -0
  87. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/toast.js +225 -0
  88. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/tooltip.js +657 -0
  89. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/backdrop.js +149 -0
  90. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/component-functions.js +32 -0
  91. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/config.js +66 -0
  92. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/focustrap.js +119 -0
  93. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/index.js +342 -0
  94. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/sanitizer.js +122 -0
  95. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/scrollbar.js +126 -0
  96. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/swipe.js +148 -0
  97. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/template-factory.js +162 -0
  98. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/alert.js +87 -0
  99. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/base-component.js +87 -0
  100. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/button.js +72 -0
  101. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/carousel.js +482 -0
  102. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/collapse.js +308 -0
  103. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dom/data.js +59 -0
  104. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dom/event-handler.js +333 -0
  105. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dom/manipulator.js +73 -0
  106. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dom/selector-engine.js +85 -0
  107. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dropdown.js +477 -0
  108. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/modal.js +377 -0
  109. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/offcanvas.js +278 -0
  110. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/popover.js +98 -0
  111. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/scrollspy.js +301 -0
  112. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/tab.js +320 -0
  113. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/toast.js +225 -0
  114. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/tooltip.js +657 -0
  115. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/backdrop.js +149 -0
  116. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/component-functions.js +32 -0
  117. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/config.js +66 -0
  118. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/focustrap.js +119 -0
  119. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/index.js +342 -0
  120. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/sanitizer.js +122 -0
  121. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/scrollbar.js +126 -0
  122. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/swipe.js +148 -0
  123. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/template-factory.js +162 -0
  124. data/_third_party/mdb-ui-kit/src/js/free/alert.js +95 -0
  125. data/_third_party/mdb-ui-kit/src/js/free/button.js +258 -0
  126. data/_third_party/mdb-ui-kit/src/js/free/carousel.js +107 -0
  127. data/_third_party/mdb-ui-kit/src/js/free/collapse.js +115 -0
  128. data/_third_party/mdb-ui-kit/src/js/free/dropdown.js +277 -0
  129. data/_third_party/mdb-ui-kit/src/js/free/input.js +443 -0
  130. data/_third_party/mdb-ui-kit/src/js/free/modal.js +129 -0
  131. data/_third_party/mdb-ui-kit/src/js/free/popover.js +126 -0
  132. data/_third_party/mdb-ui-kit/src/js/free/range.js +162 -0
  133. data/_third_party/mdb-ui-kit/src/js/free/ripple.js +463 -0
  134. data/_third_party/mdb-ui-kit/src/js/free/scrollspy.js +166 -0
  135. data/_third_party/mdb-ui-kit/src/js/free/tab.js +170 -0
  136. data/_third_party/mdb-ui-kit/src/js/free/toast.js +116 -0
  137. data/_third_party/mdb-ui-kit/src/js/free/tooltip.js +126 -0
  138. data/_third_party/mdb-ui-kit/src/js/mdb/dom/data.js +67 -0
  139. data/_third_party/mdb-ui-kit/src/js/mdb/dom/event-handler.js +355 -0
  140. data/_third_party/mdb-ui-kit/src/js/mdb/dom/manipulator.js +118 -0
  141. data/_third_party/mdb-ui-kit/src/js/mdb/dom/selector-engine.js +84 -0
  142. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/click-rail.js +30 -0
  143. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/drag-thumb.js +98 -0
  144. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/keyboard.js +147 -0
  145. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/mouse-wheel.js +158 -0
  146. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/touch.js +212 -0
  147. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/index.js +236 -0
  148. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/class-names.js +47 -0
  149. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/css.js +16 -0
  150. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/dom.js +36 -0
  151. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/event-manager.js +78 -0
  152. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/util.js +39 -0
  153. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/process-scroll-diff.js +65 -0
  154. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/update-geometry.js +154 -0
  155. data/_third_party/mdb-ui-kit/src/js/mdb/util/focusTrap.js +97 -0
  156. data/_third_party/mdb-ui-kit/src/js/mdb/util/index.js +242 -0
  157. data/_third_party/mdb-ui-kit/src/js/mdb/util/keycodes.js +40 -0
  158. data/_third_party/mdb-ui-kit/src/js/mdb/util/sanitizer.js +130 -0
  159. data/_third_party/mdb-ui-kit/src/js/mdb/util/scrollbar.js +83 -0
  160. data/_third_party/mdb-ui-kit/src/js/mdb/util/stack.js +105 -0
  161. data/_third_party/mdb-ui-kit/src/js/mdb/util/touch/index.js +47 -0
  162. data/_third_party/mdb-ui-kit/src/js/mdb/util/touch/swipe.js +81 -0
  163. data/_third_party/mdb-ui-kit/src/js/mdb/util/touch/touchUtil.js +24 -0
  164. data/_third_party/mdb-ui-kit/src/js/mdb.free.js +36 -0
  165. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_accordion.scss +153 -0
  166. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_alert.scss +69 -0
  167. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_badge.scss +38 -0
  168. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_breadcrumb.scss +43 -0
  169. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_button-group.scss +143 -0
  170. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_buttons.scss +214 -0
  171. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_card.scss +248 -0
  172. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_carousel.scss +231 -0
  173. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_close.scss +40 -0
  174. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_containers.scss +41 -0
  175. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_dropdown.scss +247 -0
  176. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_forms.scss +9 -0
  177. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_functions.scss +355 -0
  178. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_grid.scss +32 -0
  179. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_helpers.scss +10 -0
  180. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_images.scss +41 -0
  181. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_list-group.scss +198 -0
  182. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_maps.scss +54 -0
  183. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_mixins.scss +43 -0
  184. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_modal.scss +247 -0
  185. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_nav.scss +173 -0
  186. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_navbar.scss +274 -0
  187. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_offcanvas.scss +153 -0
  188. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_pagination.scss +118 -0
  189. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_placeholders.scss +56 -0
  190. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_popover.scss +210 -0
  191. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_progress.scss +61 -0
  192. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_reboot.scss +590 -0
  193. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_root.scss +73 -0
  194. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_spinners.scss +88 -0
  195. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_tables.scss +161 -0
  196. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_toasts.scss +78 -0
  197. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_tooltip.scss +126 -0
  198. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_transitions.scss +27 -0
  199. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_type.scss +104 -0
  200. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_utilities.scss +747 -0
  201. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_variables.scss +1631 -0
  202. data/_third_party/mdb-ui-kit/src/scss/bootstrap/bootstrap-grid.scss +64 -0
  203. data/_third_party/mdb-ui-kit/src/scss/bootstrap/bootstrap-reboot.scss +9 -0
  204. data/_third_party/mdb-ui-kit/src/scss/bootstrap/bootstrap-utilities.scss +18 -0
  205. data/_third_party/mdb-ui-kit/src/scss/bootstrap/bootstrap.scss +50 -0
  206. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_floating-labels.scss +75 -0
  207. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-check.scss +176 -0
  208. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-control.scss +198 -0
  209. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-range.scss +95 -0
  210. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-select.scss +75 -0
  211. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-text.scss +11 -0
  212. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_input-group.scss +135 -0
  213. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_labels.scss +36 -0
  214. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_validation.scss +12 -0
  215. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_clearfix.scss +3 -0
  216. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_color-bg.scss +11 -0
  217. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_colored-links.scss +16 -0
  218. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_position.scss +36 -0
  219. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_ratio.scss +26 -0
  220. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_stacks.scss +15 -0
  221. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_stretched-link.scss +15 -0
  222. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_text-truncation.scss +7 -0
  223. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_visually-hidden.scss +8 -0
  224. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_vr.scss +8 -0
  225. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_alert.scss +15 -0
  226. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_backdrop.scss +18 -0
  227. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_banner.scss +8 -0
  228. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_border-radius.scss +77 -0
  229. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_box-shadow.scss +18 -0
  230. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_breakpoints.scss +131 -0
  231. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_buttons.scss +90 -0
  232. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_caret.scss +64 -0
  233. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_clearfix.scss +9 -0
  234. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_color-scheme.scss +7 -0
  235. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_container.scss +15 -0
  236. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_deprecate.scss +10 -0
  237. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_forms.scss +153 -0
  238. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_gradients.scss +80 -0
  239. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_grid.scss +169 -0
  240. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_image.scss +16 -0
  241. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_list-group.scss +24 -0
  242. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_lists.scss +7 -0
  243. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_pagination.scss +10 -0
  244. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_reset-text.scss +17 -0
  245. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_resize.scss +6 -0
  246. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_table-variants.scss +24 -0
  247. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_text-truncate.scss +8 -0
  248. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_transition.scss +26 -0
  249. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_utilities.scss +112 -0
  250. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_visually-hidden.scss +29 -0
  251. data/_third_party/mdb-ui-kit/src/scss/bootstrap/utilities/_api.scss +49 -0
  252. data/_third_party/mdb-ui-kit/src/scss/bootstrap/vendor/_rfs.scss +351 -0
  253. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_accordion.scss +153 -0
  254. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_alert.scss +69 -0
  255. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_badge.scss +38 -0
  256. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_breadcrumb.scss +43 -0
  257. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_button-group.scss +143 -0
  258. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_buttons.scss +214 -0
  259. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_card.scss +248 -0
  260. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_carousel.scss +231 -0
  261. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_close.scss +40 -0
  262. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_containers.scss +41 -0
  263. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_dropdown.scss +247 -0
  264. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_forms.scss +9 -0
  265. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_functions.scss +355 -0
  266. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_grid.scss +32 -0
  267. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_helpers.scss +10 -0
  268. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_images.scss +41 -0
  269. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_list-group.scss +198 -0
  270. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_maps.scss +54 -0
  271. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_mixins.scss +43 -0
  272. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_modal.scss +247 -0
  273. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_nav.scss +173 -0
  274. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_navbar.scss +274 -0
  275. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_offcanvas.scss +153 -0
  276. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_pagination.scss +118 -0
  277. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_placeholders.scss +56 -0
  278. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_popover.scss +210 -0
  279. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_progress.scss +61 -0
  280. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_reboot.scss +590 -0
  281. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_root.scss +73 -0
  282. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_spinners.scss +88 -0
  283. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_tables.scss +161 -0
  284. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_toasts.scss +78 -0
  285. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_tooltip.scss +126 -0
  286. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_transitions.scss +27 -0
  287. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_type.scss +104 -0
  288. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_utilities.scss +747 -0
  289. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_variables.scss +1631 -0
  290. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/bootstrap-grid.scss +64 -0
  291. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/bootstrap-reboot.scss +9 -0
  292. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/bootstrap-utilities.scss +18 -0
  293. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/bootstrap.scss +50 -0
  294. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_floating-labels.scss +75 -0
  295. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-check.scss +176 -0
  296. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-control.scss +198 -0
  297. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-range.scss +95 -0
  298. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-select.scss +75 -0
  299. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-text.scss +11 -0
  300. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_input-group.scss +135 -0
  301. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_labels.scss +36 -0
  302. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_validation.scss +12 -0
  303. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_clearfix.scss +3 -0
  304. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_color-bg.scss +11 -0
  305. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_colored-links.scss +16 -0
  306. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_position.scss +36 -0
  307. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_ratio.scss +26 -0
  308. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_stacks.scss +15 -0
  309. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_stretched-link.scss +15 -0
  310. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_text-truncation.scss +7 -0
  311. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_visually-hidden.scss +8 -0
  312. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_vr.scss +8 -0
  313. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_alert.scss +15 -0
  314. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_backdrop.scss +18 -0
  315. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_banner.scss +8 -0
  316. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_border-radius.scss +77 -0
  317. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_box-shadow.scss +18 -0
  318. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_breakpoints.scss +131 -0
  319. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_buttons.scss +90 -0
  320. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_caret.scss +64 -0
  321. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_clearfix.scss +9 -0
  322. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_color-scheme.scss +7 -0
  323. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_container.scss +15 -0
  324. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_deprecate.scss +10 -0
  325. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_forms.scss +153 -0
  326. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_gradients.scss +80 -0
  327. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_grid.scss +169 -0
  328. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_image.scss +15 -0
  329. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_list-group.scss +24 -0
  330. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_lists.scss +7 -0
  331. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_pagination.scss +10 -0
  332. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_reset-text.scss +17 -0
  333. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_resize.scss +6 -0
  334. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_table-variants.scss +24 -0
  335. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_text-truncate.scss +8 -0
  336. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_transition.scss +26 -0
  337. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_utilities.scss +112 -0
  338. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_visually-hidden.scss +29 -0
  339. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/utilities/_api.scss +49 -0
  340. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/vendor/_rfs.scss +351 -0
  341. data/_third_party/mdb-ui-kit/src/scss/custom/_styles.scss +1 -0
  342. data/_third_party/mdb-ui-kit/src/scss/custom/_variables.scss +1 -0
  343. data/_third_party/mdb-ui-kit/src/scss/free/_accordion.scss +52 -0
  344. data/_third_party/mdb-ui-kit/src/scss/free/_alert.scss +39 -0
  345. data/_third_party/mdb-ui-kit/src/scss/free/_badge.scss +51 -0
  346. data/_third_party/mdb-ui-kit/src/scss/free/_breadcrumb.scss +35 -0
  347. data/_third_party/mdb-ui-kit/src/scss/free/_button-group.scss +100 -0
  348. data/_third_party/mdb-ui-kit/src/scss/free/_buttons.scss +609 -0
  349. data/_third_party/mdb-ui-kit/src/scss/free/_card.scss +53 -0
  350. data/_third_party/mdb-ui-kit/src/scss/free/_carousel.scss +31 -0
  351. data/_third_party/mdb-ui-kit/src/scss/free/_close.scss +10 -0
  352. data/_third_party/mdb-ui-kit/src/scss/free/_colors.scss +11 -0
  353. data/_third_party/mdb-ui-kit/src/scss/free/_deprecated.scss +32 -0
  354. data/_third_party/mdb-ui-kit/src/scss/free/_dropdown.scss +148 -0
  355. data/_third_party/mdb-ui-kit/src/scss/free/_flag.scss +1046 -0
  356. data/_third_party/mdb-ui-kit/src/scss/free/_functions.scss +18 -0
  357. data/_third_party/mdb-ui-kit/src/scss/free/_images.scss +87 -0
  358. data/_third_party/mdb-ui-kit/src/scss/free/_list-group.scss +68 -0
  359. data/_third_party/mdb-ui-kit/src/scss/free/_mixins.scss +8 -0
  360. data/_third_party/mdb-ui-kit/src/scss/free/_modal.scss +12 -0
  361. data/_third_party/mdb-ui-kit/src/scss/free/_nav.scss +100 -0
  362. data/_third_party/mdb-ui-kit/src/scss/free/_navbar.scss +50 -0
  363. data/_third_party/mdb-ui-kit/src/scss/free/_pagination.scss +99 -0
  364. data/_third_party/mdb-ui-kit/src/scss/free/_popover.scss +18 -0
  365. data/_third_party/mdb-ui-kit/src/scss/free/_progress.scss +6 -0
  366. data/_third_party/mdb-ui-kit/src/scss/free/_range.scss +58 -0
  367. data/_third_party/mdb-ui-kit/src/scss/free/_reboot.scss +66 -0
  368. data/_third_party/mdb-ui-kit/src/scss/free/_ripple.scss +51 -0
  369. data/_third_party/mdb-ui-kit/src/scss/free/_root.scss +8 -0
  370. data/_third_party/mdb-ui-kit/src/scss/free/_scrollspy.scss +49 -0
  371. data/_third_party/mdb-ui-kit/src/scss/free/_shadows.scss +1 -0
  372. data/_third_party/mdb-ui-kit/src/scss/free/_tables.scss +45 -0
  373. data/_third_party/mdb-ui-kit/src/scss/free/_toasts.scss +52 -0
  374. data/_third_party/mdb-ui-kit/src/scss/free/_tooltip.scss +17 -0
  375. data/_third_party/mdb-ui-kit/src/scss/free/_type.scss +27 -0
  376. data/_third_party/mdb-ui-kit/src/scss/free/_utilities.scss +216 -0
  377. data/_third_party/mdb-ui-kit/src/scss/free/_variables.scss +1875 -0
  378. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-check.scss +262 -0
  379. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-control.scss +244 -0
  380. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-file.scss +12 -0
  381. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-range.scss +48 -0
  382. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-select.scss +19 -0
  383. data/_third_party/mdb-ui-kit/src/scss/free/forms/_input-group.scss +127 -0
  384. data/_third_party/mdb-ui-kit/src/scss/free/forms/_validation.scss +266 -0
  385. data/_third_party/mdb-ui-kit/src/scss/free/mixins/_buttons.scss +60 -0
  386. data/_third_party/mdb-ui-kit/src/scss/free/mixins/_ripple.scss +28 -0
  387. data/_third_party/mdb-ui-kit/src/scss/free/mixins/_table-variants.scss +9 -0
  388. data/_third_party/mdb-ui-kit/src/scss/mdb.free.scss +103 -0
  389. metadata +388 -1
@@ -0,0 +1,97 @@
1
+ import SelectorEngine from '../dom/selector-engine';
2
+ import { isVisible } from './index';
3
+
4
+ class FocusTrap {
5
+ constructor(element, options = {}, toggler) {
6
+ this._element = element;
7
+ this._toggler = toggler;
8
+ this._event = options.event || 'blur';
9
+ this._condition = options.condition || (() => true);
10
+ this._selector =
11
+ options.selector || 'button, a, input, select, textarea, [tabindex]:not([tabindex="-1"])';
12
+ this._onlyVisible = options.onlyVisible || false;
13
+ this._focusableElements = [];
14
+ this._firstElement = null;
15
+ this._lastElement = null;
16
+
17
+ this.handler = (e) => {
18
+ if (this._condition(e) && e.target === this._lastElement) {
19
+ e.preventDefault();
20
+ this._firstElement.focus();
21
+ }
22
+ };
23
+ }
24
+
25
+ trap() {
26
+ this._setElements();
27
+ this._init();
28
+ this._setFocusTrap();
29
+ }
30
+
31
+ disable() {
32
+ this._focusableElements.forEach((element) => {
33
+ element.removeEventListener(this._event, this.handler);
34
+ });
35
+
36
+ if (this._toggler) {
37
+ this._toggler.focus();
38
+ }
39
+ }
40
+
41
+ update() {
42
+ this._setElements();
43
+ this._setFocusTrap();
44
+ }
45
+
46
+ _init() {
47
+ const handler = (e) => {
48
+ if (!this._firstElement || e.key !== 'Tab' || this._focusableElements.includes(e.target)) {
49
+ return;
50
+ }
51
+
52
+ e.preventDefault();
53
+ this._firstElement.focus();
54
+
55
+ window.removeEventListener('keydown', handler);
56
+ };
57
+
58
+ window.addEventListener('keydown', handler);
59
+ }
60
+
61
+ _filterVisible(elements) {
62
+ return elements.filter((el) => {
63
+ if (!isVisible(el)) return false;
64
+
65
+ const ancestors = SelectorEngine.parents(el, '*');
66
+
67
+ for (let i = 0; i < ancestors.length; i++) {
68
+ const style = window.getComputedStyle(ancestors[i]);
69
+ if (style && (style.display === 'none' || style.visibility === 'hidden')) return false;
70
+ }
71
+ return true;
72
+ });
73
+ }
74
+
75
+ _setElements() {
76
+ this._focusableElements = SelectorEngine.find(this._selector, this._element);
77
+
78
+ if (this._onlyVisible) {
79
+ this._focusableElements = this._filterVisible(this._focusableElements);
80
+ }
81
+
82
+ this._firstElement = this._focusableElements[0];
83
+ this._lastElement = this._focusableElements[this._focusableElements.length - 1];
84
+ }
85
+
86
+ _setFocusTrap() {
87
+ this._focusableElements.forEach((element, i) => {
88
+ if (i === this._focusableElements.length - 1) {
89
+ element.addEventListener(this._event, this.handler);
90
+ } else {
91
+ element.removeEventListener(this._event, this.handler);
92
+ }
93
+ });
94
+ }
95
+ }
96
+
97
+ export default FocusTrap;
@@ -0,0 +1,242 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap (v5.0.0-beta2): util/index.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ const MAX_UID = 1000000;
9
+ const MILLISECONDS_MULTIPLIER = 1000;
10
+ const TRANSITION_END = 'transitionend';
11
+
12
+ // Shoutout AngusCroll (https://goo.gl/pxwQGp)
13
+ const toType = (obj) => {
14
+ if (obj === null || obj === undefined) {
15
+ return `${obj}`;
16
+ }
17
+
18
+ return {}.toString
19
+ .call(obj)
20
+ .match(/\s([a-z]+)/i)[1]
21
+ .toLowerCase();
22
+ };
23
+
24
+ /**
25
+ * --------------------------------------------------------------------------
26
+ * Public Util Api
27
+ * --------------------------------------------------------------------------
28
+ */
29
+
30
+ const getUID = (prefix) => {
31
+ do {
32
+ prefix += Math.floor(Math.random() * MAX_UID);
33
+ } while (document.getElementById(prefix));
34
+
35
+ return prefix;
36
+ };
37
+
38
+ const getSelector = (element) => {
39
+ let selector = element.getAttribute('data-mdb-target');
40
+
41
+ if (!selector || selector === '#') {
42
+ const hrefAttr = element.getAttribute('href');
43
+
44
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
45
+ }
46
+
47
+ return selector;
48
+ };
49
+
50
+ const getSelectorFromElement = (element) => {
51
+ const selector = getSelector(element);
52
+
53
+ if (selector) {
54
+ return document.querySelector(selector) ? selector : null;
55
+ }
56
+
57
+ return null;
58
+ };
59
+
60
+ const getElementFromSelector = (element) => {
61
+ const selector = getSelector(element);
62
+
63
+ return selector ? document.querySelector(selector) : null;
64
+ };
65
+
66
+ const getTransitionDurationFromElement = (element) => {
67
+ if (!element) {
68
+ return 0;
69
+ }
70
+
71
+ // Get transition-duration of the element
72
+ let { transitionDuration, transitionDelay } = window.getComputedStyle(element);
73
+
74
+ const floatTransitionDuration = Number.parseFloat(transitionDuration);
75
+ const floatTransitionDelay = Number.parseFloat(transitionDelay);
76
+
77
+ // Return 0 if element or transition duration is not found
78
+ if (!floatTransitionDuration && !floatTransitionDelay) {
79
+ return 0;
80
+ }
81
+
82
+ // If multiple durations are defined, take the first
83
+ transitionDuration = transitionDuration.split(',')[0];
84
+ transitionDelay = transitionDelay.split(',')[0];
85
+
86
+ return (
87
+ (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) *
88
+ MILLISECONDS_MULTIPLIER
89
+ );
90
+ };
91
+
92
+ const triggerTransitionEnd = (element) => {
93
+ element.dispatchEvent(new Event(TRANSITION_END));
94
+ };
95
+
96
+ const isElement = (obj) => (obj[0] || obj).nodeType;
97
+
98
+ const emulateTransitionEnd = (element, duration) => {
99
+ let called = false;
100
+ const durationPadding = 5;
101
+ const emulatedDuration = duration + durationPadding;
102
+
103
+ function listener() {
104
+ called = true;
105
+ element.removeEventListener(TRANSITION_END, listener);
106
+ }
107
+
108
+ element.addEventListener(TRANSITION_END, listener);
109
+ setTimeout(() => {
110
+ if (!called) {
111
+ triggerTransitionEnd(element);
112
+ }
113
+ }, emulatedDuration);
114
+ };
115
+
116
+ const typeCheckConfig = (componentName, config, configTypes) => {
117
+ Object.keys(configTypes).forEach((property) => {
118
+ const expectedTypes = configTypes[property];
119
+ const value = config[property];
120
+ const valueType = value && isElement(value) ? 'element' : toType(value);
121
+
122
+ if (!new RegExp(expectedTypes).test(valueType)) {
123
+ throw new Error(
124
+ `${componentName.toUpperCase()}: ` +
125
+ `Option "${property}" provided type "${valueType}" ` +
126
+ `but expected type "${expectedTypes}".`
127
+ );
128
+ }
129
+ });
130
+ };
131
+
132
+ const isVisible = (element) => {
133
+ if (!element) {
134
+ return false;
135
+ }
136
+
137
+ if (element.style && element.parentNode && element.parentNode.style) {
138
+ const elementStyle = getComputedStyle(element);
139
+ const parentNodeStyle = getComputedStyle(element.parentNode);
140
+
141
+ return (
142
+ elementStyle.display !== 'none' &&
143
+ parentNodeStyle.display !== 'none' &&
144
+ elementStyle.visibility !== 'hidden'
145
+ );
146
+ }
147
+
148
+ return false;
149
+ };
150
+
151
+ const findShadowRoot = (element) => {
152
+ if (!document.documentElement.attachShadow) {
153
+ return null;
154
+ }
155
+
156
+ // Can find the shadow root otherwise it'll return the document
157
+ if (typeof element.getRootNode === 'function') {
158
+ const root = element.getRootNode();
159
+ return root instanceof ShadowRoot ? root : null;
160
+ }
161
+
162
+ if (element instanceof ShadowRoot) {
163
+ return element;
164
+ }
165
+
166
+ // when we don't find a shadow root
167
+ if (!element.parentNode) {
168
+ return null;
169
+ }
170
+
171
+ return findShadowRoot(element.parentNode);
172
+ };
173
+
174
+ const noop = () => function () {};
175
+
176
+ const reflow = (element) => element.offsetHeight;
177
+
178
+ const getjQuery = () => {
179
+ const { jQuery } = window;
180
+
181
+ if (jQuery && !document.body.hasAttribute('data-mdb-no-jquery')) {
182
+ return jQuery;
183
+ }
184
+
185
+ return null;
186
+ };
187
+
188
+ const onDOMContentLoaded = (callback) => {
189
+ if (document.readyState === 'loading') {
190
+ document.addEventListener('DOMContentLoaded', callback);
191
+ } else {
192
+ callback();
193
+ }
194
+ };
195
+
196
+ const isRTL = document.documentElement.dir === 'rtl';
197
+
198
+ const array = (collection) => {
199
+ return Array.from(collection);
200
+ };
201
+
202
+ const element = (tag) => {
203
+ return document.createElement(tag);
204
+ };
205
+
206
+ const defineJQueryPlugin = (name, plugin) => {
207
+ onDOMContentLoaded(() => {
208
+ const $ = getjQuery();
209
+ /* istanbul ignore if */
210
+ if ($) {
211
+ const JQUERY_NO_CONFLICT = $.fn[name];
212
+ $.fn[name] = plugin.jQueryInterface;
213
+ $.fn[name].Constructor = plugin;
214
+ $.fn[name].noConflict = () => {
215
+ $.fn[name] = JQUERY_NO_CONFLICT;
216
+ return plugin.jQueryInterface;
217
+ };
218
+ }
219
+ });
220
+ };
221
+
222
+ export {
223
+ getjQuery,
224
+ TRANSITION_END,
225
+ getUID,
226
+ getSelectorFromElement,
227
+ getElementFromSelector,
228
+ getTransitionDurationFromElement,
229
+ triggerTransitionEnd,
230
+ isElement,
231
+ emulateTransitionEnd,
232
+ typeCheckConfig,
233
+ isVisible,
234
+ findShadowRoot,
235
+ noop,
236
+ reflow,
237
+ array,
238
+ element,
239
+ onDOMContentLoaded,
240
+ isRTL,
241
+ defineJQueryPlugin,
242
+ };
@@ -0,0 +1,40 @@
1
+ export const LEFT_ARROW = 37;
2
+ export const UP_ARROW = 38;
3
+ export const RIGHT_ARROW = 39;
4
+ export const DOWN_ARROW = 40;
5
+ export const HOME = 36;
6
+ export const END = 35;
7
+ export const PAGE_UP = 33;
8
+ export const PAGE_DOWN = 34;
9
+ export const ENTER = 13;
10
+ export const SPACE = 32;
11
+ export const ESCAPE = 27;
12
+ export const TAB = 9;
13
+ export const BACKSPACE = 8;
14
+ export const DELETE = 46;
15
+ export const A = 65;
16
+ export const B = 66;
17
+ export const C = 67;
18
+ export const D = 68;
19
+ export const E = 69;
20
+ export const F = 70;
21
+ export const G = 71;
22
+ export const H = 72;
23
+ export const I = 73;
24
+ export const J = 74;
25
+ export const K = 75;
26
+ export const L = 76;
27
+ export const M = 77;
28
+ export const N = 78;
29
+ export const O = 79;
30
+ export const P = 80;
31
+ export const Q = 81;
32
+ export const R = 82;
33
+ export const S = 83;
34
+ export const T = 84;
35
+ export const U = 85;
36
+ export const V = 86;
37
+ export const W = 87;
38
+ export const X = 88;
39
+ export const Y = 89;
40
+ export const Z = 90;
@@ -0,0 +1,130 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap (v5.0.0-beta2): util/sanitizer.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ const uriAttrs = new Set([
9
+ 'background',
10
+ 'cite',
11
+ 'href',
12
+ 'itemtype',
13
+ 'longdesc',
14
+ 'poster',
15
+ 'src',
16
+ 'xlink:href',
17
+ ]);
18
+
19
+ const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
20
+
21
+ /**
22
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
23
+ *
24
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
25
+ */
26
+ const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;
27
+
28
+ /**
29
+ * A pattern that matches safe data URLs. Only matches image, video and audio types.
30
+ *
31
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
32
+ */
33
+ const DATA_URL_PATTERN =
34
+ /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
35
+
36
+ const allowedAttribute = (attr, allowedAttributeList) => {
37
+ const attrName = attr.nodeName.toLowerCase();
38
+
39
+ if (allowedAttributeList.includes(attrName)) {
40
+ if (uriAttrs.has(attrName)) {
41
+ return Boolean(
42
+ attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)
43
+ );
44
+ }
45
+
46
+ return true;
47
+ }
48
+
49
+ const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp);
50
+
51
+ // Check if a regular expression validates the attribute.
52
+ for (let i = 0, len = regExp.length; i < len; i++) {
53
+ if (regExp[i].test(attrName)) {
54
+ return true;
55
+ }
56
+ }
57
+
58
+ return false;
59
+ };
60
+
61
+ export const DefaultWhitelist = {
62
+ // Global attributes allowed on any supplied element below.
63
+ '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
64
+ a: ['target', 'href', 'title', 'rel'],
65
+ area: [],
66
+ b: [],
67
+ br: [],
68
+ col: [],
69
+ code: [],
70
+ div: [],
71
+ em: [],
72
+ hr: [],
73
+ h1: [],
74
+ h2: [],
75
+ h3: [],
76
+ h4: [],
77
+ h5: [],
78
+ h6: [],
79
+ i: [],
80
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
81
+ li: [],
82
+ ol: [],
83
+ p: [],
84
+ pre: [],
85
+ s: [],
86
+ small: [],
87
+ span: [],
88
+ sub: [],
89
+ sup: [],
90
+ strong: [],
91
+ u: [],
92
+ ul: [],
93
+ };
94
+
95
+ export function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
96
+ if (!unsafeHtml.length) {
97
+ return unsafeHtml;
98
+ }
99
+
100
+ if (sanitizeFn && typeof sanitizeFn === 'function') {
101
+ return sanitizeFn(unsafeHtml);
102
+ }
103
+
104
+ const domParser = new window.DOMParser();
105
+ const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
106
+ const whitelistKeys = Object.keys(whiteList);
107
+ const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
108
+
109
+ for (let i = 0, len = elements.length; i < len; i++) {
110
+ const el = elements[i];
111
+ const elName = el.nodeName.toLowerCase();
112
+
113
+ if (whitelistKeys.indexOf(elName) === -1) {
114
+ el.parentNode.removeChild(el);
115
+
116
+ continue;
117
+ }
118
+
119
+ const attributeList = [].concat(...el.attributes);
120
+ const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
121
+
122
+ attributeList.forEach((attr) => {
123
+ if (!allowedAttribute(attr, whitelistedAttributes)) {
124
+ el.removeAttribute(attr.nodeName);
125
+ }
126
+ });
127
+ }
128
+
129
+ return createdDocument.body.innerHTML;
130
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap (v5.0.0): util/scrollBar.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import SelectorEngine from '../dom/selector-engine';
9
+ import Manipulator from '../dom/manipulator';
10
+
11
+ const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
12
+ const SELECTOR_STICKY_CONTENT = '.sticky-top';
13
+
14
+ const getWidth = () => {
15
+ // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
16
+ const documentWidth = document.documentElement.clientWidth;
17
+ return Math.abs(window.innerWidth - documentWidth);
18
+ };
19
+
20
+ const hide = (width = getWidth()) => {
21
+ _disableOverFlow();
22
+ // give padding to element to balances the hidden scrollbar width
23
+ _setElementAttributes('body', 'paddingRight', (calculatedValue) => calculatedValue + width);
24
+ // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth
25
+ _setElementAttributes(
26
+ SELECTOR_FIXED_CONTENT,
27
+ 'paddingRight',
28
+ (calculatedValue) => calculatedValue + width
29
+ );
30
+ _setElementAttributes(
31
+ SELECTOR_STICKY_CONTENT,
32
+ 'marginRight',
33
+ (calculatedValue) => calculatedValue - width
34
+ );
35
+ };
36
+
37
+ const _disableOverFlow = () => {
38
+ const actualValue = document.body.style.overflow;
39
+ if (actualValue) {
40
+ Manipulator.setDataAttribute(document.body, 'overflow', actualValue);
41
+ }
42
+
43
+ document.body.style.overflow = 'hidden';
44
+ };
45
+
46
+ const _setElementAttributes = (selector, styleProp, callback) => {
47
+ const scrollbarWidth = getWidth();
48
+ SelectorEngine.find(selector).forEach((element) => {
49
+ if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {
50
+ return;
51
+ }
52
+
53
+ const actualValue = element.style[styleProp];
54
+ const calculatedValue = window.getComputedStyle(element)[styleProp];
55
+ Manipulator.setDataAttribute(element, styleProp, actualValue);
56
+ element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
57
+ });
58
+ };
59
+
60
+ const reset = () => {
61
+ _resetElementAttributes('body', 'overflow');
62
+ _resetElementAttributes('body', 'paddingRight');
63
+ _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
64
+ _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
65
+ };
66
+
67
+ const _resetElementAttributes = (selector, styleProp) => {
68
+ SelectorEngine.find(selector).forEach((element) => {
69
+ const value = Manipulator.getDataAttribute(element, styleProp);
70
+ if (typeof value === 'undefined') {
71
+ element.style.removeProperty(styleProp);
72
+ } else {
73
+ Manipulator.removeDataAttribute(element, styleProp);
74
+ element.style[styleProp] = value;
75
+ }
76
+ });
77
+ };
78
+
79
+ const isBodyOverflowing = () => {
80
+ return getWidth() > 0;
81
+ };
82
+
83
+ export { getWidth, hide, isBodyOverflowing, reset };
@@ -0,0 +1,105 @@
1
+ import SelectorEngine from '../dom/selector-engine';
2
+ import { isVisible, typeCheckConfig } from './index';
3
+
4
+ const NAME = 'Stack';
5
+
6
+ const DEFAULT_OPTIONS = {
7
+ position: 'top',
8
+ container: null,
9
+ refresh: 1000,
10
+ filter: (el) => {
11
+ return el;
12
+ },
13
+ };
14
+
15
+ const TYPE_OPTIONS = {
16
+ position: 'string',
17
+ container: '(undefined|null|string)',
18
+ refresh: 'number',
19
+ filter: 'function',
20
+ };
21
+
22
+ class Stack {
23
+ constructor(element, selector, options) {
24
+ this._element = element;
25
+ this._selector = selector;
26
+ this._options = this._getConfig(options);
27
+
28
+ this._offset = null;
29
+
30
+ if (this._options.container) {
31
+ this._parent = SelectorEngine.findOne(this._options.container);
32
+ }
33
+ }
34
+
35
+ get stackableElements() {
36
+ return SelectorEngine.find(this._selector)
37
+ .filter((el, i) => this._options.filter(el, i))
38
+ .map((el) => ({ el, rect: el.getBoundingClientRect() }))
39
+ .filter(({ el, rect }) => {
40
+ const basicCondition = el !== this._element && isVisible(el);
41
+ if (this._offset === null) {
42
+ return basicCondition;
43
+ }
44
+
45
+ return basicCondition && this._getBoundryOffset(rect) < this._offset;
46
+ })
47
+ .sort((a, b) => {
48
+ return this._getBoundryOffset(b.rect) - this._getBoundryOffset(a.rect);
49
+ });
50
+ }
51
+
52
+ get nextElements() {
53
+ return SelectorEngine.find(this._selector)
54
+ .filter((el) => el !== this._element)
55
+ .filter((el, i) => this._options.filter(el, i))
56
+ .filter((el) => {
57
+ this._offset = null;
58
+ return this._getBoundryOffset(el.getBoundingClientRect()) > this._offset;
59
+ });
60
+ }
61
+
62
+ _getConfig(options) {
63
+ const config = {
64
+ ...DEFAULT_OPTIONS,
65
+ ...options,
66
+ };
67
+
68
+ typeCheckConfig(NAME, config, TYPE_OPTIONS);
69
+
70
+ return config;
71
+ }
72
+
73
+ _getBoundryOffset(rect) {
74
+ const { position } = this._options;
75
+
76
+ let parentTopOffset = 0;
77
+ let parentBottomBoundry = window.innerHeight;
78
+
79
+ if (this._parent) {
80
+ const parentRect = this._parent.getBoundingClientRect();
81
+
82
+ parentTopOffset = parentRect.top;
83
+ parentBottomBoundry = parentRect.bottom;
84
+ }
85
+
86
+ if (position === 'top') {
87
+ return rect.top - parentTopOffset;
88
+ }
89
+ return parentBottomBoundry - rect.bottom;
90
+ }
91
+
92
+ calculateOffset() {
93
+ const [previousElement] = this.stackableElements;
94
+
95
+ if (!previousElement) {
96
+ this._offset = 0;
97
+ } else {
98
+ this._offset = this._getBoundryOffset(previousElement.rect) + previousElement.rect.height;
99
+ }
100
+
101
+ return this._offset;
102
+ }
103
+ }
104
+
105
+ export default Stack;