mis-crystal-design-system 2.3.18 → 2.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/bundles/mis-crystal-design-system-datepicker.umd.js +13916 -0
  2. package/bundles/mis-crystal-design-system-datepicker.umd.js.map +1 -0
  3. package/bundles/mis-crystal-design-system-datepicker.umd.min.js +68 -0
  4. package/bundles/mis-crystal-design-system-datepicker.umd.min.js.map +1 -0
  5. package/bundles/mis-crystal-design-system-datepicker_v2.umd.js +13 -13
  6. package/bundles/mis-crystal-design-system-datepicker_v2.umd.js.map +1 -1
  7. package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js +2 -2
  8. package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js.map +1 -1
  9. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js +10 -1
  10. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js.map +1 -1
  11. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js +2 -2
  12. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js.map +1 -1
  13. package/datepicker/base/bs-datepicker-container.d.ts +44 -0
  14. package/datepicker/bs-datepicker-inline.component.d.ts +61 -0
  15. package/datepicker/bs-datepicker-inline.config.d.ts +3 -0
  16. package/datepicker/bs-datepicker-input.directive.d.ts +30 -0
  17. package/datepicker/bs-datepicker.component.d.ts +123 -0
  18. package/datepicker/bs-datepicker.config.d.ts +140 -0
  19. package/datepicker/bs-datepicker.module.d.ts +4 -0
  20. package/datepicker/bs-daterangepicker-inline.component.d.ts +61 -0
  21. package/datepicker/bs-daterangepicker-inline.config.d.ts +6 -0
  22. package/datepicker/bs-daterangepicker-input.directive.d.ts +30 -0
  23. package/datepicker/bs-daterangepicker.component.d.ts +115 -0
  24. package/datepicker/bs-daterangepicker.config.d.ts +4 -0
  25. package/datepicker/bs-locale.service.d.ts +10 -0
  26. package/datepicker/date-formatter.d.ts +3 -0
  27. package/datepicker/datepicker-animations.d.ts +3 -0
  28. package/datepicker/datepicker-inner.component.d.ts +75 -0
  29. package/datepicker/datepicker.component.d.ts +78 -0
  30. package/datepicker/datepicker.config.d.ts +19 -0
  31. package/datepicker/datepicker.module.d.ts +4 -0
  32. package/datepicker/daypicker.component.d.ts +14 -0
  33. package/datepicker/engine/calc-days-calendar.d.ts +2 -0
  34. package/datepicker/engine/flag-days-calendar.d.ts +17 -0
  35. package/datepicker/engine/flag-months-calendar.d.ts +12 -0
  36. package/datepicker/engine/flag-years-calendar.d.ts +12 -0
  37. package/datepicker/engine/format-days-calendar.d.ts +4 -0
  38. package/datepicker/engine/format-months-calendar.d.ts +2 -0
  39. package/datepicker/engine/format-years-calendar.d.ts +4 -0
  40. package/datepicker/engine/view-mode.d.ts +2 -0
  41. package/datepicker/index.d.ts +1 -0
  42. package/datepicker/mis-crystal-design-system-datepicker.d.ts +24 -0
  43. package/datepicker/mis-crystal-design-system-datepicker.metadata.json +1 -0
  44. package/datepicker/models/index.d.ts +102 -0
  45. package/datepicker/monthpicker.component.d.ts +11 -0
  46. package/datepicker/package.json +11 -0
  47. package/datepicker/public_api.d.ts +26 -0
  48. package/datepicker/reducer/_defaults.d.ts +2 -0
  49. package/datepicker/reducer/bs-datepicker.actions.d.ts +43 -0
  50. package/datepicker/reducer/bs-datepicker.effects.d.ts +38 -0
  51. package/datepicker/reducer/bs-datepicker.reducer.d.ts +3 -0
  52. package/datepicker/reducer/bs-datepicker.state.d.ts +43 -0
  53. package/datepicker/reducer/bs-datepicker.store.d.ts +5 -0
  54. package/datepicker/sub-components/chronos/create/check-overflow.d.ts +2 -0
  55. package/datepicker/sub-components/chronos/create/clone.d.ts +1 -0
  56. package/datepicker/sub-components/chronos/create/date-from-array.d.ts +2 -0
  57. package/datepicker/sub-components/chronos/create/from-anything.d.ts +4 -0
  58. package/datepicker/sub-components/chronos/create/from-array.d.ts +2 -0
  59. package/datepicker/sub-components/chronos/create/from-object.d.ts +2 -0
  60. package/datepicker/sub-components/chronos/create/from-string-and-array.d.ts +2 -0
  61. package/datepicker/sub-components/chronos/create/from-string-and-format.d.ts +4 -0
  62. package/datepicker/sub-components/chronos/create/from-string.d.ts +4 -0
  63. package/datepicker/sub-components/chronos/create/local.d.ts +3 -0
  64. package/datepicker/sub-components/chronos/create/parsing-flags.d.ts +2 -0
  65. package/datepicker/sub-components/chronos/create/parsing.types.d.ts +64 -0
  66. package/datepicker/sub-components/chronos/create/valid.d.ts +6 -0
  67. package/datepicker/sub-components/chronos/duration/bubble.d.ts +4 -0
  68. package/datepicker/sub-components/chronos/duration/constructor.d.ts +21 -0
  69. package/datepicker/sub-components/chronos/duration/create.d.ts +8 -0
  70. package/datepicker/sub-components/chronos/duration/humanize.d.ts +5 -0
  71. package/datepicker/sub-components/chronos/duration/valid.d.ts +2 -0
  72. package/datepicker/sub-components/chronos/format/format.d.ts +11 -0
  73. package/datepicker/sub-components/chronos/format.d.ts +5 -0
  74. package/datepicker/sub-components/chronos/i18n/ar.d.ts +2 -0
  75. package/datepicker/sub-components/chronos/i18n/bg.d.ts +2 -0
  76. package/datepicker/sub-components/chronos/i18n/ca.d.ts +2 -0
  77. package/datepicker/sub-components/chronos/i18n/cs.d.ts +2 -0
  78. package/datepicker/sub-components/chronos/i18n/da.d.ts +2 -0
  79. package/datepicker/sub-components/chronos/i18n/de.d.ts +2 -0
  80. package/datepicker/sub-components/chronos/i18n/en-gb.d.ts +2 -0
  81. package/datepicker/sub-components/chronos/i18n/es-do.d.ts +2 -0
  82. package/datepicker/sub-components/chronos/i18n/es-us.d.ts +2 -0
  83. package/datepicker/sub-components/chronos/i18n/es.d.ts +2 -0
  84. package/datepicker/sub-components/chronos/i18n/et.d.ts +2 -0
  85. package/datepicker/sub-components/chronos/i18n/fi.d.ts +2 -0
  86. package/datepicker/sub-components/chronos/i18n/fr.d.ts +2 -0
  87. package/datepicker/sub-components/chronos/i18n/gl.d.ts +2 -0
  88. package/datepicker/sub-components/chronos/i18n/he.d.ts +2 -0
  89. package/datepicker/sub-components/chronos/i18n/hi.d.ts +2 -0
  90. package/datepicker/sub-components/chronos/i18n/hr.d.ts +2 -0
  91. package/datepicker/sub-components/chronos/i18n/hu.d.ts +2 -0
  92. package/datepicker/sub-components/chronos/i18n/id.d.ts +2 -0
  93. package/datepicker/sub-components/chronos/i18n/it.d.ts +2 -0
  94. package/datepicker/sub-components/chronos/i18n/ja.d.ts +2 -0
  95. package/datepicker/sub-components/chronos/i18n/ka.d.ts +2 -0
  96. package/datepicker/sub-components/chronos/i18n/kk.d.ts +2 -0
  97. package/datepicker/sub-components/chronos/i18n/ko.d.ts +2 -0
  98. package/datepicker/sub-components/chronos/i18n/lt.d.ts +2 -0
  99. package/datepicker/sub-components/chronos/i18n/lv.d.ts +2 -0
  100. package/datepicker/sub-components/chronos/i18n/mn.d.ts +2 -0
  101. package/datepicker/sub-components/chronos/i18n/nb.d.ts +2 -0
  102. package/datepicker/sub-components/chronos/i18n/nl-be.d.ts +2 -0
  103. package/datepicker/sub-components/chronos/i18n/nl.d.ts +2 -0
  104. package/datepicker/sub-components/chronos/i18n/pl.d.ts +2 -0
  105. package/datepicker/sub-components/chronos/i18n/pt-br.d.ts +2 -0
  106. package/datepicker/sub-components/chronos/i18n/ro.d.ts +2 -0
  107. package/datepicker/sub-components/chronos/i18n/ru.d.ts +2 -0
  108. package/datepicker/sub-components/chronos/i18n/sk.d.ts +2 -0
  109. package/datepicker/sub-components/chronos/i18n/sl.d.ts +2 -0
  110. package/datepicker/sub-components/chronos/i18n/sq.d.ts +2 -0
  111. package/datepicker/sub-components/chronos/i18n/sv.d.ts +2 -0
  112. package/datepicker/sub-components/chronos/i18n/th-be.d.ts +2 -0
  113. package/datepicker/sub-components/chronos/i18n/th.d.ts +2 -0
  114. package/datepicker/sub-components/chronos/i18n/tr.d.ts +2 -0
  115. package/datepicker/sub-components/chronos/i18n/uk.d.ts +2 -0
  116. package/datepicker/sub-components/chronos/i18n/vi.d.ts +2 -0
  117. package/datepicker/sub-components/chronos/i18n/zh-cn.d.ts +2 -0
  118. package/datepicker/sub-components/chronos/index.d.ts +1 -0
  119. package/datepicker/sub-components/chronos/locale/calendar.d.ts +8 -0
  120. package/datepicker/sub-components/chronos/locale/locale.class.d.ts +143 -0
  121. package/datepicker/sub-components/chronos/locale/locale.defaults.d.ts +11 -0
  122. package/datepicker/sub-components/chronos/locale/locales.d.ts +7 -0
  123. package/datepicker/sub-components/chronos/moment/add-subtract.d.ts +5 -0
  124. package/datepicker/sub-components/chronos/moment/calendar.d.ts +15 -0
  125. package/datepicker/sub-components/chronos/moment/diff.d.ts +3 -0
  126. package/datepicker/sub-components/chronos/moment/min-max.d.ts +2 -0
  127. package/datepicker/sub-components/chronos/parse/regex.d.ts +22 -0
  128. package/datepicker/sub-components/chronos/parse/token.d.ts +5 -0
  129. package/datepicker/sub-components/chronos/public_api.d.ts +57 -0
  130. package/datepicker/sub-components/chronos/test/chain.d.ts +214 -0
  131. package/datepicker/sub-components/chronos/types.d.ts +36 -0
  132. package/datepicker/sub-components/chronos/units/aliases.d.ts +7 -0
  133. package/datepicker/sub-components/chronos/units/constants.d.ts +9 -0
  134. package/datepicker/sub-components/chronos/units/day-of-month.d.ts +1 -0
  135. package/datepicker/sub-components/chronos/units/day-of-week.d.ts +20 -0
  136. package/datepicker/sub-components/chronos/units/day-of-year.d.ts +3 -0
  137. package/datepicker/sub-components/chronos/units/hour.d.ts +1 -0
  138. package/datepicker/sub-components/chronos/units/index.d.ts +18 -0
  139. package/datepicker/sub-components/chronos/units/millisecond.d.ts +1 -0
  140. package/datepicker/sub-components/chronos/units/minute.d.ts +1 -0
  141. package/datepicker/sub-components/chronos/units/month.d.ts +2 -0
  142. package/datepicker/sub-components/chronos/units/offset.d.ts +10 -0
  143. package/datepicker/sub-components/chronos/units/priorities.d.ts +1 -0
  144. package/datepicker/sub-components/chronos/units/quarter.d.ts +3 -0
  145. package/datepicker/sub-components/chronos/units/second.d.ts +1 -0
  146. package/datepicker/sub-components/chronos/units/timestamp.d.ts +1 -0
  147. package/datepicker/sub-components/chronos/units/timezone.d.ts +3 -0
  148. package/datepicker/sub-components/chronos/units/week-calendar-utils.d.ts +9 -0
  149. package/datepicker/sub-components/chronos/units/week-year.d.ts +8 -0
  150. package/datepicker/sub-components/chronos/units/week.d.ts +6 -0
  151. package/datepicker/sub-components/chronos/units/year.d.ts +4 -0
  152. package/datepicker/sub-components/chronos/utils/abs-ceil.d.ts +1 -0
  153. package/datepicker/sub-components/chronos/utils/abs-round.d.ts +1 -0
  154. package/datepicker/sub-components/chronos/utils/compare-arrays.d.ts +1 -0
  155. package/datepicker/sub-components/chronos/utils/date-compare.d.ts +9 -0
  156. package/datepicker/sub-components/chronos/utils/date-getters.d.ts +18 -0
  157. package/datepicker/sub-components/chronos/utils/date-setters.d.ts +12 -0
  158. package/datepicker/sub-components/chronos/utils/defaults.d.ts +1 -0
  159. package/datepicker/sub-components/chronos/utils/start-end-of.d.ts +3 -0
  160. package/datepicker/sub-components/chronos/utils/type-checks.d.ts +12 -0
  161. package/datepicker/sub-components/chronos/utils/zero-fill.d.ts +1 -0
  162. package/datepicker/sub-components/chronos/utils.d.ts +2 -0
  163. package/datepicker/sub-components/component-loader/bs-component-ref.class.d.ts +5 -0
  164. package/datepicker/sub-components/component-loader/component-loader.class.d.ts +75 -0
  165. package/datepicker/sub-components/component-loader/component-loader.factory.d.ts +18 -0
  166. package/datepicker/sub-components/component-loader/content-ref.class.d.ts +7 -0
  167. package/datepicker/sub-components/component-loader/index.d.ts +1 -0
  168. package/datepicker/sub-components/component-loader/listen-options.model.d.ts +11 -0
  169. package/datepicker/sub-components/component-loader/public_api.d.ts +4 -0
  170. package/datepicker/sub-components/mini-ngrx/index.d.ts +1 -0
  171. package/datepicker/sub-components/mini-ngrx/public_api.d.ts +7 -0
  172. package/datepicker/sub-components/mini-ngrx/state.class.d.ts +8 -0
  173. package/datepicker/sub-components/mini-ngrx/store.class.d.ts +16 -0
  174. package/datepicker/sub-components/positioning/index.d.ts +1 -0
  175. package/datepicker/sub-components/positioning/models/index.d.ts +41 -0
  176. package/datepicker/sub-components/positioning/modifiers/arrow.d.ts +2 -0
  177. package/datepicker/sub-components/positioning/modifiers/flip.d.ts +2 -0
  178. package/datepicker/sub-components/positioning/modifiers/index.d.ts +5 -0
  179. package/datepicker/sub-components/positioning/modifiers/initData.d.ts +2 -0
  180. package/datepicker/sub-components/positioning/modifiers/preventOverflow.d.ts +2 -0
  181. package/datepicker/sub-components/positioning/modifiers/shift.d.ts +2 -0
  182. package/datepicker/sub-components/positioning/ng-positioning.d.ts +8 -0
  183. package/datepicker/sub-components/positioning/positioning.service.d.ts +45 -0
  184. package/datepicker/sub-components/positioning/public_api.d.ts +2 -0
  185. package/datepicker/sub-components/positioning/utils/computeAutoPlacement.d.ts +2 -0
  186. package/datepicker/sub-components/positioning/utils/findCommonOffsetParent.d.ts +1 -0
  187. package/datepicker/sub-components/positioning/utils/getBordersSize.d.ts +4 -0
  188. package/datepicker/sub-components/positioning/utils/getBoundaries.d.ts +1 -0
  189. package/datepicker/sub-components/positioning/utils/getBoundingClientRect.d.ts +2 -0
  190. package/datepicker/sub-components/positioning/utils/getClientRect.d.ts +5 -0
  191. package/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.d.ts +4 -0
  192. package/datepicker/sub-components/positioning/utils/getOffsetParent.d.ts +1 -0
  193. package/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +2 -0
  194. package/datepicker/sub-components/positioning/utils/getOffsets.d.ts +2 -0
  195. package/datepicker/sub-components/positioning/utils/getOppositePlacement.d.ts +4 -0
  196. package/datepicker/sub-components/positioning/utils/getOppositeVariation.d.ts +4 -0
  197. package/datepicker/sub-components/positioning/utils/getOuterSizes.d.ts +7 -0
  198. package/datepicker/sub-components/positioning/utils/getParentNode.d.ts +4 -0
  199. package/datepicker/sub-components/positioning/utils/getReferenceOffsets.d.ts +2 -0
  200. package/datepicker/sub-components/positioning/utils/getRoot.d.ts +4 -0
  201. package/datepicker/sub-components/positioning/utils/getScroll.d.ts +4 -0
  202. package/datepicker/sub-components/positioning/utils/getScrollParent.d.ts +1 -0
  203. package/datepicker/sub-components/positioning/utils/getStyleComputedProperty.d.ts +4 -0
  204. package/datepicker/sub-components/positioning/utils/getTargetOffsets.d.ts +2 -0
  205. package/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +2 -0
  206. package/datepicker/sub-components/positioning/utils/getWindowSizes.d.ts +4 -0
  207. package/datepicker/sub-components/positioning/utils/includeScroll.d.ts +2 -0
  208. package/datepicker/sub-components/positioning/utils/index.d.ts +23 -0
  209. package/datepicker/sub-components/positioning/utils/isBrowser.d.ts +1 -0
  210. package/datepicker/sub-components/positioning/utils/isFixed.d.ts +1 -0
  211. package/datepicker/sub-components/positioning/utils/isIE.d.ts +1 -0
  212. package/datepicker/sub-components/positioning/utils/isModifierEnabled.d.ts +4 -0
  213. package/datepicker/sub-components/positioning/utils/isNumeric.d.ts +4 -0
  214. package/datepicker/sub-components/positioning/utils/isOffsetContainer.d.ts +1 -0
  215. package/datepicker/sub-components/positioning/utils/setStyles.d.ts +5 -0
  216. package/datepicker/sub-components/positioning/utils/updateContainerClass.d.ts +6 -0
  217. package/datepicker/sub-components/tooltip/index.d.ts +1 -0
  218. package/datepicker/sub-components/tooltip/public_api.d.ts +4 -0
  219. package/datepicker/sub-components/tooltip/tooltip-container.component.d.ts +14 -0
  220. package/datepicker/sub-components/tooltip/tooltip.config.d.ts +13 -0
  221. package/datepicker/sub-components/tooltip/tooltip.directive.d.ts +109 -0
  222. package/datepicker/sub-components/tooltip/tooltip.module.d.ts +4 -0
  223. package/datepicker/sub-components/utils/decorators.d.ts +1 -0
  224. package/datepicker/sub-components/utils/facade/browser.d.ts +23 -0
  225. package/datepicker/sub-components/utils/index.d.ts +1 -0
  226. package/datepicker/sub-components/utils/linked-list.class.d.ts +26 -0
  227. package/datepicker/sub-components/utils/public_api.d.ts +10 -0
  228. package/datepicker/sub-components/utils/theme-provider.d.ts +2 -0
  229. package/datepicker/sub-components/utils/trigger.class.d.ts +6 -0
  230. package/datepicker/sub-components/utils/triggers.d.ts +18 -0
  231. package/datepicker/sub-components/utils/utils.class.d.ts +4 -0
  232. package/datepicker/sub-components/utils/warn-once.d.ts +1 -0
  233. package/datepicker/themes/bs/bs-calendar-layout.component.d.ts +2 -0
  234. package/datepicker/themes/bs/bs-current-date-view.component.d.ts +3 -0
  235. package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +14 -0
  236. package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +33 -0
  237. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +11 -0
  238. package/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +10 -0
  239. package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +9 -0
  240. package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +37 -0
  241. package/datepicker/themes/bs/bs-daterangepicker-inline-container.component.d.ts +10 -0
  242. package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +23 -0
  243. package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +13 -0
  244. package/datepicker/themes/bs/bs-timepicker-view.component.d.ts +5 -0
  245. package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +13 -0
  246. package/datepicker/utils/bs-calendar-utils.d.ts +10 -0
  247. package/datepicker/utils/matrix-utils.d.ts +9 -0
  248. package/datepicker/yearpicker.component.d.ts +11 -0
  249. package/datepicker_v2/mis-crystal-design-system-datepicker_v2.metadata.json +1 -1
  250. package/esm2015/datepicker/base/bs-datepicker-container.js +47 -0
  251. package/esm2015/datepicker/bs-datepicker-inline.component.js +132 -0
  252. package/esm2015/datepicker/bs-datepicker-inline.config.js +12 -0
  253. package/esm2015/datepicker/bs-datepicker-input.directive.js +159 -0
  254. package/esm2015/datepicker/bs-datepicker.component.js +238 -0
  255. package/esm2015/datepicker/bs-datepicker.config.js +85 -0
  256. package/esm2015/datepicker/bs-datepicker.module.js +101 -0
  257. package/esm2015/datepicker/bs-daterangepicker-inline.component.js +129 -0
  258. package/esm2015/datepicker/bs-daterangepicker-inline.config.js +19 -0
  259. package/esm2015/datepicker/bs-daterangepicker-input.directive.js +191 -0
  260. package/esm2015/datepicker/bs-daterangepicker.component.js +227 -0
  261. package/esm2015/datepicker/bs-daterangepicker.config.js +17 -0
  262. package/esm2015/datepicker/bs-locale.service.js +28 -0
  263. package/esm2015/datepicker/date-formatter.js +7 -0
  264. package/esm2015/datepicker/datepicker-animations.js +16 -0
  265. package/esm2015/datepicker/datepicker-inner.component.js +282 -0
  266. package/esm2015/datepicker/datepicker.component.js +140 -0
  267. package/esm2015/datepicker/datepicker.config.js +30 -0
  268. package/esm2015/datepicker/datepicker.module.js +35 -0
  269. package/esm2015/datepicker/daypicker.component.js +174 -0
  270. package/esm2015/datepicker/engine/calc-days-calendar.js +19 -0
  271. package/esm2015/datepicker/engine/flag-days-calendar.js +91 -0
  272. package/esm2015/datepicker/engine/flag-months-calendar.js +41 -0
  273. package/esm2015/datepicker/engine/flag-years-calendar.js +39 -0
  274. package/esm2015/datepicker/engine/format-days-calendar.js +29 -0
  275. package/esm2015/datepicker/engine/format-months-calendar.js +19 -0
  276. package/esm2015/datepicker/engine/format-years-calendar.js +35 -0
  277. package/esm2015/datepicker/engine/view-mode.js +4 -0
  278. package/esm2015/datepicker/index.js +2 -0
  279. package/esm2015/datepicker/mis-crystal-design-system-datepicker.js +25 -0
  280. package/esm2015/datepicker/models/index.js +9 -0
  281. package/esm2015/datepicker/monthpicker.component.js +87 -0
  282. package/esm2015/datepicker/public_api.js +26 -0
  283. package/esm2015/datepicker/reducer/_defaults.js +5 -0
  284. package/esm2015/datepicker/reducer/bs-datepicker.actions.js +132 -0
  285. package/esm2015/datepicker/reducer/bs-datepicker.effects.js +170 -0
  286. package/esm2015/datepicker/reducer/bs-datepicker.reducer.js +302 -0
  287. package/esm2015/datepicker/reducer/bs-datepicker.state.js +12 -0
  288. package/esm2015/datepicker/reducer/bs-datepicker.store.js +19 -0
  289. package/esm2015/datepicker/sub-components/chronos/create/check-overflow.js +30 -0
  290. package/esm2015/datepicker/sub-components/chronos/create/clone.js +6 -0
  291. package/esm2015/datepicker/sub-components/chronos/create/date-from-array.js +17 -0
  292. package/esm2015/datepicker/sub-components/chronos/create/from-anything.js +107 -0
  293. package/esm2015/datepicker/sub-components/chronos/create/from-array.js +136 -0
  294. package/esm2015/datepicker/sub-components/chronos/create/from-object.js +17 -0
  295. package/esm2015/datepicker/sub-components/chronos/create/from-string-and-array.js +38 -0
  296. package/esm2015/datepicker/sub-components/chronos/create/from-string-and-format.js +106 -0
  297. package/esm2015/datepicker/sub-components/chronos/create/from-string.js +227 -0
  298. package/esm2015/datepicker/sub-components/chronos/create/local.js +16 -0
  299. package/esm2015/datepicker/sub-components/chronos/create/parsing-flags.js +26 -0
  300. package/esm2015/datepicker/sub-components/chronos/create/parsing.types.js +2 -0
  301. package/esm2015/datepicker/sub-components/chronos/create/valid.js +42 -0
  302. package/esm2015/datepicker/sub-components/chronos/duration/bubble.js +47 -0
  303. package/esm2015/datepicker/sub-components/chronos/duration/constructor.js +130 -0
  304. package/esm2015/datepicker/sub-components/chronos/duration/create.js +113 -0
  305. package/esm2015/datepicker/sub-components/chronos/duration/humanize.js +80 -0
  306. package/esm2015/datepicker/sub-components/chronos/duration/valid.js +45 -0
  307. package/esm2015/datepicker/sub-components/chronos/format/format.js +51 -0
  308. package/esm2015/datepicker/sub-components/chronos/format.js +46 -0
  309. package/esm2015/datepicker/sub-components/chronos/i18n/ar.js +131 -0
  310. package/esm2015/datepicker/sub-components/chronos/i18n/bg.js +96 -0
  311. package/esm2015/datepicker/sub-components/chronos/i18n/ca.js +91 -0
  312. package/esm2015/datepicker/sub-components/chronos/i18n/cs.js +181 -0
  313. package/esm2015/datepicker/sub-components/chronos/i18n/da.js +50 -0
  314. package/esm2015/datepicker/sub-components/chronos/i18n/de.js +72 -0
  315. package/esm2015/datepicker/sub-components/chronos/i18n/en-gb.js +61 -0
  316. package/esm2015/datepicker/sub-components/chronos/i18n/es-do.js +85 -0
  317. package/esm2015/datepicker/sub-components/chronos/i18n/es-us.js +79 -0
  318. package/esm2015/datepicker/sub-components/chronos/i18n/es.js +84 -0
  319. package/esm2015/datepicker/sub-components/chronos/i18n/et.js +75 -0
  320. package/esm2015/datepicker/sub-components/chronos/i18n/fi.js +100 -0
  321. package/esm2015/datepicker/sub-components/chronos/i18n/fr.js +76 -0
  322. package/esm2015/datepicker/sub-components/chronos/i18n/gl.js +84 -0
  323. package/esm2015/datepicker/sub-components/chronos/i18n/he.js +98 -0
  324. package/esm2015/datepicker/sub-components/chronos/i18n/hi.js +124 -0
  325. package/esm2015/datepicker/sub-components/chronos/i18n/hr.js +62 -0
  326. package/esm2015/datepicker/sub-components/chronos/i18n/hu.js +104 -0
  327. package/esm2015/datepicker/sub-components/chronos/i18n/id.js +83 -0
  328. package/esm2015/datepicker/sub-components/chronos/i18n/it.js +65 -0
  329. package/esm2015/datepicker/sub-components/chronos/i18n/ja.js +75 -0
  330. package/esm2015/datepicker/sub-components/chronos/i18n/ka.js +87 -0
  331. package/esm2015/datepicker/sub-components/chronos/i18n/kk.js +76 -0
  332. package/esm2015/datepicker/sub-components/chronos/i18n/ko.js +77 -0
  333. package/esm2015/datepicker/sub-components/chronos/i18n/lt.js +116 -0
  334. package/esm2015/datepicker/sub-components/chronos/i18n/lv.js +56 -0
  335. package/esm2015/datepicker/sub-components/chronos/i18n/mn.js +99 -0
  336. package/esm2015/datepicker/sub-components/chronos/i18n/nb.js +53 -0
  337. package/esm2015/datepicker/sub-components/chronos/i18n/nl-be.js +81 -0
  338. package/esm2015/datepicker/sub-components/chronos/i18n/nl.js +80 -0
  339. package/esm2015/datepicker/sub-components/chronos/i18n/pl.js +126 -0
  340. package/esm2015/datepicker/sub-components/chronos/i18n/pt-br.js +56 -0
  341. package/esm2015/datepicker/sub-components/chronos/i18n/ro.js +66 -0
  342. package/esm2015/datepicker/sub-components/chronos/i18n/ru.js +181 -0
  343. package/esm2015/datepicker/sub-components/chronos/i18n/sk.js +157 -0
  344. package/esm2015/datepicker/sub-components/chronos/i18n/sl.js +184 -0
  345. package/esm2015/datepicker/sub-components/chronos/i18n/sq.js +54 -0
  346. package/esm2015/datepicker/sub-components/chronos/i18n/sv.js +63 -0
  347. package/esm2015/datepicker/sub-components/chronos/i18n/th-be.js +74 -0
  348. package/esm2015/datepicker/sub-components/chronos/i18n/th.js +59 -0
  349. package/esm2015/datepicker/sub-components/chronos/i18n/tr.js +82 -0
  350. package/esm2015/datepicker/sub-components/chronos/i18n/uk.js +147 -0
  351. package/esm2015/datepicker/sub-components/chronos/i18n/vi.js +74 -0
  352. package/esm2015/datepicker/sub-components/chronos/i18n/zh-cn.js +114 -0
  353. package/esm2015/datepicker/sub-components/chronos/index.js +2 -0
  354. package/esm2015/datepicker/sub-components/chronos/locale/calendar.js +9 -0
  355. package/esm2015/datepicker/sub-components/chronos/locale/locale.class.js +532 -0
  356. package/esm2015/datepicker/sub-components/chronos/locale/locale.defaults.js +40 -0
  357. package/esm2015/datepicker/sub-components/chronos/locale/locales.js +229 -0
  358. package/esm2015/datepicker/sub-components/chronos/moment/add-subtract.js +35 -0
  359. package/esm2015/datepicker/sub-components/chronos/moment/calendar.js +41 -0
  360. package/esm2015/datepicker/sub-components/chronos/moment/diff.js +70 -0
  361. package/esm2015/datepicker/sub-components/chronos/moment/min-max.js +38 -0
  362. package/esm2015/datepicker/sub-components/chronos/parse/regex.js +49 -0
  363. package/esm2015/datepicker/sub-components/chronos/parse/token.js +32 -0
  364. package/esm2015/datepicker/sub-components/chronos/public_api.js +56 -0
  365. package/esm2015/datepicker/sub-components/chronos/test/chain.js +711 -0
  366. package/esm2015/datepicker/sub-components/chronos/types.js +2 -0
  367. package/esm2015/datepicker/sub-components/chronos/units/aliases.js +35 -0
  368. package/esm2015/datepicker/sub-components/chronos/units/constants.js +11 -0
  369. package/esm2015/datepicker/sub-components/chronos/units/day-of-month.js +31 -0
  370. package/esm2015/datepicker/sub-components/chronos/units/day-of-week.js +129 -0
  371. package/esm2015/datepicker/sub-components/chronos/units/day-of-year.js +37 -0
  372. package/esm2015/datepicker/sub-components/chronos/units/hour.js +127 -0
  373. package/esm2015/datepicker/sub-components/chronos/units/index.js +19 -0
  374. package/esm2015/datepicker/sub-components/chronos/units/millisecond.js +60 -0
  375. package/esm2015/datepicker/sub-components/chronos/units/minute.js +23 -0
  376. package/esm2015/datepicker/sub-components/chronos/units/month.js +63 -0
  377. package/esm2015/datepicker/sub-components/chronos/units/offset.js +210 -0
  378. package/esm2015/datepicker/sub-components/chronos/units/priorities.js +21 -0
  379. package/esm2015/datepicker/sub-components/chronos/units/quarter.js +39 -0
  380. package/esm2015/datepicker/sub-components/chronos/units/second.js +23 -0
  381. package/esm2015/datepicker/sub-components/chronos/units/timestamp.js +28 -0
  382. package/esm2015/datepicker/sub-components/chronos/units/timezone.js +19 -0
  383. package/esm2015/datepicker/sub-components/chronos/units/week-calendar-utils.js +70 -0
  384. package/esm2015/datepicker/sub-components/chronos/units/week-year.js +101 -0
  385. package/esm2015/datepicker/sub-components/chronos/units/week.js +58 -0
  386. package/esm2015/datepicker/sub-components/chronos/units/year.js +60 -0
  387. package/esm2015/datepicker/sub-components/chronos/utils/abs-ceil.js +4 -0
  388. package/esm2015/datepicker/sub-components/chronos/utils/abs-round.js +4 -0
  389. package/esm2015/datepicker/sub-components/chronos/utils/compare-arrays.js +16 -0
  390. package/esm2015/datepicker/sub-components/chronos/utils/date-compare.js +55 -0
  391. package/esm2015/datepicker/sub-components/chronos/utils/date-getters.js +67 -0
  392. package/esm2015/datepicker/sub-components/chronos/utils/date-setters.js +75 -0
  393. package/esm2015/datepicker/sub-components/chronos/utils/defaults.js +11 -0
  394. package/esm2015/datepicker/sub-components/chronos/utils/start-end-of.js +57 -0
  395. package/esm2015/datepicker/sub-components/chronos/utils/type-checks.js +56 -0
  396. package/esm2015/datepicker/sub-components/chronos/utils/zero-fill.js +10 -0
  397. package/esm2015/datepicker/sub-components/chronos/utils.js +7 -0
  398. package/esm2015/datepicker/sub-components/component-loader/bs-component-ref.class.js +3 -0
  399. package/esm2015/datepicker/sub-components/component-loader/component-loader.class.js +272 -0
  400. package/esm2015/datepicker/sub-components/component-loader/component-loader.factory.js +32 -0
  401. package/esm2015/datepicker/sub-components/component-loader/content-ref.class.js +12 -0
  402. package/esm2015/datepicker/sub-components/component-loader/index.js +2 -0
  403. package/esm2015/datepicker/sub-components/component-loader/listen-options.model.js +2 -0
  404. package/esm2015/datepicker/sub-components/component-loader/public_api.js +5 -0
  405. package/esm2015/datepicker/sub-components/mini-ngrx/index.js +2 -0
  406. package/esm2015/datepicker/sub-components/mini-ngrx/public_api.js +3 -0
  407. package/esm2015/datepicker/sub-components/mini-ngrx/state.class.js +16 -0
  408. package/esm2015/datepicker/sub-components/mini-ngrx/store.class.js +43 -0
  409. package/esm2015/datepicker/sub-components/positioning/index.js +2 -0
  410. package/esm2015/datepicker/sub-components/positioning/models/index.js +2 -0
  411. package/esm2015/datepicker/sub-components/positioning/modifiers/arrow.js +56 -0
  412. package/esm2015/datepicker/sub-components/positioning/modifiers/flip.js +60 -0
  413. package/esm2015/datepicker/sub-components/positioning/modifiers/index.js +6 -0
  414. package/esm2015/datepicker/sub-components/positioning/modifiers/initData.js +42 -0
  415. package/esm2015/datepicker/sub-components/positioning/modifiers/preventOverflow.js +56 -0
  416. package/esm2015/datepicker/sub-components/positioning/modifiers/shift.js +22 -0
  417. package/esm2015/datepicker/sub-components/positioning/ng-positioning.js +30 -0
  418. package/esm2015/datepicker/sub-components/positioning/positioning.service.js +71 -0
  419. package/esm2015/datepicker/sub-components/positioning/public_api.js +3 -0
  420. package/esm2015/datepicker/sub-components/positioning/utils/computeAutoPlacement.js +53 -0
  421. package/esm2015/datepicker/sub-components/positioning/utils/findCommonOffsetParent.js +40 -0
  422. package/esm2015/datepicker/sub-components/positioning/utils/getBordersSize.js +10 -0
  423. package/esm2015/datepicker/sub-components/positioning/utils/getBoundaries.js +56 -0
  424. package/esm2015/datepicker/sub-components/positioning/utils/getBoundingClientRect.js +55 -0
  425. package/esm2015/datepicker/sub-components/positioning/utils/getClientRect.js +4 -0
  426. package/esm2015/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.js +17 -0
  427. package/esm2015/datepicker/sub-components/positioning/utils/getOffsetParent.js +32 -0
  428. package/esm2015/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.js +51 -0
  429. package/esm2015/datepicker/sub-components/positioning/utils/getOffsets.js +11 -0
  430. package/esm2015/datepicker/sub-components/positioning/utils/getOppositePlacement.js +8 -0
  431. package/esm2015/datepicker/sub-components/positioning/utils/getOppositeVariation.js +13 -0
  432. package/esm2015/datepicker/sub-components/positioning/utils/getOuterSizes.js +14 -0
  433. package/esm2015/datepicker/sub-components/positioning/utils/getParentNode.js +10 -0
  434. package/esm2015/datepicker/sub-components/positioning/utils/getReferenceOffsets.js +13 -0
  435. package/esm2015/datepicker/sub-components/positioning/utils/getRoot.js +10 -0
  436. package/esm2015/datepicker/sub-components/positioning/utils/getScroll.js +14 -0
  437. package/esm2015/datepicker/sub-components/positioning/utils/getScrollParent.js +26 -0
  438. package/esm2015/datepicker/sub-components/positioning/utils/getStyleComputedProperty.js +13 -0
  439. package/esm2015/datepicker/sub-components/positioning/utils/getTargetOffsets.js +30 -0
  440. package/esm2015/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +19 -0
  441. package/esm2015/datepicker/sub-components/positioning/utils/getWindowSizes.js +18 -0
  442. package/esm2015/datepicker/sub-components/positioning/utils/includeScroll.js +15 -0
  443. package/esm2015/datepicker/sub-components/positioning/utils/index.js +24 -0
  444. package/esm2015/datepicker/sub-components/positioning/utils/isBrowser.js +2 -0
  445. package/esm2015/datepicker/sub-components/positioning/utils/isFixed.js +16 -0
  446. package/esm2015/datepicker/sub-components/positioning/utils/isIE.js +16 -0
  447. package/esm2015/datepicker/sub-components/positioning/utils/isModifierEnabled.js +10 -0
  448. package/esm2015/datepicker/sub-components/positioning/utils/isNumeric.js +7 -0
  449. package/esm2015/datepicker/sub-components/positioning/utils/isOffsetContainer.js +9 -0
  450. package/esm2015/datepicker/sub-components/positioning/utils/setStyles.js +17 -0
  451. package/esm2015/datepicker/sub-components/positioning/utils/updateContainerClass.js +22 -0
  452. package/esm2015/datepicker/sub-components/tooltip/index.js +2 -0
  453. package/esm2015/datepicker/sub-components/tooltip/public_api.js +5 -0
  454. package/esm2015/datepicker/sub-components/tooltip/tooltip-container.component.js +63 -0
  455. package/esm2015/datepicker/sub-components/tooltip/tooltip.config.js +22 -0
  456. package/esm2015/datepicker/sub-components/tooltip/tooltip.directive.js +282 -0
  457. package/esm2015/datepicker/sub-components/tooltip/tooltip.module.js +23 -0
  458. package/esm2015/datepicker/sub-components/utils/decorators.js +25 -0
  459. package/esm2015/datepicker/sub-components/utils/facade/browser.js +24 -0
  460. package/esm2015/datepicker/sub-components/utils/index.js +2 -0
  461. package/esm2015/datepicker/sub-components/utils/linked-list.class.js +240 -0
  462. package/esm2015/datepicker/sub-components/utils/public_api.js +11 -0
  463. package/esm2015/datepicker/sub-components/utils/theme-provider.js +35 -0
  464. package/esm2015/datepicker/sub-components/utils/trigger.class.js +10 -0
  465. package/esm2015/datepicker/sub-components/utils/triggers.js +110 -0
  466. package/esm2015/datepicker/sub-components/utils/utils.class.js +21 -0
  467. package/esm2015/datepicker/sub-components/utils/warn-once.js +12 -0
  468. package/esm2015/datepicker/themes/bs/bs-calendar-layout.component.js +25 -0
  469. package/esm2015/datepicker/themes/bs/bs-current-date-view.component.js +13 -0
  470. package/esm2015/datepicker/themes/bs/bs-custom-dates-view.component.js +44 -0
  471. package/esm2015/datepicker/themes/bs/bs-datepicker-container.component.js +152 -0
  472. package/esm2015/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +47 -0
  473. package/esm2015/datepicker/themes/bs/bs-datepicker-inline-container.component.js +36 -0
  474. package/esm2015/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +63 -0
  475. package/esm2015/datepicker/themes/bs/bs-daterangepicker-container.component.js +195 -0
  476. package/esm2015/datepicker/themes/bs/bs-daterangepicker-inline-container.component.js +36 -0
  477. package/esm2015/datepicker/themes/bs/bs-days-calendar-view.component.js +162 -0
  478. package/esm2015/datepicker/themes/bs/bs-months-calendar-view.component.js +60 -0
  479. package/esm2015/datepicker/themes/bs/bs-timepicker-view.component.js +34 -0
  480. package/esm2015/datepicker/themes/bs/bs-years-calendar-view.component.js +61 -0
  481. package/esm2015/datepicker/utils/bs-calendar-utils.js +43 -0
  482. package/esm2015/datepicker/utils/matrix-utils.js +14 -0
  483. package/esm2015/datepicker/yearpicker.component.js +90 -0
  484. package/esm2015/datepicker_v2/tz-dp-container/tz-dp-container.component.js +13 -13
  485. package/esm2015/multi-select-dropdown/multi-select-dropdown.component.js +10 -2
  486. package/fesm2015/mis-crystal-design-system-datepicker.js +13512 -0
  487. package/fesm2015/mis-crystal-design-system-datepicker.js.map +1 -0
  488. package/fesm2015/mis-crystal-design-system-datepicker_v2.js +12 -12
  489. package/fesm2015/mis-crystal-design-system-datepicker_v2.js.map +1 -1
  490. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js +9 -1
  491. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js.map +1 -1
  492. package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.metadata.json +1 -1
  493. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +1 -1
  494. package/package.json +1 -1
@@ -0,0 +1,56 @@
1
+ import { getClientRect, getOuterSizes, getStyleComputedProperty } from '../utils';
2
+ export function arrow(data) {
3
+ let targetOffsets = data.offsets.target;
4
+ // if arrowElement is a string, suppose it's a CSS selector
5
+ const arrowElement = data.instance.target.querySelector('.arrow');
6
+ // if arrowElement is not found, don't run the modifier
7
+ if (!arrowElement) {
8
+ return data;
9
+ }
10
+ const isVertical = ['left', 'right'].indexOf(data.placement.split(' ')[0]) !== -1;
11
+ const len = isVertical ? 'height' : 'width';
12
+ const sideCapitalized = isVertical ? 'Top' : 'Left';
13
+ const side = sideCapitalized.toLowerCase();
14
+ const altSide = isVertical ? 'left' : 'top';
15
+ const opSide = isVertical ? 'bottom' : 'right';
16
+ const arrowElementSize = getOuterSizes(arrowElement)[len];
17
+ const placementVariation = data.placement.split(' ')[1];
18
+ // top/left side
19
+ if (data.offsets.host[opSide] - arrowElementSize < targetOffsets[side]) {
20
+ targetOffsets[side] -=
21
+ targetOffsets[side] - (data.offsets.host[opSide] - arrowElementSize);
22
+ }
23
+ // bottom/right side
24
+ if (Number(data.offsets.host[side]) + Number(arrowElementSize) > targetOffsets[opSide]) {
25
+ targetOffsets[side] +=
26
+ Number(data.offsets.host[side]) + Number(arrowElementSize) - Number(targetOffsets[opSide]);
27
+ }
28
+ targetOffsets = getClientRect(targetOffsets);
29
+ // Compute the sideValue using the updated target offsets
30
+ // take target margin in account because we don't have this info available
31
+ const css = getStyleComputedProperty(data.instance.target);
32
+ const targetMarginSide = parseFloat(css[`margin${sideCapitalized}`]);
33
+ const targetBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);
34
+ // compute center of the target
35
+ let center;
36
+ if (!placementVariation) {
37
+ center = Number(data.offsets.host[side]) + Number(data.offsets.host[len] / 2 - arrowElementSize / 2);
38
+ }
39
+ else {
40
+ const targetBorderRadius = parseFloat(css.borderRadius);
41
+ const targetSideArrowOffset = Number(targetMarginSide + targetBorderSide + targetBorderRadius);
42
+ center = side === placementVariation ?
43
+ Number(data.offsets.host[side]) + targetSideArrowOffset :
44
+ Number(data.offsets.host[side]) + Number(data.offsets.host[len] - targetSideArrowOffset);
45
+ }
46
+ let sideValue = center - targetOffsets[side] - targetMarginSide - targetBorderSide;
47
+ // prevent arrowElement from being placed not contiguously to its target
48
+ sideValue = Math.max(Math.min(targetOffsets[len] - arrowElementSize, sideValue), 0);
49
+ data.offsets.arrow = {
50
+ [side]: Math.round(sideValue),
51
+ [altSide]: '' // make sure to unset any eventual altSide value from the DOM node
52
+ };
53
+ data.instance.arrow = arrowElement;
54
+ return data;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL3N1Yi1jb21wb25lbnRzL3Bvc2l0aW9uaW5nL21vZGlmaWVycy9hcnJvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdsRixNQUFNLFVBQVUsS0FBSyxDQUFDLElBQVU7SUFDOUIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDeEMsMkRBQTJEO0lBQzNELE1BQU0sWUFBWSxHQUF1QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEYsdURBQXVEO0lBQ3ZELElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDakIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRWxGLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDNUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwRCxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0MsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1QyxNQUFNLE1BQU0s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QUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFcEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUc7UUFDbkIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUM3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxrRUFBa0U7S0FDakYsQ0FBQztJQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztJQUVuQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRDbGllbnRSZWN0LCBnZXRPdXRlclNpemVzLCBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBEYXRhIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFycm93KGRhdGE6IERhdGEpIHtcbiAgbGV0IHRhcmdldE9mZnNldHMgPSBkYXRhLm9mZnNldHMudGFyZ2V0O1xuICAvLyBpZiBhcnJvd0VsZW1lbnQgaXMgYSBzdHJpbmcsIHN1cHBvc2UgaXQncyBhIENTUyBzZWxlY3RvclxuICBjb25zdCBhcnJvd0VsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGRhdGEuaW5zdGFuY2UudGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5hcnJvdycpO1xuXG4gIC8vIGlmIGFycm93RWxlbWVudCBpcyBub3QgZm91bmQsIGRvbid0IHJ1biB0aGUgbW9kaWZpZXJcbiAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGNvbnN0IGlzVmVydGljYWwgPSBbJ2xlZnQnLCAncmlnaHQnXS5pbmRleE9mKGRhdGEucGxhY2VtZW50LnNwbGl0KCcgJylbMF0pICE9PSAtMTtcblxuICBjb25zdCBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICBjb25zdCBzaWRlQ2FwaXRhbGl6ZWQgPSBpc1ZlcnRpY2FsID8gJ1RvcCcgOiAnTGVmdCc7XG4gIGNvbnN0IHNpZGUgPSBzaWRlQ2FwaXRhbGl6ZWQudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgYWx0U2lkZSA9IGlzVmVydGljYWwgPyAnbGVmdCcgOiAndG9wJztcbiAgY29uc3Qgb3BTaWRlID0gaXNWZXJ0aWNhbCA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgY29uc3QgYXJyb3dFbGVtZW50U2l6ZSA9IGdldE91dGVyU2l6ZXMoYXJyb3dFbGVtZW50KVtsZW5dO1xuICBjb25zdCBwbGFjZW1lbnRWYXJpYXRpb24gPSBkYXRhLnBsYWNlbWVudC5zcGxpdCgnICcpWzFdO1xuXG4gIC8vIHRvcC9sZWZ0IHNpZGVcbiAgaWYgKGRhdGEub2Zmc2V0cy5ob3N0W29wU2lkZV0gLSBhcnJvd0VsZW1lbnRTaXplIDwgKHRhcmdldE9mZnNldHMgYXMgYW55KVtzaWRlXSkge1xuICAgICh0YXJnZXRPZmZzZXRzIGFzIGFueSlbc2lkZV0gLT1cbiAgICAgICh0YXJnZXRPZmZzZXRzIGFzIGFueSlbc2lkZV0gLSAoZGF0YS5vZmZzZXRzLmhvc3Rbb3BTaWRlXSAtIGFycm93RWxlbWVudFNpemUpO1xuICB9XG4gIC8vIGJvdHRvbS9yaWdodCBzaWRlXG4gIGlmIChOdW1iZXIoKGRhdGEgYXMgYW55KS5vZmZzZXRzLmhvc3Rbc2lkZV0pICsgTnVtYmVyKGFycm93RWxlbWVudFNpemUpID4gKHRhcmdldE9mZnNldHMgYXMgYW55KVtvcFNpZGVdKSB7XG4gICAgKHRhcmdldE9mZnNldHMgYXMgYW55KVtzaWRlXSArPVxuICAgICAgTnVtYmVyKChkYXRhIGFzIGFueSkub2Zmc2V0cy5ob3N0W3NpZGVdKSArIE51bWJlcihhcnJvd0VsZW1lbnRTaXplKSAtIE51bWJlcigodGFyZ2V0T2Zmc2V0cyBhcyBhbnkpW29wU2lkZV0pO1xuICB9XG4gIHRhcmdldE9mZnNldHMgPSBnZXRDbGllbnRSZWN0KHRhcmdldE9mZnNldHMpO1xuXG4gIC8vIENvbXB1dGUgdGhlIHNpZGVWYWx1ZSB1c2luZyB0aGUgdXBkYXRlZCB0YXJnZXQgb2Zmc2V0c1xuICAvLyB0YWtlIHRhcmdldCBtYXJnaW4gaW4gYWNjb3VudCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdGhpcyBpbmZvIGF2YWlsYWJsZVxuICBjb25zdCBjc3MgPSBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZGF0YS5pbnN0YW5jZS50YXJnZXQpO1xuICBjb25zdCB0YXJnZXRNYXJnaW5TaWRlID0gcGFyc2VGbG9hdChjc3NbYG1hcmdpbiR7c2lkZUNhcGl0YWxpemVkfWBdKTtcbiAgY29uc3QgdGFyZ2V0Qm9yZGVyU2lkZSA9IHBhcnNlRmxvYXQoY3NzW2Bib3JkZXIke3NpZGVDYXBpdGFsaXplZH1XaWR0aGBdKTtcblxuICAvLyBjb21wdXRlIGNlbnRlciBvZiB0aGUgdGFyZ2V0XG4gIGxldCBjZW50ZXI6IG51bWJlcjtcbiAgaWYgKCFwbGFjZW1lbnRWYXJpYXRpb24pIHtcbiAgICBjZW50ZXIgPSBOdW1iZXIoKGRhdGEgYXMgYW55KS5vZmZzZXRzLmhvc3Rbc2lkZV0pICsgTnVtYmVyKGRhdGEub2Zmc2V0cy5ob3N0W2xlbl0gLyAyIC0gYXJyb3dFbGVtZW50U2l6ZSAvIDIpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHRhcmdldEJvcmRlclJhZGl1cyA9IHBhcnNlRmxvYXQoY3NzLmJvcmRlclJhZGl1cyk7XG4gICAgY29uc3QgdGFyZ2V0U2lkZUFycm93T2Zmc2V0ID0gTnVtYmVyKHRhcmdldE1hcmdpblNpZGUgKyB0YXJnZXRCb3JkZXJTaWRlICsgdGFyZ2V0Qm9yZGVyUmFkaXVzKTtcbiAgICBjZW50ZXIgPSBzaWRlID09PSBwbGFjZW1lbnRWYXJpYXRpb24gP1xuICAgICAgTnVtYmVyKChkYXRhIGFzIGFueSkub2Zmc2V0cy5ob3N0W3NpZGVdKSArIHRhcmdldFNpZGVBcnJvd09mZnNldCA6XG4gICAgICBOdW1iZXIoKGRhdGEgYXMgYW55KS5vZmZzZXRzLmhvc3Rbc2lkZV0pICsgTnVtYmVyKGRhdGEub2Zmc2V0cy5ob3N0W2xlbl0gLSB0YXJnZXRTaWRlQXJyb3dPZmZzZXQpO1xuICB9XG5cbiAgbGV0IHNpZGVWYWx1ZSA9XG4gICAgY2VudGVyIC0gKHRhcmdldE9mZnNldHMgYXMgYW55KVtzaWRlXSAtIHRhcmdldE1hcmdpblNpZGUgLSB0YXJnZXRCb3JkZXJTaWRlO1xuXG4gIC8vIHByZXZlbnQgYXJyb3dFbGVtZW50IGZyb20gYmVpbmcgcGxhY2VkIG5vdCBjb250aWd1b3VzbHkgdG8gaXRzIHRhcmdldFxuICBzaWRlVmFsdWUgPSBNYXRoLm1heChNYXRoLm1pbih0YXJnZXRPZmZzZXRzW2xlbl0gLSBhcnJvd0VsZW1lbnRTaXplLCBzaWRlVmFsdWUpLCAwKTtcblxuICBkYXRhLm9mZnNldHMuYXJyb3cgPSB7XG4gICAgW3NpZGVdOiBNYXRoLnJvdW5kKHNpZGVWYWx1ZSksXG4gICAgW2FsdFNpZGVdOiAnJyAvLyBtYWtlIHN1cmUgdG8gdW5zZXQgYW55IGV2ZW50dWFsIGFsdFNpZGUgdmFsdWUgZnJvbSB0aGUgRE9NIG5vZGVcbiAgfTtcblxuICBkYXRhLmluc3RhbmNlLmFycm93ID0gYXJyb3dFbGVtZW50O1xuXG4gIHJldHVybiBkYXRhO1xufVxuIl19
@@ -0,0 +1,60 @@
1
+ import { computeAutoPlacement, getBoundaries, getClientRect, getOppositeVariation, getTargetOffsets, isModifierEnabled } from '../utils';
2
+ export function flip(data) {
3
+ data.offsets.target = getClientRect(data.offsets.target);
4
+ if (!isModifierEnabled(data.options, 'flip')) {
5
+ data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), getTargetOffsets(data.instance.target, data.offsets.host, data.placement));
6
+ return data;
7
+ }
8
+ const boundaries = getBoundaries(data.instance.target, data.instance.host, 0, // padding
9
+ 'viewport', false // positionFixed
10
+ );
11
+ let placement = data.placement.split(' ')[0];
12
+ let variation = data.placement.split(' ')[1] || '';
13
+ const offsetsHost = data.offsets.host;
14
+ const target = data.instance.target;
15
+ const host = data.instance.host;
16
+ const adaptivePosition = computeAutoPlacement('auto', offsetsHost, target, host, data.options.allowedPositions);
17
+ const flipOrder = [placement, adaptivePosition];
18
+ /* tslint:disable-next-line: cyclomatic-complexity */
19
+ flipOrder.forEach((step, index) => {
20
+ if (placement !== step || flipOrder.length === index + 1) {
21
+ return data;
22
+ }
23
+ placement = data.placement.split(' ')[0];
24
+ // using floor because the host offsets may contain decimals we are not going to consider here
25
+ const overlapsRef = (placement === 'left' &&
26
+ Math.floor(data.offsets.target.right) > Math.floor(data.offsets.host.left)) ||
27
+ (placement === 'right' &&
28
+ Math.floor(data.offsets.target.left) < Math.floor(data.offsets.host.right)) ||
29
+ (placement === 'top' &&
30
+ Math.floor(data.offsets.target.bottom) > Math.floor(data.offsets.host.top)) ||
31
+ (placement === 'bottom' &&
32
+ Math.floor(data.offsets.target.top) < Math.floor(data.offsets.host.bottom));
33
+ const overflowsLeft = Math.floor(data.offsets.target.left) < Math.floor(boundaries.left);
34
+ const overflowsRight = Math.floor(data.offsets.target.right) > Math.floor(boundaries.right);
35
+ const overflowsTop = Math.floor(data.offsets.target.top) < Math.floor(boundaries.top);
36
+ const overflowsBottom = Math.floor(data.offsets.target.bottom) > Math.floor(boundaries.bottom);
37
+ const overflowsBoundaries = (placement === 'left' && overflowsLeft) ||
38
+ (placement === 'right' && overflowsRight) ||
39
+ (placement === 'top' && overflowsTop) ||
40
+ (placement === 'bottom' && overflowsBottom);
41
+ // flip the variation if required
42
+ const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
43
+ const flippedVariation = ((isVertical && variation === 'left' && overflowsLeft) ||
44
+ (isVertical && variation === 'right' && overflowsRight) ||
45
+ (!isVertical && variation === 'left' && overflowsTop) ||
46
+ (!isVertical && variation === 'right' && overflowsBottom));
47
+ if (overlapsRef || overflowsBoundaries || flippedVariation) {
48
+ if (overlapsRef || overflowsBoundaries) {
49
+ placement = flipOrder[index + 1];
50
+ }
51
+ if (flippedVariation) {
52
+ variation = getOppositeVariation(variation);
53
+ }
54
+ data.placement = placement + (variation ? ` ${variation}` : '');
55
+ data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), getTargetOffsets(data.instance.target, data.offsets.host, data.placement));
56
+ }
57
+ });
58
+ return data;
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXIvc3ViLWNvbXBvbmVudHMvcG9zaXRpb25pbmcvbW9kaWZpZXJzL2ZsaXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sVUFBVSxDQUFDO0FBSWxCLE1BQU0sVUFBVSxJQUFJLENBQUMsSUFBVTtJQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV6RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRTtRQUU1QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sbUNBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQ25CLGdCQUFnQixDQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQ2pCLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FDRixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUNsQixDQUFDLEVBQUUsVUFBVTtJQUNiLFVBQVUsRUFDVixLQUFLLENBQUMsZ0JBQWdCO0tBQ3ZCLENBQUM7SUFFRixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxJQUFJ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QUVoRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sbUNBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQ25CLGdCQUFnQixDQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQ2pCLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNvbXB1dGVBdXRvUGxhY2VtZW50LFxuICBnZXRCb3VuZGFyaWVzLFxuICBnZXRDbGllbnRSZWN0LFxuICBnZXRPcHBvc2l0ZVZhcmlhdGlvbixcbiAgZ2V0VGFyZ2V0T2Zmc2V0cyxcbiAgaXNNb2RpZmllckVuYWJsZWRcbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBEYXRhIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZsaXAoZGF0YTogRGF0YSk6IERhdGEge1xuICBkYXRhLm9mZnNldHMudGFyZ2V0ID0gZ2V0Q2xpZW50UmVjdChkYXRhLm9mZnNldHMudGFyZ2V0KTtcblxuICBpZiAoIWlzTW9kaWZpZXJFbmFibGVkKGRhdGEub3B0aW9ucywgJ2ZsaXAnKSkge1xuXG4gICAgZGF0YS5vZmZzZXRzLnRhcmdldCA9IHtcbiAgICAgIC4uLmRhdGEub2Zmc2V0cy50YXJnZXQsXG4gICAgICAuLi5nZXRUYXJnZXRPZmZzZXRzKFxuICAgICAgICBkYXRhLmluc3RhbmNlLnRhcmdldCxcbiAgICAgICAgZGF0YS5vZmZzZXRzLmhvc3QsXG4gICAgICAgIGRhdGEucGxhY2VtZW50XG4gICAgICApXG4gICAgfTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgY29uc3QgYm91bmRhcmllcyA9IGdldEJvdW5kYXJpZXMoXG4gICAgZGF0YS5pbnN0YW5jZS50YXJnZXQsXG4gICAgZGF0YS5pbnN0YW5jZS5ob3N0LFxuICAgIDAsIC8vIHBhZGRpbmdcbiAgICAndmlld3BvcnQnLFxuICAgIGZhbHNlIC8vIHBvc2l0aW9uRml4ZWRcbiAgKTtcblxuICBsZXQgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJyAnKVswXTtcbiAgbGV0IHZhcmlhdGlvbiA9IGRhdGEucGxhY2VtZW50LnNwbGl0KCcgJylbMV0gfHwgJyc7XG5cbiAgY29uc3Qgb2Zmc2V0c0hvc3QgPSBkYXRhLm9mZnNldHMuaG9zdDtcbiAgY29uc3QgdGFyZ2V0ID0gZGF0YS5pbnN0YW5jZS50YXJnZXQ7XG4gIGNvbnN0IGhvc3QgPSBkYXRhLmluc3RhbmNlLmhvc3Q7XG5cbiAgY29uc3QgYWRhcHRpdmVQb3NpdGlvbiA9IGNvbXB1dGVBdXRvUGxhY2VtZW50KCdhdXRvJywgb2Zmc2V0c0hvc3QsIHRhcmdldCwgaG9zdCwgZGF0YS5vcHRpb25zLmFsbG93ZWRQb3NpdGlvbnMpO1xuICBjb25zdCBmbGlwT3JkZXIgPSBbcGxhY2VtZW50LCBhZGFwdGl2ZVBvc2l0aW9uXTtcblxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGN5Y2xvbWF0aWMtY29tcGxleGl0eSAqL1xuICBmbGlwT3JkZXIuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICBpZiAocGxhY2VtZW50ICE9PSBzdGVwIHx8IGZsaXBPcmRlci5sZW5ndGggPT09IGluZGV4ICsgMSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJyAnKVswXTtcblxuICAgIC8vIHVzaW5nIGZsb29yIGJlY2F1c2UgdGhlIGhvc3Qgb2Zmc2V0cyBtYXkgY29udGFpbiBkZWNpbWFscyB3ZSBhcmUgbm90IGdvaW5nIHRvIGNvbnNpZGVyIGhlcmVcbiAgICBjb25zdCBvdmVybGFwc1JlZiA9XG4gICAgICAocGxhY2VtZW50ID09PSAnbGVmdCcgJiZcbiAgICAgICAgTWF0aC5mbG9vcihkYXRhLm9mZnNldHMudGFyZ2V0LnJpZ2h0KSA+IE1hdGguZmxvb3IoZGF0YS5vZmZzZXRzLmhvc3QubGVmdCkpIHx8XG4gICAgICAocGxhY2VtZW50ID09PSAncmlnaHQnICYmXG4gICAgICAgIE1hdGguZmxvb3IoZGF0YS5vZmZzZXRzLnRhcmdldC5sZWZ0KSA8IE1hdGguZmxvb3IoZGF0YS5vZmZzZXRzLmhvc3QucmlnaHQpKSB8fFxuICAgICAgKHBsYWNlbWVudCA9PT0gJ3RvcCcgJiZcbiAgICAgICAgTWF0aC5mbG9vcihkYXRhLm9mZnNldHMudGFyZ2V0LmJvdHRvbSkgPiBNYXRoLmZsb29yKGRhdGEub2Zmc2V0cy5ob3N0LnRvcCkpIHx8XG4gICAgICAocGxhY2VtZW50ID09PSAnYm90dG9tJyAmJlxuICAgICAgICBNYXRoLmZsb29yKGRhdGEub2Zmc2V0cy50YXJnZXQudG9wKSA8IE1hdGguZmxvb3IoZGF0YS5vZmZzZXRzLmhvc3QuYm90dG9tKSk7XG5cbiAgICBjb25zdCBvdmVyZmxvd3NMZWZ0ID0gTWF0aC5mbG9vcihkYXRhLm9mZnNldHMudGFyZ2V0LmxlZnQpIDwgTWF0aC5mbG9vcihib3VuZGFyaWVzLmxlZnQpO1xuICAgIGNvbnN0IG92ZXJmbG93c1JpZ2h0ID0gTWF0aC5mbG9vcihkYXRhLm9mZnNldHMudGFyZ2V0LnJpZ2h0KSA+IE1hdGguZmxvb3IoYm91bmRhcmllcy5yaWdodCk7XG4gICAgY29uc3Qgb3ZlcmZsb3dzVG9wID0gTWF0aC5mbG9vcihkYXRhLm9mZnNldHMudGFyZ2V0LnRvcCkgPCBNYXRoLmZsb29yKGJvdW5kYXJpZXMudG9wKTtcbiAgICBjb25zdCBvdmVyZmxvd3NCb3R0b20gPSBNYXRoLmZsb29yKGRhdGEub2Zmc2V0cy50YXJnZXQuYm90dG9tKSA+IE1hdGguZmxvb3IoYm91bmRhcmllcy5ib3R0b20pO1xuXG4gICAgY29uc3Qgb3ZlcmZsb3dzQm91bmRhcmllcyA9XG4gICAgICAocGxhY2VtZW50ID09PSAnbGVmdCcgJiYgb3ZlcmZsb3dzTGVmdCkgfHxcbiAgICAgIChwbGFjZW1lbnQgPT09ICdyaWdodCcgJiYgb3ZlcmZsb3dzUmlnaHQpIHx8XG4gICAgICAocGxhY2VtZW50ID09PSAndG9wJyAmJiBvdmVyZmxvd3NUb3ApIHx8XG4gICAgICAocGxhY2VtZW50ID09PSAnYm90dG9tJyAmJiBvdmVyZmxvd3NCb3R0b20pO1xuXG4gICAgLy8gZmxpcCB0aGUgdmFyaWF0aW9uIGlmIHJlcXVpcmVkXG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTE7XG4gICAgY29uc3QgZmxpcHBlZFZhcmlhdGlvbiA9XG4gICAgICAoKGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnbGVmdCcgJiYgb3ZlcmZsb3dzTGVmdCkgfHxcbiAgICAgICAgKGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAncmlnaHQnICYmIG92ZXJmbG93c1JpZ2h0KSB8fFxuICAgICAgICAoIWlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnbGVmdCcgJiYgb3ZlcmZsb3dzVG9wKSB8fFxuICAgICAgICAoIWlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAncmlnaHQnICYmIG92ZXJmbG93c0JvdHRvbSkpO1xuXG4gICAgaWYgKG92ZXJsYXBzUmVmIHx8IG92ZXJmbG93c0JvdW5kYXJpZXMgfHwgZmxpcHBlZFZhcmlhdGlvbikge1xuICAgICAgaWYgKG92ZXJsYXBzUmVmIHx8IG92ZXJmbG93c0JvdW5kYXJpZXMpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gZmxpcE9yZGVyW2luZGV4ICsgMV07XG4gICAgICB9XG5cbiAgICAgIGlmIChmbGlwcGVkVmFyaWF0aW9uKSB7XG4gICAgICAgIHZhcmlhdGlvbiA9IGdldE9wcG9zaXRlVmFyaWF0aW9uKHZhcmlhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGRhdGEucGxhY2VtZW50ID0gcGxhY2VtZW50ICsgKHZhcmlhdGlvbiA/IGAgJHt2YXJpYXRpb259YCA6ICcnKTtcblxuICAgICAgZGF0YS5vZmZzZXRzLnRhcmdldCA9IHtcbiAgICAgICAgLi4uZGF0YS5vZmZzZXRzLnRhcmdldCxcbiAgICAgICAgLi4uZ2V0VGFyZ2V0T2Zmc2V0cyhcbiAgICAgICAgICBkYXRhLmluc3RhbmNlLnRhcmdldCxcbiAgICAgICAgICBkYXRhLm9mZnNldHMuaG9zdCxcbiAgICAgICAgICBkYXRhLnBsYWNlbWVudFxuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export { arrow } from './arrow';
2
+ export { flip } from './flip';
3
+ export { initData } from './initData';
4
+ export { preventOverflow } from './preventOverflow';
5
+ export { shift } from './shift';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL3N1Yi1jb21wb25lbnRzL3Bvc2l0aW9uaW5nL21vZGlmaWVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGFycm93IH0gZnJvbSAnLi9hcnJvdyc7XG5leHBvcnQgeyBmbGlwIH0gZnJvbSAnLi9mbGlwJztcbmV4cG9ydCB7IGluaXREYXRhIH0gZnJvbSAnLi9pbml0RGF0YSc7XG5leHBvcnQgeyBwcmV2ZW50T3ZlcmZsb3cgfSBmcm9tICcuL3ByZXZlbnRPdmVyZmxvdyc7XG5leHBvcnQgeyBzaGlmdCB9IGZyb20gJy4vc2hpZnQnO1xuIl19
@@ -0,0 +1,42 @@
1
+ import { computeAutoPlacement, getReferenceOffsets, getTargetOffsets } from '../utils';
2
+ export function initData(targetElement, hostElement, position, options) {
3
+ const hostElPosition = getReferenceOffsets(targetElement, hostElement);
4
+ if (!position.match(/^(auto)*\s*(left|right|top|bottom)*$/)
5
+ && !position.match(/^(left|right|top|bottom)*(?: (left|right|top|bottom))?\s*(start|end)*$/)) {
6
+ /* tslint:disable-next-line: no-parameter-reassignment */
7
+ position = 'auto';
8
+ }
9
+ const placementAuto = !!position.match(/auto/g);
10
+ // support old placements 'auto left|right|top|bottom'
11
+ let placement = position.match(/auto\s(left|right|top|bottom)/)
12
+ ? position.split(' ')[1] || 'auto'
13
+ : position;
14
+ // Normalize placements that have identical main placement and variation ("right right" => "right").
15
+ const matches = placement.match(/^(left|right|top|bottom)* ?(?!\1)(left|right|top|bottom)?/);
16
+ if (matches) {
17
+ placement = matches[1] + (matches[2] ? ` ${matches[2]}` : '');
18
+ }
19
+ // "left right", "top bottom" etc. placements also considered incorrect.
20
+ if (['left right', 'right left', 'top bottom', 'bottom top'].indexOf(placement) !== -1) {
21
+ placement = 'auto';
22
+ }
23
+ const targetOffset = getTargetOffsets(targetElement, hostElPosition, placement);
24
+ placement = computeAutoPlacement(placement, hostElPosition, targetElement, hostElement, options ? options.allowedPositions : undefined);
25
+ return {
26
+ options,
27
+ instance: {
28
+ target: targetElement,
29
+ host: hostElement,
30
+ arrow: null
31
+ },
32
+ offsets: {
33
+ target: targetOffset,
34
+ host: hostElPosition,
35
+ arrow: null
36
+ },
37
+ positionFixed: false,
38
+ placement,
39
+ placementAuto
40
+ };
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL3N1Yi1jb21wb25lbnRzL3Bvc2l0aW9uaW5nL21vZGlmaWVycy9pbml0RGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDakIsTUFBTSxVQUFVLENBQUM7QUFJbEIsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsYUFBMEIsRUFBRSxXQUF3QixFQUFFLFFBQWdCLEVBQUUsT0FBZ0I7SUFHeEYsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRXZFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDO1dBQ3RELENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxFQUFFO1FBQzVGLHlEQUF5RDtRQUN6RCxRQUFRLEdBQUcsTUFBTSxDQUFDO0tBQ25CO0lBRUgsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFaEQsc0RBQXNEO0lBQ3RELElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUM7UUFDN0QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTTtRQUNsQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBRWIsb0dBQW9HO0lBQ3BHLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUM3RixJQUFJLE9BQU8sRUFBRTtRQUNYLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQy9EO0lBRUQsd0VBQXdFO0lBQ3hFLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDdEYsU0FBUyxHQUFHLE1BQU0sQ0FBQztLQUNwQjtJQUVELE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFaEYsU0FBUyxHQUFHLG9CQUFvQixDQUM5QixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDL0MsQ0FBQztJQUVGLE9BQU87UUFDTCxPQUFPO1FBQ1AsUUFBUSxFQUFFO1lBQ1IsTUFBTSxFQUFFLGFBQWE7WUFDckIsSUFBSSxFQUFFLFdBQVc7WUFDakIsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELE9BQU8sRUFBRTtZQUNQLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLElBQUksRUFBRSxjQUFjO1lBQ3BCLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxhQUFhLEVBQUUsS0FBSztRQUNwQixTQUFTO1FBQ1QsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29tcHV0ZUF1dG9QbGFjZW1lbnQsXG4gIGdldFJlZmVyZW5jZU9mZnNldHMsXG4gIGdldFRhcmdldE9mZnNldHNcbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBEYXRhLCBPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXREYXRhKFxuICB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCwgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwb3NpdGlvbjogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zXG4pOiBEYXRhIHtcblxuICBjb25zdCBob3N0RWxQb3NpdGlvbiA9IGdldFJlZmVyZW5jZU9mZnNldHModGFyZ2V0RWxlbWVudCwgaG9zdEVsZW1lbnQpO1xuXG4gIGlmICghcG9zaXRpb24ubWF0Y2goL14oYXV0bykqXFxzKihsZWZ0fHJpZ2h0fHRvcHxib3R0b20pKiQvKVxuICAgICYmICFwb3NpdGlvbi5tYXRjaCgvXihsZWZ0fHJpZ2h0fHRvcHxib3R0b20pKig/OiAobGVmdHxyaWdodHx0b3B8Ym90dG9tKSk/XFxzKihzdGFydHxlbmQpKiQvKSkge1xuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1wYXJhbWV0ZXItcmVhc3NpZ25tZW50ICovXG4gICAgICBwb3NpdGlvbiA9ICdhdXRvJztcbiAgICB9XG5cbiAgY29uc3QgcGxhY2VtZW50QXV0byA9ICEhcG9zaXRpb24ubWF0Y2goL2F1dG8vZyk7XG5cbiAgLy8gc3VwcG9ydCBvbGQgcGxhY2VtZW50cyAnYXV0byBsZWZ0fHJpZ2h0fHRvcHxib3R0b20nXG4gIGxldCBwbGFjZW1lbnQgPSBwb3NpdGlvbi5tYXRjaCgvYXV0b1xccyhsZWZ0fHJpZ2h0fHRvcHxib3R0b20pLylcbiAgICA/IHBvc2l0aW9uLnNwbGl0KCcgJylbMV0gfHwgJ2F1dG8nXG4gICAgOiBwb3NpdGlvbjtcblxuICAvLyBOb3JtYWxpemUgcGxhY2VtZW50cyB0aGF0IGhhdmUgaWRlbnRpY2FsIG1haW4gcGxhY2VtZW50IGFuZCB2YXJpYXRpb24gKFwicmlnaHQgcmlnaHRcIiA9PiBcInJpZ2h0XCIpLlxuICBjb25zdCBtYXRjaGVzID0gcGxhY2VtZW50Lm1hdGNoKC9eKGxlZnR8cmlnaHR8dG9wfGJvdHRvbSkqID8oPyFcXDEpKGxlZnR8cmlnaHR8dG9wfGJvdHRvbSk/Lyk7XG4gIGlmIChtYXRjaGVzKSB7XG4gICAgcGxhY2VtZW50ID0gbWF0Y2hlc1sxXSArIChtYXRjaGVzWzJdID8gYCAke21hdGNoZXNbMl19YCA6ICcnKTtcbiAgfVxuXG4gIC8vIFwibGVmdCByaWdodFwiLCBcInRvcCBib3R0b21cIiBldGMuIHBsYWNlbWVudHMgYWxzbyBjb25zaWRlcmVkIGluY29ycmVjdC5cbiAgaWYgKFsnbGVmdCByaWdodCcsICdyaWdodCBsZWZ0JywgJ3RvcCBib3R0b20nLCAnYm90dG9tIHRvcCddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTEpIHtcbiAgICBwbGFjZW1lbnQgPSAnYXV0byc7XG4gIH1cblxuICBjb25zdCB0YXJnZXRPZmZzZXQgPSBnZXRUYXJnZXRPZmZzZXRzKHRhcmdldEVsZW1lbnQsIGhvc3RFbFBvc2l0aW9uLCBwbGFjZW1lbnQpO1xuXG4gIHBsYWNlbWVudCA9IGNvbXB1dGVBdXRvUGxhY2VtZW50KFxuICAgIHBsYWNlbWVudCxcbiAgICBob3N0RWxQb3NpdGlvbixcbiAgICB0YXJnZXRFbGVtZW50LFxuICAgIGhvc3RFbGVtZW50LFxuICAgIG9wdGlvbnMgPyBvcHRpb25zLmFsbG93ZWRQb3NpdGlvbnMgOiB1bmRlZmluZWRcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgaW5zdGFuY2U6IHtcbiAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIGhvc3Q6IGhvc3RFbGVtZW50LFxuICAgICAgYXJyb3c6IG51bGxcbiAgICB9LFxuICAgIG9mZnNldHM6IHtcbiAgICAgIHRhcmdldDogdGFyZ2V0T2Zmc2V0LFxuICAgICAgaG9zdDogaG9zdEVsUG9zaXRpb24sXG4gICAgICBhcnJvdzogbnVsbFxuICAgIH0sXG4gICAgcG9zaXRpb25GaXhlZDogZmFsc2UsXG4gICAgcGxhY2VtZW50LFxuICAgIHBsYWNlbWVudEF1dG9cbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,56 @@
1
+ import { getBoundaries, isModifierEnabled } from '../utils';
2
+ export function preventOverflow(data) {
3
+ if (!isModifierEnabled(data.options, 'preventOverflow')) {
4
+ return data;
5
+ }
6
+ // NOTE: DOM access here
7
+ // resets the targetOffsets's position so that the document size can be calculated excluding
8
+ // the size of the targetOffsets element itself
9
+ const transformProp = 'transform';
10
+ const targetStyles = data.instance.target.style; // assignment to help minification
11
+ const { top, left, [transformProp]: transform } = targetStyles;
12
+ targetStyles.top = '';
13
+ targetStyles.left = '';
14
+ targetStyles[transformProp] = '';
15
+ const boundaries = getBoundaries(data.instance.target, data.instance.host, 0, // padding
16
+ data.options.modifiers.preventOverflow.boundariesElement || 'scrollParent', false // positionFixed
17
+ );
18
+ // NOTE: DOM access here
19
+ // restores the original style properties after the offsets have been computed
20
+ targetStyles.top = top;
21
+ targetStyles.left = left;
22
+ targetStyles[transformProp] = transform;
23
+ const order = ['left', 'right', 'top', 'bottom'];
24
+ const check = {
25
+ primary(placement) {
26
+ let value = data.offsets.target[placement];
27
+ if (data.offsets.target[placement] < boundaries[placement] &&
28
+ !false // options.escapeWithReference
29
+ ) {
30
+ value = Math.max(data.offsets.target[placement], boundaries[placement]);
31
+ }
32
+ return { [placement]: value };
33
+ },
34
+ secondary(placement) {
35
+ const mainSide = placement === 'right' ? 'left' : 'top';
36
+ let value = data.offsets.target[mainSide];
37
+ if (data.offsets.target[placement] > boundaries[placement] &&
38
+ !false // escapeWithReference
39
+ ) {
40
+ value = Math.min(data.offsets.target[mainSide], boundaries[placement] -
41
+ (placement === 'right' ? data.offsets.target.width : data.offsets.target.height));
42
+ }
43
+ return { [mainSide]: value };
44
+ }
45
+ };
46
+ let side;
47
+ order.forEach(placement => {
48
+ side = ['left', 'top']
49
+ .indexOf(placement) !== -1
50
+ ? 'primary'
51
+ : 'secondary';
52
+ data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), check[side](placement));
53
+ });
54
+ return data;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudE92ZXJmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZGF0ZXBpY2tlci9zdWItY29tcG9uZW50cy9wb3NpdGlvbmluZy9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHNUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFVO0lBRXhDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLEVBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELHdCQUF3QjtJQUN4Qiw0RkFBNEY7SUFDNUYsK0NBQStDO0lBQy9DLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQ0FBa0M7SUFDbkYsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxZQUFZLENBQUM7SUFDL0QsWUFBWSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdEIsWUFBWSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdkIsWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVqQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFDbEIsQ0FBQyxFQUFFLFVBQVU7SUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLElBQUksY0FBYyxFQUMxRSxLQUFLLENBQUMsZ0JBQWdCO0tBQ3ZCLENBQUM7SUFFRix3QkFBd0I7SUFDeEIsOEVBQThFO0lBQzlFLFlBQVksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxTQUFTLENBQUM7SUFFeEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVqRCxNQUFNLEtBQUssR0FBRztRQUNaLE9BQU8sQ0FBQyxTQUFpQjtZQUN2QixJQUFJLEtBQUssR0FBSSxJQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxJQUNHLElBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQy9ELENBQUMsS0FBSyxDQUFDLDhCQUE4QjtjQUNyQztnQkFDQSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBRSxJQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUNsRjtZQUVELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxTQUFTLENBQUMsU0FBaUI7WUFDekIsTUFBTSxRQUFRLEdBQUcsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDeEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsSUFDRyxJQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUMvRCxDQUFDLEtBQUssQ0FBQyxzQkFBc0I7Y0FDN0I7Z0JBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQzdCLFVBQVUsQ0FBQyxTQUFTLENBQUM7b0JBQ3JCLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FDakYsQ0FBQzthQUNIO1lBRUQsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQztLQUNGLENBQUM7SUFFRixJQUFJLElBQVksQ0FBQztJQUVqQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ3hCLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7YUFDbkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsU0FBUztZQUNYLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFFaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLG1DQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUNsQixLQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQ25DLENBQUM7SUFFSixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEJvdW5kYXJpZXMsIGlzTW9kaWZpZXJFbmFibGVkIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRGF0YSB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmV2ZW50T3ZlcmZsb3coZGF0YTogRGF0YSkge1xuXG4gIGlmICghaXNNb2RpZmllckVuYWJsZWQoZGF0YS5vcHRpb25zLCAncHJldmVudE92ZXJmbG93JykpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8vIE5PVEU6IERPTSBhY2Nlc3MgaGVyZVxuICAvLyByZXNldHMgdGhlIHRhcmdldE9mZnNldHMncyBwb3NpdGlvbiBzbyB0aGF0IHRoZSBkb2N1bWVudCBzaXplIGNhbiBiZSBjYWxjdWxhdGVkIGV4Y2x1ZGluZ1xuICAvLyB0aGUgc2l6ZSBvZiB0aGUgdGFyZ2V0T2Zmc2V0cyBlbGVtZW50IGl0c2VsZlxuICBjb25zdCB0cmFuc2Zvcm1Qcm9wID0gJ3RyYW5zZm9ybSc7XG4gIGNvbnN0IHRhcmdldFN0eWxlcyA9IGRhdGEuaW5zdGFuY2UudGFyZ2V0LnN0eWxlOyAvLyBhc3NpZ25tZW50IHRvIGhlbHAgbWluaWZpY2F0aW9uXG4gIGNvbnN0IHsgdG9wLCBsZWZ0LCBbdHJhbnNmb3JtUHJvcF06IHRyYW5zZm9ybSB9ID0gdGFyZ2V0U3R5bGVzO1xuICB0YXJnZXRTdHlsZXMudG9wID0gJyc7XG4gIHRhcmdldFN0eWxlcy5sZWZ0ID0gJyc7XG4gIHRhcmdldFN0eWxlc1t0cmFuc2Zvcm1Qcm9wXSA9ICcnO1xuXG4gIGNvbnN0IGJvdW5kYXJpZXMgPSBnZXRCb3VuZGFyaWVzKFxuICAgIGRhdGEuaW5zdGFuY2UudGFyZ2V0LFxuICAgIGRhdGEuaW5zdGFuY2UuaG9zdCxcbiAgICAwLCAvLyBwYWRkaW5nXG4gICAgZGF0YS5vcHRpb25zLm1vZGlmaWVycy5wcmV2ZW50T3ZlcmZsb3cuYm91bmRhcmllc0VsZW1lbnQgfHwgJ3Njcm9sbFBhcmVudCcsXG4gICAgZmFsc2UgLy8gcG9zaXRpb25GaXhlZFxuICApO1xuXG4gIC8vIE5PVEU6IERPTSBhY2Nlc3MgaGVyZVxuICAvLyByZXN0b3JlcyB0aGUgb3JpZ2luYWwgc3R5bGUgcHJvcGVydGllcyBhZnRlciB0aGUgb2Zmc2V0cyBoYXZlIGJlZW4gY29tcHV0ZWRcbiAgdGFyZ2V0U3R5bGVzLnRvcCA9IHRvcDtcbiAgdGFyZ2V0U3R5bGVzLmxlZnQgPSBsZWZ0O1xuICB0YXJnZXRTdHlsZXNbdHJhbnNmb3JtUHJvcF0gPSB0cmFuc2Zvcm07XG5cbiAgY29uc3Qgb3JkZXIgPSBbJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbSddO1xuXG4gIGNvbnN0IGNoZWNrID0ge1xuICAgIHByaW1hcnkocGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICAgIGxldCB2YWx1ZSA9IChkYXRhIGFzIGFueSkub2Zmc2V0cy50YXJnZXRbcGxhY2VtZW50XTtcbiAgICAgIGlmIChcbiAgICAgICAgKGRhdGEgYXMgYW55KS5vZmZzZXRzLnRhcmdldFtwbGFjZW1lbnRdIDwgYm91bmRhcmllc1twbGFjZW1lbnRdICYmXG4gICAgICAgICFmYWxzZSAvLyBvcHRpb25zLmVzY2FwZVdpdGhSZWZlcmVuY2VcbiAgICAgICkge1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWF4KChkYXRhIGFzIGFueSkub2Zmc2V0cy50YXJnZXRbcGxhY2VtZW50XSwgYm91bmRhcmllc1twbGFjZW1lbnRdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgW3BsYWNlbWVudF06IHZhbHVlIH07XG4gICAgfSxcbiAgICBzZWNvbmRhcnkocGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IG1haW5TaWRlID0gcGxhY2VtZW50ID09PSAncmlnaHQnID8gJ2xlZnQnIDogJ3RvcCc7XG4gICAgICBsZXQgdmFsdWUgPSBkYXRhLm9mZnNldHMudGFyZ2V0W21haW5TaWRlXTtcbiAgICAgIGlmIChcbiAgICAgICAgKGRhdGEgYXMgYW55KS5vZmZzZXRzLnRhcmdldFtwbGFjZW1lbnRdID4gYm91bmRhcmllc1twbGFjZW1lbnRdICYmXG4gICAgICAgICFmYWxzZSAvLyBlc2NhcGVXaXRoUmVmZXJlbmNlXG4gICAgICApIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbihcbiAgICAgICAgICBkYXRhLm9mZnNldHMudGFyZ2V0W21haW5TaWRlXSxcbiAgICAgICAgICBib3VuZGFyaWVzW3BsYWNlbWVudF0gLVxuICAgICAgICAgIChwbGFjZW1lbnQgPT09ICdyaWdodCcgPyBkYXRhLm9mZnNldHMudGFyZ2V0LndpZHRoIDogZGF0YS5vZmZzZXRzLnRhcmdldC5oZWlnaHQpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IFttYWluU2lkZV06IHZhbHVlIH07XG4gICAgfVxuICB9O1xuXG4gIGxldCBzaWRlOiBzdHJpbmc7XG5cbiAgb3JkZXIuZm9yRWFjaChwbGFjZW1lbnQgPT4ge1xuICAgIHNpZGUgPSBbJ2xlZnQnLCAndG9wJ11cbiAgICAgIC5pbmRleE9mKHBsYWNlbWVudCkgIT09IC0xXG4gICAgICA/ICdwcmltYXJ5J1xuICAgICAgOiAnc2Vjb25kYXJ5JztcblxuICAgIGRhdGEub2Zmc2V0cy50YXJnZXQgPSB7XG4gICAgICAuLi5kYXRhLm9mZnNldHMudGFyZ2V0LFxuICAgICAgLi4uKGNoZWNrIGFzIGFueSlbc2lkZV0ocGxhY2VtZW50KVxuICAgIH07XG5cbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ export function shift(data) {
2
+ const placement = data.placement;
3
+ const basePlacement = placement.split(' ')[0];
4
+ const shiftVariation = placement.split(' ')[1];
5
+ if (shiftVariation) {
6
+ const { host, target } = data.offsets;
7
+ const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
8
+ const side = isVertical ? 'left' : 'top';
9
+ const measurement = isVertical ? 'width' : 'height';
10
+ const shiftOffsets = {
11
+ start: { [side]: host[side] },
12
+ end: {
13
+ [side]: host[side] + host[measurement] - target[measurement]
14
+ }
15
+ };
16
+ data.offsets.target = Object.assign(Object.assign({}, target), {
17
+ [side]: (side === shiftVariation ? shiftOffsets.start[side] : shiftOffsets.end[side])
18
+ });
19
+ }
20
+ return data;
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpZnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL3N1Yi1jb21wb25lbnRzL3Bvc2l0aW9uaW5nL21vZGlmaWVycy9zaGlmdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsS0FBSyxDQUFDLElBQVU7SUFDOUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFL0MsSUFBSSxjQUFjLEVBQUU7UUFDbEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFFcEQsTUFBTSxZQUFZLEdBQUc7WUFDbkIsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsR0FBRyxFQUFFO2dCQUNILENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO2FBQzdEO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxtQ0FDZCxNQUFNLEdBQUs7WUFDWixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUUsWUFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFFLFlBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hHLENBQ0YsQ0FBQztLQUNIO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YSB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGlmdChkYXRhOiBEYXRhKTogRGF0YSB7XG4gIGNvbnN0IHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50O1xuICBjb25zdCBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50LnNwbGl0KCcgJylbMF07XG4gIGNvbnN0IHNoaWZ0VmFyaWF0aW9uID0gcGxhY2VtZW50LnNwbGl0KCcgJylbMV07XG5cbiAgaWYgKHNoaWZ0VmFyaWF0aW9uKSB7XG4gICAgY29uc3QgeyBob3N0LCB0YXJnZXQgfSA9IGRhdGEub2Zmc2V0cztcbiAgICBjb25zdCBpc1ZlcnRpY2FsID0gWydib3R0b20nLCAndG9wJ10uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG4gICAgY29uc3Qgc2lkZSA9IGlzVmVydGljYWwgPyAnbGVmdCcgOiAndG9wJztcbiAgICBjb25zdCBtZWFzdXJlbWVudCA9IGlzVmVydGljYWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG5cbiAgICBjb25zdCBzaGlmdE9mZnNldHMgPSB7XG4gICAgICBzdGFydDogeyBbc2lkZV06IGhvc3Rbc2lkZV0gfSxcbiAgICAgIGVuZDoge1xuICAgICAgICBbc2lkZV06IGhvc3Rbc2lkZV0gKyBob3N0W21lYXN1cmVtZW50XSAtIHRhcmdldFttZWFzdXJlbWVudF1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZGF0YS5vZmZzZXRzLnRhcmdldCA9IHtcbiAgICAgIC4uLnRhcmdldCwgLi4ue1xuICAgICAgICBbc2lkZV06IChzaWRlID09PSBzaGlmdFZhcmlhdGlvbiA/IChzaGlmdE9mZnNldHMgYXMgYW55KS5zdGFydFtzaWRlXSA6IChzaGlmdE9mZnNldHMgYXMgYW55KS5lbmRbc2lkZV0pXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuIl19
@@ -0,0 +1,30 @@
1
+ import { getOffsets, getReferenceOffsets, updateContainerClass, setStyles } from './utils';
2
+ import { arrow, flip, preventOverflow, shift, initData } from './modifiers';
3
+ export class Positioning {
4
+ position(hostElement, targetElement, round = true) {
5
+ return this.offset(hostElement, targetElement, false);
6
+ }
7
+ offset(hostElement, targetElement, round = true) {
8
+ return getReferenceOffsets(targetElement, hostElement);
9
+ }
10
+ positionElements(hostElement, targetElement, position, appendToBody, options) {
11
+ const chainOfModifiers = [flip, shift, preventOverflow, arrow];
12
+ return chainOfModifiers.reduce((modifiedData, modifier) => modifier(modifiedData), initData(targetElement, hostElement, position, options));
13
+ }
14
+ }
15
+ const positionService = new Positioning();
16
+ export function positionElements(hostElement, targetElement, placement, appendToBody, options, renderer) {
17
+ const data = positionService.positionElements(hostElement, targetElement, placement, appendToBody, options);
18
+ const offsets = getOffsets(data);
19
+ setStyles(targetElement, {
20
+ 'will-change': 'transform',
21
+ top: '0px',
22
+ left: '0px',
23
+ transform: `translate3d(${offsets.left}px, ${offsets.top}px, 0px)`
24
+ }, renderer);
25
+ if (data.instance.arrow) {
26
+ setStyles(data.instance.arrow, data.offsets.arrow, renderer);
27
+ }
28
+ updateContainerClass(data, renderer);
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcG9zaXRpb25pbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL3N1Yi1jb21wb25lbnRzL3Bvc2l0aW9uaW5nL25nLXBvc2l0aW9uaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSTVFLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFFBQVEsQ0FBQyxXQUF3QixFQUFFLGFBQTBCLEVBQUUsS0FBSyxHQUFHLElBQUk7UUFDekUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUF3QixFQUFFLGFBQTBCLEVBQUUsS0FBSyxHQUFHLElBQUk7UUFDdkUsT0FBTyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGdCQUFnQixDQUNkLFdBQXdCLEVBQ3hCLGFBQTBCLEVBQzFCLFFBQWdCLEVBQ2hCLFlBQXNCLEVBQ3RCLE9BQWlCO1FBRWpCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvRCxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQ2xELFFBQVEsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDeEQsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sZUFBZSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFMUMsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixXQUF3QixFQUN4QixhQUEwQixFQUMxQixTQUFpQixFQUNqQixZQUFzQixFQUN0QixPQUFpQixFQUNqQixRQUFvQjtJQUdwQixNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsZ0JBQWdCLENBQzNDLFdBQVcsRUFDWCxhQUFhLEVBQ2IsU0FBUyxFQUNULFlBQVksRUFDWixPQUFPLENBQ1IsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqQyxTQUFTLENBQUMsYUFBYSxFQUFFO1FBQ3ZCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLEdBQUcsRUFBRSxLQUFLO1FBQ1YsSUFBSSxFQUFFLEtBQUs7UUFDWCxTQUFTLEVBQUUsZUFBZSxPQUFPLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxHQUFHLFVBQVU7S0FDbkUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUViLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7UUFDdkIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzlEO0lBRUQsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgZ2V0T2Zmc2V0cywgZ2V0UmVmZXJlbmNlT2Zmc2V0cywgdXBkYXRlQ29udGFpbmVyQ2xhc3MsIHNldFN0eWxlcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgeyBhcnJvdywgZmxpcCwgcHJldmVudE92ZXJmbG93LCBzaGlmdCwgaW5pdERhdGEgfSBmcm9tICcuL21vZGlmaWVycyc7XG5pbXBvcnQgeyBEYXRhLCBPZmZzZXRzLCBPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbmluZyB7XG4gIHBvc2l0aW9uKGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudCwgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsIHJvdW5kID0gdHJ1ZSk6IE9mZnNldHMge1xuICAgIHJldHVybiB0aGlzLm9mZnNldChob3N0RWxlbWVudCwgdGFyZ2V0RWxlbWVudCwgZmFsc2UpO1xuICB9XG5cbiAgb2Zmc2V0KGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudCwgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsIHJvdW5kID0gdHJ1ZSk6IE9mZnNldHMge1xuICAgIHJldHVybiBnZXRSZWZlcmVuY2VPZmZzZXRzKHRhcmdldEVsZW1lbnQsIGhvc3RFbGVtZW50KTtcbiAgfVxuXG4gIHBvc2l0aW9uRWxlbWVudHMoXG4gICAgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHBvc2l0aW9uOiBzdHJpbmcsXG4gICAgYXBwZW5kVG9Cb2R5PzogYm9vbGVhbixcbiAgICBvcHRpb25zPzogT3B0aW9uc1xuICApOiBEYXRhIHtcbiAgICBjb25zdCBjaGFpbk9mTW9kaWZpZXJzID0gW2ZsaXAsIHNoaWZ0LCBwcmV2ZW50T3ZlcmZsb3csIGFycm93XTtcblxuICAgIHJldHVybiBjaGFpbk9mTW9kaWZpZXJzLnJlZHVjZShcbiAgICAgIChtb2RpZmllZERhdGEsIG1vZGlmaWVyKSA9PiBtb2RpZmllcihtb2RpZmllZERhdGEpLFxuICAgICAgaW5pdERhdGEodGFyZ2V0RWxlbWVudCwgaG9zdEVsZW1lbnQsIHBvc2l0aW9uLCBvcHRpb25zKVxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgcG9zaXRpb25TZXJ2aWNlID0gbmV3IFBvc2l0aW9uaW5nKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbkVsZW1lbnRzKFxuICBob3N0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBwbGFjZW1lbnQ6IHN0cmluZyxcbiAgYXBwZW5kVG9Cb2R5PzogYm9vbGVhbixcbiAgb3B0aW9ucz86IE9wdGlvbnMsXG4gIHJlbmRlcmVyPzogUmVuZGVyZXIyXG4pOiB2b2lkIHtcblxuICBjb25zdCBkYXRhID0gcG9zaXRpb25TZXJ2aWNlLnBvc2l0aW9uRWxlbWVudHMoXG4gICAgaG9zdEVsZW1lbnQsXG4gICAgdGFyZ2V0RWxlbWVudCxcbiAgICBwbGFjZW1lbnQsXG4gICAgYXBwZW5kVG9Cb2R5LFxuICAgIG9wdGlvbnNcbiAgKTtcblxuICBjb25zdCBvZmZzZXRzID0gZ2V0T2Zmc2V0cyhkYXRhKTtcblxuICBzZXRTdHlsZXModGFyZ2V0RWxlbWVudCwge1xuICAgICd3aWxsLWNoYW5nZSc6ICd0cmFuc2Zvcm0nLFxuICAgIHRvcDogJzBweCcsXG4gICAgbGVmdDogJzBweCcsXG4gICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlM2QoJHtvZmZzZXRzLmxlZnR9cHgsICR7b2Zmc2V0cy50b3B9cHgsIDBweClgXG4gIH0sIHJlbmRlcmVyKTtcblxuICBpZiAoZGF0YS5pbnN0YW5jZS5hcnJvdykge1xuICAgIHNldFN0eWxlcyhkYXRhLmluc3RhbmNlLmFycm93LCBkYXRhLm9mZnNldHMuYXJyb3csIHJlbmRlcmVyKTtcbiAgfVxuXG4gIHVwZGF0ZUNvbnRhaW5lckNsYXNzKGRhdGEsIHJlbmRlcmVyKTtcbn1cbiJdfQ==
@@ -0,0 +1,71 @@
1
+ import { Injectable, ElementRef, RendererFactory2, Inject, PLATFORM_ID, NgZone } from '@angular/core';
2
+ import { isPlatformBrowser } from '@angular/common';
3
+ import { positionElements } from './ng-positioning';
4
+ import { fromEvent, merge, of, animationFrameScheduler, Subject } from 'rxjs';
5
+ export class PositioningService {
6
+ constructor(ngZone, rendererFactory, platformId) {
7
+ this.update$$ = new Subject();
8
+ this.positionElements = new Map();
9
+ this.isDisabled = false;
10
+ if (isPlatformBrowser(platformId)) {
11
+ ngZone.runOutsideAngular(() => {
12
+ this.triggerEvent$ = merge(fromEvent(window, 'scroll', { passive: true }), fromEvent(window, 'resize', { passive: true }),
13
+ /* tslint:disable-next-line: deprecation */
14
+ of(0, animationFrameScheduler), this.update$$);
15
+ this.triggerEvent$.subscribe(() => {
16
+ if (this.isDisabled) {
17
+ return;
18
+ }
19
+ this.positionElements
20
+ /* tslint:disable-next-line: no-any */
21
+ .forEach((positionElement) => {
22
+ positionElements(_getHtmlElement(positionElement.target), _getHtmlElement(positionElement.element), positionElement.attachment, positionElement.appendToBody, this.options, rendererFactory.createRenderer(null, null));
23
+ });
24
+ });
25
+ });
26
+ }
27
+ }
28
+ position(options) {
29
+ this.addPositionElement(options);
30
+ }
31
+ get event$() {
32
+ return this.triggerEvent$;
33
+ }
34
+ disable() {
35
+ this.isDisabled = true;
36
+ }
37
+ enable() {
38
+ this.isDisabled = false;
39
+ }
40
+ addPositionElement(options) {
41
+ this.positionElements.set(_getHtmlElement(options.element), options);
42
+ }
43
+ calcPosition() {
44
+ this.update$$.next();
45
+ }
46
+ deletePositionElement(elRef) {
47
+ this.positionElements.delete(_getHtmlElement(elRef));
48
+ }
49
+ setOptions(options) {
50
+ this.options = options;
51
+ }
52
+ }
53
+ PositioningService.decorators = [
54
+ { type: Injectable }
55
+ ];
56
+ PositioningService.ctorParameters = () => [
57
+ { type: NgZone },
58
+ { type: RendererFactory2 },
59
+ { type: Number, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
60
+ ];
61
+ function _getHtmlElement(element) {
62
+ // it means that we got a selector
63
+ if (typeof element === 'string') {
64
+ return document.querySelector(element);
65
+ }
66
+ if (element instanceof ElementRef) {
67
+ return element.nativeElement;
68
+ }
69
+ return element;
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb25pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXIvc3ViLWNvbXBvbmVudHMvcG9zaXRpb25pbmcvcG9zaXRpb25pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBdUMxRixNQUFNLE9BQU8sa0JBQWtCO0lBTzdCLFlBQ0UsTUFBYyxFQUNkLGVBQWlDLEVBQ1osVUFBa0I7UUFSakMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUU3QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBUXpCLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQ3hCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQzlDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUM5QywyQ0FBMkM7Z0JBQzNDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLENBQUMsRUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO2dCQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO3dCQUNuQixPQUFPO3FCQUNSO29CQUVELElBQUksQ0FBQyxnQkFBZ0I7d0JBQ3JCLHNDQUFzQzt5QkFDbkMsT0FBTyxDQUFDLENBQUMsZUFBb0IsRUFBRSxFQUFFO3dCQUNoQyxnQkFBZ0IsQ0FDZCxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUN2QyxlQUFlLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUN4QyxlQUFlLENBQUMsVUFBVSxFQUMxQixlQUFlLENBQUMsWUFBWSxFQUM1QixJQUFJLENBQUMsT0FBTyxFQUNaLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUMzQyxDQUFDO29CQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsT0FBMkI7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUEyQjtRQUM1QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFpQjtRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZ0I7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQzs7O1lBNUVGLFVBQVU7OztZQTNDNkQsTUFBTTtZQUE3QyxnQkFBZ0I7eUNBc0Q1QyxNQUFNLFNBQUMsV0FBVzs7QUFvRXZCLFNBQVMsZUFBZSxDQUFDLE9BQTBDO0lBQ2pFLGtDQUFrQztJQUNsQyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtRQUMvQixPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDeEM7SUFFRCxJQUFJLE9BQU8sWUFBWSxVQUFVLEVBQUU7UUFDakMsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDO0tBQzlCO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyRmFjdG9yeTIsIEluamVjdCwgUExBVEZPUk1fSUQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBwb3NpdGlvbkVsZW1lbnRzIH0gZnJvbSAnLi9uZy1wb3NpdGlvbmluZyc7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIG9mLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uaW5nT3B0aW9ucyB7XG4gIC8qKiBUaGUgRE9NIGVsZW1lbnQsIEVsZW1lbnRSZWYsIG9yIGEgc2VsZWN0b3Igc3RyaW5nIG9mIGFuIGVsZW1lbnQgd2hpY2ggd2lsbCBiZSBtb3ZlZCAqL1xuICBlbGVtZW50PzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgc3RyaW5nO1xuXG4gIC8qKiBUaGUgRE9NIGVsZW1lbnQsIEVsZW1lbnRSZWYsIG9yIGEgc2VsZWN0b3Igc3RyaW5nIG9mIGFuIGVsZW1lbnQgd2hpY2ggdGhlIGVsZW1lbnQgd2lsbCBiZSBhdHRhY2hlZCB0byAgKi9cbiAgdGFyZ2V0PzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBvZiB0aGUgZm9ybSAndmVydC1hdHRhY2htZW50IGhvcml6LWF0dGFjaG1lbnQnIG9yICdwbGFjZW1lbnQnXG4gICAqIC0gcGxhY2VtZW50IGNhbiBiZSBcInRvcFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIiwgXCJyaWdodFwiXG4gICAqIG5vdCB5ZXQgc3VwcG9ydGVkOlxuICAgKiAtIHZlcnQtYXR0YWNobWVudCBjYW4gYmUgYW55IG9mICd0b3AnLCAnbWlkZGxlJywgJ2JvdHRvbSdcbiAgICogLSBob3Jpei1hdHRhY2htZW50IGNhbiBiZSBhbnkgb2YgJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0J1xuICAgKi9cbiAgYXR0YWNobWVudD86IHN0cmluZztcblxuICAvKiogQSBzdHJpbmcgc2ltaWxhciB0byBgYXR0YWNobWVudGAuIFRoZSBvbmUgZGlmZmVyZW5jZSBpcyB0aGF0LCBpZiBpdCdzIG5vdCBwcm92aWRlZCxcbiAgICogYHRhcmdldEF0dGFjaG1lbnRgIHdpbGwgYXNzdW1lIHRoZSBtaXJyb3IgaW1hZ2Ugb2YgYGF0dGFjaG1lbnRgLlxuICAgKi9cbiAgdGFyZ2V0QXR0YWNobWVudD86IHN0cmluZztcblxuICAvKiogQSBzdHJpbmcgb2YgdGhlIGZvcm0gJ3ZlcnQtb2Zmc2V0IGhvcml6LW9mZnNldCdcbiAgICogLSB2ZXJ0LW9mZnNldCBhbmQgaG9yaXotb2Zmc2V0IGNhbiBiZSBvZiB0aGUgZm9ybSBcIjIwcHhcIiBvciBcIjU1JVwiXG4gICAqL1xuICBvZmZzZXQ/OiBzdHJpbmc7XG5cbiAgLyoqIEEgc3RyaW5nIHNpbWlsYXIgdG8gYG9mZnNldGAsIGJ1dCByZWZlcnJpbmcgdG8gdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0ICovXG4gIHRhcmdldE9mZnNldD86IHN0cmluZztcblxuICAvKiogSWYgdHJ1ZSBjb21wb25lbnQgd2lsbCBiZSBhdHRhY2hlZCB0byBib2R5ICovXG4gIGFwcGVuZFRvQm9keT86IGJvb2xlYW47XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uaW5nU2VydmljZSB7XG4gIHByaXZhdGUgb3B0aW9uczogT3B0aW9ucztcbiAgcHJpdmF0ZSB1cGRhdGUkJCA9IG5ldyBTdWJqZWN0PG51bGw+KCk7XG4gIHByaXZhdGUgcG9zaXRpb25FbGVtZW50cyA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSB0cmlnZ2VyRXZlbnQkOiBPYnNlcnZhYmxlPG51bWJlcnxFdmVudD47XG4gIHByaXZhdGUgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5nWm9uZTogTmdab25lLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBudW1iZXJcbiAgKSB7XG5cbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHtcbiAgICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50JCA9IG1lcmdlKFxuICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdzY3JvbGwnLCB7IHBhc3NpdmU6IHRydWUgfSksXG4gICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScsIHsgcGFzc2l2ZTogdHJ1ZSB9KSxcbiAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRlcHJlY2F0aW9uICovXG4gICAgICAgICAgb2YoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLFxuICAgICAgICAgIHRoaXMudXBkYXRlJCRcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVsZW1lbnRzXG4gICAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgICAgICAgICAgIC5mb3JFYWNoKChwb3NpdGlvbkVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBwb3NpdGlvbkVsZW1lbnRzKFxuICAgICAgICAgICAgICAgIF9nZXRIdG1sRWxlbWVudChwb3NpdGlvbkVsZW1lbnQudGFyZ2V0KSxcbiAgICAgICAgICAgICAgICBfZ2V0SHRtbEVsZW1lbnQocG9zaXRpb25FbGVtZW50LmVsZW1lbnQpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uRWxlbWVudC5hdHRhY2htZW50LFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uRWxlbWVudC5hcHBlbmRUb0JvZHksXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgICAgIHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcG9zaXRpb24ob3B0aW9uczogUG9zaXRpb25pbmdPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5hZGRQb3NpdGlvbkVsZW1lbnQob3B0aW9ucyk7XG4gIH1cblxuICBnZXQgZXZlbnQkKCk6IE9ic2VydmFibGU8bnVtYmVyfEV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlckV2ZW50JDtcbiAgfVxuXG4gIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGVuYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGFkZFBvc2l0aW9uRWxlbWVudChvcHRpb25zOiBQb3NpdGlvbmluZ09wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLnBvc2l0aW9uRWxlbWVudHMuc2V0KF9nZXRIdG1sRWxlbWVudChvcHRpb25zLmVsZW1lbnQpLCBvcHRpb25zKTtcbiAgfVxuXG4gIGNhbGNQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZSQkLm5leHQoKTtcbiAgfVxuXG4gIGRlbGV0ZVBvc2l0aW9uRWxlbWVudChlbFJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIHRoaXMucG9zaXRpb25FbGVtZW50cy5kZWxldGUoX2dldEh0bWxFbGVtZW50KGVsUmVmKSk7XG4gIH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9nZXRIdG1sRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XG4gIC8vIGl0IG1lYW5zIHRoYXQgd2UgZ290IGEgc2VsZWN0b3JcbiAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsZW1lbnQpO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export { positionElements, Positioning } from './ng-positioning';
2
+ export { PositioningService } from './positioning.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXIvc3ViLWNvbXBvbmVudHMvcG9zaXRpb25pbmcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFzQixNQUFNLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcG9zaXRpb25FbGVtZW50cywgUG9zaXRpb25pbmcgfSBmcm9tICcuL25nLXBvc2l0aW9uaW5nJztcbmV4cG9ydCB7IFBvc2l0aW9uaW5nU2VydmljZSwgUG9zaXRpb25pbmdPcHRpb25zIH0gZnJvbSAnLi9wb3NpdGlvbmluZy5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Utility used to transform the `auto` placement to the placement with more
3
+ * available space.
4
+ */
5
+ import { getBoundaries } from './getBoundaries';
6
+ function getArea({ width, height }) {
7
+ return width * height;
8
+ }
9
+ export function computeAutoPlacement(placement, refRect, target, host, allowedPositions = ['top', 'bottom', 'right', 'left'], boundariesElement = 'viewport', padding = 0) {
10
+ if (placement.indexOf('auto') === -1) {
11
+ return placement;
12
+ }
13
+ const boundaries = getBoundaries(target, host, padding, boundariesElement);
14
+ const rects = {
15
+ top: {
16
+ width: boundaries.width,
17
+ height: refRect.top - boundaries.top
18
+ },
19
+ right: {
20
+ width: boundaries.right - refRect.right,
21
+ height: boundaries.height
22
+ },
23
+ bottom: {
24
+ width: boundaries.width,
25
+ height: boundaries.bottom - refRect.bottom
26
+ },
27
+ left: {
28
+ width: refRect.left - boundaries.left,
29
+ height: boundaries.height
30
+ }
31
+ };
32
+ const sortedAreas = Object.keys(rects)
33
+ .map(key => (Object.assign(Object.assign({ key }, rects[key]), { area: getArea(rects[key]) })))
34
+ .sort((a, b) => b.area - a.area);
35
+ let filteredAreas = sortedAreas.filter(({ width, height }) => {
36
+ return width >= target.clientWidth
37
+ && height >= target.clientHeight;
38
+ });
39
+ filteredAreas = filteredAreas.filter((position) => {
40
+ return allowedPositions
41
+ .some((allowedPosition) => {
42
+ return allowedPosition === position.key;
43
+ });
44
+ });
45
+ const computedPlacement = filteredAreas.length > 0
46
+ ? filteredAreas[0].key
47
+ : sortedAreas[0].key;
48
+ const variation = placement.split(' ')[1];
49
+ // for tooltip on auto position
50
+ target.className = target.className.replace(/bs-tooltip-auto/g, `bs-tooltip-${computedPlacement}`);
51
+ return computedPlacement + (variation ? `-${variation}` : '');
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL3N1Yi1jb21wb25lbnRzL3Bvc2l0aW9uaW5nL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdoRCxTQUFTLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTZCO0lBQzNELE9BQU8sS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxTQUFpQixFQUNqQixPQUFnQixFQUNoQixNQUFtQixFQUNuQixJQUFpQixFQUNqQixtQkFBMEIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDNUQsaUJBQWlCLEdBQUcsVUFBVSxFQUM5QixPQUFPLEdBQUcsQ0FBQztJQUVYLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNwQyxPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBRTNFLE1BQU0sS0FBSyxHQUFRO1FBQ2pCLEdBQUcsRUFBRTtZQUNILEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztZQUN2QixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRztTQUNyQztRQUNELEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLO1lBQ3ZDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtTQUMxQjtRQUNELE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztZQUN2QixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTTtTQUMzQztRQUNELElBQUksRUFBRTtZQUNKLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJO1lBQ3JDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtTQUMxQjtLQUNGLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQywrQkFDVixHQUFHLElBQ0EsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUNiLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQ3pCLENBQUM7U0FDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuQyxJQUFJLGFBQWEsR0FBVSxXQUFXLENBQUMsTUFBTSxDQUMzQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7UUFDcEIsT0FBTyxLQUFLLElBQUksTUFBTSxDQUFDLFdBQVc7ZUFDN0IsTUFBTSxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDckMsQ0FBQyxDQUNGLENBQUM7SUFFRixhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1FBQ3JELE9BQU8sZ0JBQWdCO2FBQ3BCLElBQUksQ0FBQyxDQUFDLGVBQXVCLEVBQUUsRUFBRTtZQUNoQyxPQUFPLGVBQWUsS0FBSyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGlCQUFpQixHQUFXLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUN4RCxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7UUFDdEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFFdkIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxQywrQkFBK0I7SUFDL0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUVuRyxPQUFPLGlCQUFpQixHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IHVzZWQgdG8gdHJhbnNmb3JtIHRoZSBgYXV0b2AgcGxhY2VtZW50IHRvIHRoZSBwbGFjZW1lbnQgd2l0aCBtb3JlXG4gKiBhdmFpbGFibGUgc3BhY2UuXG4gKi9cbmltcG9ydCB7IGdldEJvdW5kYXJpZXMgfSBmcm9tICcuL2dldEJvdW5kYXJpZXMnO1xuaW1wb3J0IHsgT2Zmc2V0cyB9IGZyb20gJy4uL21vZGVscyc7XG5cbmZ1bmN0aW9uIGdldEFyZWEoeyB3aWR0aCwgaGVpZ2h0IH06IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0pIHtcbiAgcmV0dXJuIHdpZHRoICogaGVpZ2h0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoXG4gIHBsYWNlbWVudDogc3RyaW5nLFxuICByZWZSZWN0OiBPZmZzZXRzLFxuICB0YXJnZXQ6IEhUTUxFbGVtZW50LFxuICBob3N0OiBIVE1MRWxlbWVudCxcbiAgYWxsb3dlZFBvc2l0aW9uczogYW55W10gPSBbJ3RvcCcsICdib3R0b20nLCAncmlnaHQnLCAnbGVmdCddLFxuICBib3VuZGFyaWVzRWxlbWVudCA9ICd2aWV3cG9ydCcsXG4gIHBhZGRpbmcgPSAwXG4pIHtcbiAgaWYgKHBsYWNlbWVudC5pbmRleE9mKCdhdXRvJykgPT09IC0xKSB7XG4gICAgcmV0dXJuIHBsYWNlbWVudDtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kYXJpZXMgPSBnZXRCb3VuZGFyaWVzKHRhcmdldCwgaG9zdCwgcGFkZGluZywgYm91bmRhcmllc0VsZW1lbnQpO1xuXG4gIGNvbnN0IHJlY3RzOiBhbnkgPSB7XG4gICAgdG9wOiB7XG4gICAgICB3aWR0aDogYm91bmRhcmllcy53aWR0aCxcbiAgICAgIGhlaWdodDogcmVmUmVjdC50b3AgLSBib3VuZGFyaWVzLnRvcFxuICAgIH0sXG4gICAgcmlnaHQ6IHtcbiAgICAgIHdpZHRoOiBib3VuZGFyaWVzLnJpZ2h0IC0gcmVmUmVjdC5yaWdodCxcbiAgICAgIGhlaWdodDogYm91bmRhcmllcy5oZWlnaHRcbiAgICB9LFxuICAgIGJvdHRvbToge1xuICAgICAgd2lkdGg6IGJvdW5kYXJpZXMud2lkdGgsXG4gICAgICBoZWlnaHQ6IGJvdW5kYXJpZXMuYm90dG9tIC0gcmVmUmVjdC5ib3R0b21cbiAgICB9LFxuICAgIGxlZnQ6IHtcbiAgICAgIHdpZHRoOiByZWZSZWN0LmxlZnQgLSBib3VuZGFyaWVzLmxlZnQsXG4gICAgICBoZWlnaHQ6IGJvdW5kYXJpZXMuaGVpZ2h0XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNvcnRlZEFyZWFzID0gT2JqZWN0LmtleXMocmVjdHMpXG4gICAgLm1hcChrZXkgPT4gKHtcbiAgICAgIGtleSxcbiAgICAgIC4uLnJlY3RzW2tleV0sXG4gICAgICBhcmVhOiBnZXRBcmVhKHJlY3RzW2tleV0pXG4gICAgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGIuYXJlYSAtIGEuYXJlYSk7XG5cbiAgbGV0IGZpbHRlcmVkQXJlYXM6IGFueVtdID0gc29ydGVkQXJlYXMuZmlsdGVyKFxuICAgICh7IHdpZHRoLCBoZWlnaHQgfSkgPT4ge1xuICAgICAgcmV0dXJuIHdpZHRoID49IHRhcmdldC5jbGllbnRXaWR0aFxuICAgICAgICAmJiBoZWlnaHQgPj0gdGFyZ2V0LmNsaWVudEhlaWdodDtcbiAgICB9XG4gICk7XG5cbiAgZmlsdGVyZWRBcmVhcyA9IGZpbHRlcmVkQXJlYXMuZmlsdGVyKChwb3NpdGlvbjogYW55KSA9PiB7XG4gICAgcmV0dXJuIGFsbG93ZWRQb3NpdGlvbnNcbiAgICAgIC5zb21lKChhbGxvd2VkUG9zaXRpb246IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gYWxsb3dlZFBvc2l0aW9uID09PSBwb3NpdGlvbi5rZXk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgY29tcHV0ZWRQbGFjZW1lbnQ6IHN0cmluZyA9IGZpbHRlcmVkQXJlYXMubGVuZ3RoID4gMFxuICAgID8gZmlsdGVyZWRBcmVhc1swXS5rZXlcbiAgICA6IHNvcnRlZEFyZWFzWzBdLmtleTtcblxuICBjb25zdCB2YXJpYXRpb24gPSBwbGFjZW1lbnQuc3BsaXQoJyAnKVsxXTtcblxuICAvLyBmb3IgdG9vbHRpcCBvbiBhdXRvIHBvc2l0aW9uXG4gIHRhcmdldC5jbGFzc05hbWUgPSB0YXJnZXQuY2xhc3NOYW1lLnJlcGxhY2UoL2JzLXRvb2x0aXAtYXV0by9nLCBgYnMtdG9vbHRpcC0ke2NvbXB1dGVkUGxhY2VtZW50fWApO1xuXG4gIHJldHVybiBjb21wdXRlZFBsYWNlbWVudCArICh2YXJpYXRpb24gPyBgLSR7dmFyaWF0aW9ufWAgOiAnJyk7XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Finds the offset parent common to the two provided nodes
3
+ */
4
+ import { isOffsetContainer } from './isOffsetContainer';
5
+ import { getRoot } from './getRoot';
6
+ import { getOffsetParent } from './getOffsetParent';
7
+ export function findCommonOffsetParent(element1, element2) {
8
+ // This check is needed to avoid errors in case one of the elements isn't defined for any reason
9
+ if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
10
+ return document.documentElement;
11
+ }
12
+ // Here we make sure to give as "start" the element that comes first in the DOM
13
+ /* tslint:disable-next-line: no-bitwise */
14
+ const order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
15
+ const start = order ? element1 : element2;
16
+ const end = order ? element2 : element1;
17
+ // Get common ancestor container
18
+ const range = document.createRange();
19
+ range.setStart(start, 0);
20
+ range.setEnd(end, 0);
21
+ const { commonAncestorContainer } = range;
22
+ // Both nodes are inside #document
23
+ if ((element1 !== commonAncestorContainer &&
24
+ element2 !== commonAncestorContainer) ||
25
+ start.contains(end)) {
26
+ if (isOffsetContainer(commonAncestorContainer)) {
27
+ return commonAncestorContainer;
28
+ }
29
+ return getOffsetParent(commonAncestorContainer);
30
+ }
31
+ // one of the nodes is inside shadowDOM, find which one
32
+ const element1root = getRoot(element1);
33
+ if (element1root.host) {
34
+ return findCommonOffsetParent(element1root.host, element2);
35
+ }
36
+ else {
37
+ return findCommonOffsetParent(element1, getRoot(element2).host);
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZENvbW1vbk9mZnNldFBhcmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXIvc3ViLWNvbXBvbmVudHMvcG9zaXRpb25pbmcvdXRpbHMvZmluZENvbW1vbk9mZnNldFBhcmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxRQUFxQixFQUFFLFFBQXFCO0lBQ2pGLGdHQUFnRztJQUNoRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7UUFDdEUsT0FBTyxRQUFRLENBQUMsZUFBZSxDQUFDO0tBQ2pDO0lBRUQsK0VBQStFO0lBQy9FLDBDQUEwQztJQUMxQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBRTVGLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDMUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUV4QyxnQ0FBZ0M7SUFDaEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUUxQyxrQ0FBa0M7SUFDbEMsSUFDRSxDQUFDLFFBQVEsS0FBSyx1QkFBdUI7UUFDbkMsUUFBUSxLQUFLLHVCQUF1QixDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQ25CO1FBQ0EsSUFBSSxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO1lBQzlDLE9BQU8sdUJBQXVCLENBQUM7U0FDaEM7UUFFRCxPQUFPLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBQ2pEO0lBRUQsdURBQXVEO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFDckIsT0FBTyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzVEO1NBQU07UUFDTCxPQUFPLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaW5kcyB0aGUgb2Zmc2V0IHBhcmVudCBjb21tb24gdG8gdGhlIHR3byBwcm92aWRlZCBub2Rlc1xuICovXG5pbXBvcnQgeyBpc09mZnNldENvbnRhaW5lciB9IGZyb20gJy4vaXNPZmZzZXRDb250YWluZXInO1xuaW1wb3J0IHsgZ2V0Um9vdCB9IGZyb20gJy4vZ2V0Um9vdCc7XG5pbXBvcnQgeyBnZXRPZmZzZXRQYXJlbnQgfSBmcm9tICcuL2dldE9mZnNldFBhcmVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29tbW9uT2Zmc2V0UGFyZW50KGVsZW1lbnQxOiBIVE1MRWxlbWVudCwgZWxlbWVudDI6IEhUTUxFbGVtZW50KTogYW55IHtcbiAgLy8gVGhpcyBjaGVjayBpcyBuZWVkZWQgdG8gYXZvaWQgZXJyb3JzIGluIGNhc2Ugb25lIG9mIHRoZSBlbGVtZW50cyBpc24ndCBkZWZpbmVkIGZvciBhbnkgcmVhc29uXG4gIGlmICghZWxlbWVudDEgfHwgIWVsZW1lbnQxLm5vZGVUeXBlIHx8ICFlbGVtZW50MiB8fCAhZWxlbWVudDIubm9kZVR5cGUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB9XG5cbiAgLy8gSGVyZSB3ZSBtYWtlIHN1cmUgdG8gZ2l2ZSBhcyBcInN0YXJ0XCIgdGhlIGVsZW1lbnQgdGhhdCBjb21lcyBmaXJzdCBpbiB0aGUgRE9NXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYml0d2lzZSAqL1xuICBjb25zdCBvcmRlciA9IGVsZW1lbnQxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQyKSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HO1xuXG4gIGNvbnN0IHN0YXJ0ID0gb3JkZXIgPyBlbGVtZW50MSA6IGVsZW1lbnQyO1xuICBjb25zdCBlbmQgPSBvcmRlciA/IGVsZW1lbnQyIDogZWxlbWVudDE7XG5cbiAgLy8gR2V0IGNvbW1vbiBhbmNlc3RvciBjb250YWluZXJcbiAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICByYW5nZS5zZXRTdGFydChzdGFydCwgMCk7XG4gIHJhbmdlLnNldEVuZChlbmQsIDApO1xuICBjb25zdCB7IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyIH0gPSByYW5nZTtcblxuICAvLyBCb3RoIG5vZGVzIGFyZSBpbnNpZGUgI2RvY3VtZW50XG4gIGlmIChcbiAgICAoZWxlbWVudDEgIT09IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyICYmXG4gICAgICBlbGVtZW50MiAhPT0gY29tbW9uQW5jZXN0b3JDb250YWluZXIpIHx8XG4gICAgc3RhcnQuY29udGFpbnMoZW5kKVxuICApIHtcbiAgICBpZiAoaXNPZmZzZXRDb250YWluZXIoY29tbW9uQW5jZXN0b3JDb250YWluZXIpKSB7XG4gICAgICByZXR1cm4gY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE9mZnNldFBhcmVudChjb21tb25BbmNlc3RvckNvbnRhaW5lcik7XG4gIH1cblxuICAvLyBvbmUgb2YgdGhlIG5vZGVzIGlzIGluc2lkZSBzaGFkb3dET00sIGZpbmQgd2hpY2ggb25lXG4gIGNvbnN0IGVsZW1lbnQxcm9vdCA9IGdldFJvb3QoZWxlbWVudDEpO1xuICBpZiAoZWxlbWVudDFyb290Lmhvc3QpIHtcbiAgICByZXR1cm4gZmluZENvbW1vbk9mZnNldFBhcmVudChlbGVtZW50MXJvb3QuaG9zdCwgZWxlbWVudDIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmaW5kQ29tbW9uT2Zmc2V0UGFyZW50KGVsZW1lbnQxLCBnZXRSb290KGVsZW1lbnQyKS5ob3N0KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Helper to detect borders of a given element
3
+ */
4
+ export function getBordersSize(styles, axis) {
5
+ const sideA = axis === 'x' ? 'Left' : 'Top';
6
+ const sideB = sideA === 'Left' ? 'Right' : 'Bottom';
7
+ return (parseFloat(styles[`border${sideA}Width`]) +
8
+ parseFloat(styles[`border${sideB}Width`]));
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Qm9yZGVyc1NpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL3N1Yi1jb21wb25lbnRzL3Bvc2l0aW9uaW5nL3V0aWxzL2dldEJvcmRlcnNTaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUEyQixFQUFFLElBQVk7SUFDdEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFcEQsT0FBTyxDQUNMLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLE9BQWMsQ0FBQyxDQUFDO1FBQ2hELFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLE9BQWMsQ0FBQyxDQUFDLENBQ2pELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIZWxwZXIgdG8gZGV0ZWN0IGJvcmRlcnMgb2YgYSBnaXZlbiBlbGVtZW50XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvcmRlcnNTaXplKHN0eWxlczogQ1NTU3R5bGVEZWNsYXJhdGlvbiwgYXhpczogc3RyaW5nKSB7XG4gIGNvbnN0IHNpZGVBID0gYXhpcyA9PT0gJ3gnID8gJ0xlZnQnIDogJ1RvcCc7XG4gIGNvbnN0IHNpZGVCID0gc2lkZUEgPT09ICdMZWZ0JyA/ICdSaWdodCcgOiAnQm90dG9tJztcblxuICByZXR1cm4gKFxuICAgIHBhcnNlRmxvYXQoc3R5bGVzW2Bib3JkZXIke3NpZGVBfVdpZHRoYCBhcyBhbnldKSArXG4gICAgcGFyc2VGbG9hdChzdHlsZXNbYGJvcmRlciR7c2lkZUJ9V2lkdGhgIGFzIGFueV0pXG4gICk7XG59XG4iXX0=