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.
- package/bundles/mis-crystal-design-system-datepicker.umd.js +13916 -0
- package/bundles/mis-crystal-design-system-datepicker.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-datepicker.umd.min.js +68 -0
- package/bundles/mis-crystal-design-system-datepicker.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.js +13 -13
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.js.map +1 -1
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js +2 -2
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js.map +1 -1
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js +10 -1
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js.map +1 -1
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js +2 -2
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js.map +1 -1
- package/datepicker/base/bs-datepicker-container.d.ts +44 -0
- package/datepicker/bs-datepicker-inline.component.d.ts +61 -0
- package/datepicker/bs-datepicker-inline.config.d.ts +3 -0
- package/datepicker/bs-datepicker-input.directive.d.ts +30 -0
- package/datepicker/bs-datepicker.component.d.ts +123 -0
- package/datepicker/bs-datepicker.config.d.ts +140 -0
- package/datepicker/bs-datepicker.module.d.ts +4 -0
- package/datepicker/bs-daterangepicker-inline.component.d.ts +61 -0
- package/datepicker/bs-daterangepicker-inline.config.d.ts +6 -0
- package/datepicker/bs-daterangepicker-input.directive.d.ts +30 -0
- package/datepicker/bs-daterangepicker.component.d.ts +115 -0
- package/datepicker/bs-daterangepicker.config.d.ts +4 -0
- package/datepicker/bs-locale.service.d.ts +10 -0
- package/datepicker/date-formatter.d.ts +3 -0
- package/datepicker/datepicker-animations.d.ts +3 -0
- package/datepicker/datepicker-inner.component.d.ts +75 -0
- package/datepicker/datepicker.component.d.ts +78 -0
- package/datepicker/datepicker.config.d.ts +19 -0
- package/datepicker/datepicker.module.d.ts +4 -0
- package/datepicker/daypicker.component.d.ts +14 -0
- package/datepicker/engine/calc-days-calendar.d.ts +2 -0
- package/datepicker/engine/flag-days-calendar.d.ts +17 -0
- package/datepicker/engine/flag-months-calendar.d.ts +12 -0
- package/datepicker/engine/flag-years-calendar.d.ts +12 -0
- package/datepicker/engine/format-days-calendar.d.ts +4 -0
- package/datepicker/engine/format-months-calendar.d.ts +2 -0
- package/datepicker/engine/format-years-calendar.d.ts +4 -0
- package/datepicker/engine/view-mode.d.ts +2 -0
- package/datepicker/index.d.ts +1 -0
- package/datepicker/mis-crystal-design-system-datepicker.d.ts +24 -0
- package/datepicker/mis-crystal-design-system-datepicker.metadata.json +1 -0
- package/datepicker/models/index.d.ts +102 -0
- package/datepicker/monthpicker.component.d.ts +11 -0
- package/datepicker/package.json +11 -0
- package/datepicker/public_api.d.ts +26 -0
- package/datepicker/reducer/_defaults.d.ts +2 -0
- package/datepicker/reducer/bs-datepicker.actions.d.ts +43 -0
- package/datepicker/reducer/bs-datepicker.effects.d.ts +38 -0
- package/datepicker/reducer/bs-datepicker.reducer.d.ts +3 -0
- package/datepicker/reducer/bs-datepicker.state.d.ts +43 -0
- package/datepicker/reducer/bs-datepicker.store.d.ts +5 -0
- package/datepicker/sub-components/chronos/create/check-overflow.d.ts +2 -0
- package/datepicker/sub-components/chronos/create/clone.d.ts +1 -0
- package/datepicker/sub-components/chronos/create/date-from-array.d.ts +2 -0
- package/datepicker/sub-components/chronos/create/from-anything.d.ts +4 -0
- package/datepicker/sub-components/chronos/create/from-array.d.ts +2 -0
- package/datepicker/sub-components/chronos/create/from-object.d.ts +2 -0
- package/datepicker/sub-components/chronos/create/from-string-and-array.d.ts +2 -0
- package/datepicker/sub-components/chronos/create/from-string-and-format.d.ts +4 -0
- package/datepicker/sub-components/chronos/create/from-string.d.ts +4 -0
- package/datepicker/sub-components/chronos/create/local.d.ts +3 -0
- package/datepicker/sub-components/chronos/create/parsing-flags.d.ts +2 -0
- package/datepicker/sub-components/chronos/create/parsing.types.d.ts +64 -0
- package/datepicker/sub-components/chronos/create/valid.d.ts +6 -0
- package/datepicker/sub-components/chronos/duration/bubble.d.ts +4 -0
- package/datepicker/sub-components/chronos/duration/constructor.d.ts +21 -0
- package/datepicker/sub-components/chronos/duration/create.d.ts +8 -0
- package/datepicker/sub-components/chronos/duration/humanize.d.ts +5 -0
- package/datepicker/sub-components/chronos/duration/valid.d.ts +2 -0
- package/datepicker/sub-components/chronos/format/format.d.ts +11 -0
- package/datepicker/sub-components/chronos/format.d.ts +5 -0
- package/datepicker/sub-components/chronos/i18n/ar.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/bg.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/ca.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/cs.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/da.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/de.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/en-gb.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/es-do.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/es-us.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/es.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/et.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/fi.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/fr.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/gl.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/he.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/hi.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/hr.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/hu.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/id.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/it.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/ja.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/ka.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/kk.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/ko.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/lt.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/lv.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/mn.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/nb.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/nl-be.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/nl.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/pl.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/pt-br.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/ro.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/ru.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/sk.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/sl.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/sq.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/sv.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/th-be.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/th.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/tr.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/uk.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/vi.d.ts +2 -0
- package/datepicker/sub-components/chronos/i18n/zh-cn.d.ts +2 -0
- package/datepicker/sub-components/chronos/index.d.ts +1 -0
- package/datepicker/sub-components/chronos/locale/calendar.d.ts +8 -0
- package/datepicker/sub-components/chronos/locale/locale.class.d.ts +143 -0
- package/datepicker/sub-components/chronos/locale/locale.defaults.d.ts +11 -0
- package/datepicker/sub-components/chronos/locale/locales.d.ts +7 -0
- package/datepicker/sub-components/chronos/moment/add-subtract.d.ts +5 -0
- package/datepicker/sub-components/chronos/moment/calendar.d.ts +15 -0
- package/datepicker/sub-components/chronos/moment/diff.d.ts +3 -0
- package/datepicker/sub-components/chronos/moment/min-max.d.ts +2 -0
- package/datepicker/sub-components/chronos/parse/regex.d.ts +22 -0
- package/datepicker/sub-components/chronos/parse/token.d.ts +5 -0
- package/datepicker/sub-components/chronos/public_api.d.ts +57 -0
- package/datepicker/sub-components/chronos/test/chain.d.ts +214 -0
- package/datepicker/sub-components/chronos/types.d.ts +36 -0
- package/datepicker/sub-components/chronos/units/aliases.d.ts +7 -0
- package/datepicker/sub-components/chronos/units/constants.d.ts +9 -0
- package/datepicker/sub-components/chronos/units/day-of-month.d.ts +1 -0
- package/datepicker/sub-components/chronos/units/day-of-week.d.ts +20 -0
- package/datepicker/sub-components/chronos/units/day-of-year.d.ts +3 -0
- package/datepicker/sub-components/chronos/units/hour.d.ts +1 -0
- package/datepicker/sub-components/chronos/units/index.d.ts +18 -0
- package/datepicker/sub-components/chronos/units/millisecond.d.ts +1 -0
- package/datepicker/sub-components/chronos/units/minute.d.ts +1 -0
- package/datepicker/sub-components/chronos/units/month.d.ts +2 -0
- package/datepicker/sub-components/chronos/units/offset.d.ts +10 -0
- package/datepicker/sub-components/chronos/units/priorities.d.ts +1 -0
- package/datepicker/sub-components/chronos/units/quarter.d.ts +3 -0
- package/datepicker/sub-components/chronos/units/second.d.ts +1 -0
- package/datepicker/sub-components/chronos/units/timestamp.d.ts +1 -0
- package/datepicker/sub-components/chronos/units/timezone.d.ts +3 -0
- package/datepicker/sub-components/chronos/units/week-calendar-utils.d.ts +9 -0
- package/datepicker/sub-components/chronos/units/week-year.d.ts +8 -0
- package/datepicker/sub-components/chronos/units/week.d.ts +6 -0
- package/datepicker/sub-components/chronos/units/year.d.ts +4 -0
- package/datepicker/sub-components/chronos/utils/abs-ceil.d.ts +1 -0
- package/datepicker/sub-components/chronos/utils/abs-round.d.ts +1 -0
- package/datepicker/sub-components/chronos/utils/compare-arrays.d.ts +1 -0
- package/datepicker/sub-components/chronos/utils/date-compare.d.ts +9 -0
- package/datepicker/sub-components/chronos/utils/date-getters.d.ts +18 -0
- package/datepicker/sub-components/chronos/utils/date-setters.d.ts +12 -0
- package/datepicker/sub-components/chronos/utils/defaults.d.ts +1 -0
- package/datepicker/sub-components/chronos/utils/start-end-of.d.ts +3 -0
- package/datepicker/sub-components/chronos/utils/type-checks.d.ts +12 -0
- package/datepicker/sub-components/chronos/utils/zero-fill.d.ts +1 -0
- package/datepicker/sub-components/chronos/utils.d.ts +2 -0
- package/datepicker/sub-components/component-loader/bs-component-ref.class.d.ts +5 -0
- package/datepicker/sub-components/component-loader/component-loader.class.d.ts +75 -0
- package/datepicker/sub-components/component-loader/component-loader.factory.d.ts +18 -0
- package/datepicker/sub-components/component-loader/content-ref.class.d.ts +7 -0
- package/datepicker/sub-components/component-loader/index.d.ts +1 -0
- package/datepicker/sub-components/component-loader/listen-options.model.d.ts +11 -0
- package/datepicker/sub-components/component-loader/public_api.d.ts +4 -0
- package/datepicker/sub-components/mini-ngrx/index.d.ts +1 -0
- package/datepicker/sub-components/mini-ngrx/public_api.d.ts +7 -0
- package/datepicker/sub-components/mini-ngrx/state.class.d.ts +8 -0
- package/datepicker/sub-components/mini-ngrx/store.class.d.ts +16 -0
- package/datepicker/sub-components/positioning/index.d.ts +1 -0
- package/datepicker/sub-components/positioning/models/index.d.ts +41 -0
- package/datepicker/sub-components/positioning/modifiers/arrow.d.ts +2 -0
- package/datepicker/sub-components/positioning/modifiers/flip.d.ts +2 -0
- package/datepicker/sub-components/positioning/modifiers/index.d.ts +5 -0
- package/datepicker/sub-components/positioning/modifiers/initData.d.ts +2 -0
- package/datepicker/sub-components/positioning/modifiers/preventOverflow.d.ts +2 -0
- package/datepicker/sub-components/positioning/modifiers/shift.d.ts +2 -0
- package/datepicker/sub-components/positioning/ng-positioning.d.ts +8 -0
- package/datepicker/sub-components/positioning/positioning.service.d.ts +45 -0
- package/datepicker/sub-components/positioning/public_api.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/computeAutoPlacement.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/findCommonOffsetParent.d.ts +1 -0
- package/datepicker/sub-components/positioning/utils/getBordersSize.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/getBoundaries.d.ts +1 -0
- package/datepicker/sub-components/positioning/utils/getBoundingClientRect.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/getClientRect.d.ts +5 -0
- package/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/getOffsetParent.d.ts +1 -0
- package/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/getOffsets.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/getOppositePlacement.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/getOppositeVariation.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/getOuterSizes.d.ts +7 -0
- package/datepicker/sub-components/positioning/utils/getParentNode.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/getReferenceOffsets.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/getRoot.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/getScroll.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/getScrollParent.d.ts +1 -0
- package/datepicker/sub-components/positioning/utils/getStyleComputedProperty.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/getTargetOffsets.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/getWindowSizes.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/includeScroll.d.ts +2 -0
- package/datepicker/sub-components/positioning/utils/index.d.ts +23 -0
- package/datepicker/sub-components/positioning/utils/isBrowser.d.ts +1 -0
- package/datepicker/sub-components/positioning/utils/isFixed.d.ts +1 -0
- package/datepicker/sub-components/positioning/utils/isIE.d.ts +1 -0
- package/datepicker/sub-components/positioning/utils/isModifierEnabled.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/isNumeric.d.ts +4 -0
- package/datepicker/sub-components/positioning/utils/isOffsetContainer.d.ts +1 -0
- package/datepicker/sub-components/positioning/utils/setStyles.d.ts +5 -0
- package/datepicker/sub-components/positioning/utils/updateContainerClass.d.ts +6 -0
- package/datepicker/sub-components/tooltip/index.d.ts +1 -0
- package/datepicker/sub-components/tooltip/public_api.d.ts +4 -0
- package/datepicker/sub-components/tooltip/tooltip-container.component.d.ts +14 -0
- package/datepicker/sub-components/tooltip/tooltip.config.d.ts +13 -0
- package/datepicker/sub-components/tooltip/tooltip.directive.d.ts +109 -0
- package/datepicker/sub-components/tooltip/tooltip.module.d.ts +4 -0
- package/datepicker/sub-components/utils/decorators.d.ts +1 -0
- package/datepicker/sub-components/utils/facade/browser.d.ts +23 -0
- package/datepicker/sub-components/utils/index.d.ts +1 -0
- package/datepicker/sub-components/utils/linked-list.class.d.ts +26 -0
- package/datepicker/sub-components/utils/public_api.d.ts +10 -0
- package/datepicker/sub-components/utils/theme-provider.d.ts +2 -0
- package/datepicker/sub-components/utils/trigger.class.d.ts +6 -0
- package/datepicker/sub-components/utils/triggers.d.ts +18 -0
- package/datepicker/sub-components/utils/utils.class.d.ts +4 -0
- package/datepicker/sub-components/utils/warn-once.d.ts +1 -0
- package/datepicker/themes/bs/bs-calendar-layout.component.d.ts +2 -0
- package/datepicker/themes/bs/bs-current-date-view.component.d.ts +3 -0
- package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +14 -0
- package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +33 -0
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +11 -0
- package/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +10 -0
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +9 -0
- package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +37 -0
- package/datepicker/themes/bs/bs-daterangepicker-inline-container.component.d.ts +10 -0
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +23 -0
- package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +13 -0
- package/datepicker/themes/bs/bs-timepicker-view.component.d.ts +5 -0
- package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +13 -0
- package/datepicker/utils/bs-calendar-utils.d.ts +10 -0
- package/datepicker/utils/matrix-utils.d.ts +9 -0
- package/datepicker/yearpicker.component.d.ts +11 -0
- package/datepicker_v2/mis-crystal-design-system-datepicker_v2.metadata.json +1 -1
- package/esm2015/datepicker/base/bs-datepicker-container.js +47 -0
- package/esm2015/datepicker/bs-datepicker-inline.component.js +132 -0
- package/esm2015/datepicker/bs-datepicker-inline.config.js +12 -0
- package/esm2015/datepicker/bs-datepicker-input.directive.js +159 -0
- package/esm2015/datepicker/bs-datepicker.component.js +238 -0
- package/esm2015/datepicker/bs-datepicker.config.js +85 -0
- package/esm2015/datepicker/bs-datepicker.module.js +101 -0
- package/esm2015/datepicker/bs-daterangepicker-inline.component.js +129 -0
- package/esm2015/datepicker/bs-daterangepicker-inline.config.js +19 -0
- package/esm2015/datepicker/bs-daterangepicker-input.directive.js +191 -0
- package/esm2015/datepicker/bs-daterangepicker.component.js +227 -0
- package/esm2015/datepicker/bs-daterangepicker.config.js +17 -0
- package/esm2015/datepicker/bs-locale.service.js +28 -0
- package/esm2015/datepicker/date-formatter.js +7 -0
- package/esm2015/datepicker/datepicker-animations.js +16 -0
- package/esm2015/datepicker/datepicker-inner.component.js +282 -0
- package/esm2015/datepicker/datepicker.component.js +140 -0
- package/esm2015/datepicker/datepicker.config.js +30 -0
- package/esm2015/datepicker/datepicker.module.js +35 -0
- package/esm2015/datepicker/daypicker.component.js +174 -0
- package/esm2015/datepicker/engine/calc-days-calendar.js +19 -0
- package/esm2015/datepicker/engine/flag-days-calendar.js +91 -0
- package/esm2015/datepicker/engine/flag-months-calendar.js +41 -0
- package/esm2015/datepicker/engine/flag-years-calendar.js +39 -0
- package/esm2015/datepicker/engine/format-days-calendar.js +29 -0
- package/esm2015/datepicker/engine/format-months-calendar.js +19 -0
- package/esm2015/datepicker/engine/format-years-calendar.js +35 -0
- package/esm2015/datepicker/engine/view-mode.js +4 -0
- package/esm2015/datepicker/index.js +2 -0
- package/esm2015/datepicker/mis-crystal-design-system-datepicker.js +25 -0
- package/esm2015/datepicker/models/index.js +9 -0
- package/esm2015/datepicker/monthpicker.component.js +87 -0
- package/esm2015/datepicker/public_api.js +26 -0
- package/esm2015/datepicker/reducer/_defaults.js +5 -0
- package/esm2015/datepicker/reducer/bs-datepicker.actions.js +132 -0
- package/esm2015/datepicker/reducer/bs-datepicker.effects.js +170 -0
- package/esm2015/datepicker/reducer/bs-datepicker.reducer.js +302 -0
- package/esm2015/datepicker/reducer/bs-datepicker.state.js +12 -0
- package/esm2015/datepicker/reducer/bs-datepicker.store.js +19 -0
- package/esm2015/datepicker/sub-components/chronos/create/check-overflow.js +30 -0
- package/esm2015/datepicker/sub-components/chronos/create/clone.js +6 -0
- package/esm2015/datepicker/sub-components/chronos/create/date-from-array.js +17 -0
- package/esm2015/datepicker/sub-components/chronos/create/from-anything.js +107 -0
- package/esm2015/datepicker/sub-components/chronos/create/from-array.js +136 -0
- package/esm2015/datepicker/sub-components/chronos/create/from-object.js +17 -0
- package/esm2015/datepicker/sub-components/chronos/create/from-string-and-array.js +38 -0
- package/esm2015/datepicker/sub-components/chronos/create/from-string-and-format.js +106 -0
- package/esm2015/datepicker/sub-components/chronos/create/from-string.js +227 -0
- package/esm2015/datepicker/sub-components/chronos/create/local.js +16 -0
- package/esm2015/datepicker/sub-components/chronos/create/parsing-flags.js +26 -0
- package/esm2015/datepicker/sub-components/chronos/create/parsing.types.js +2 -0
- package/esm2015/datepicker/sub-components/chronos/create/valid.js +42 -0
- package/esm2015/datepicker/sub-components/chronos/duration/bubble.js +47 -0
- package/esm2015/datepicker/sub-components/chronos/duration/constructor.js +130 -0
- package/esm2015/datepicker/sub-components/chronos/duration/create.js +113 -0
- package/esm2015/datepicker/sub-components/chronos/duration/humanize.js +80 -0
- package/esm2015/datepicker/sub-components/chronos/duration/valid.js +45 -0
- package/esm2015/datepicker/sub-components/chronos/format/format.js +51 -0
- package/esm2015/datepicker/sub-components/chronos/format.js +46 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/ar.js +131 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/bg.js +96 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/ca.js +91 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/cs.js +181 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/da.js +50 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/de.js +72 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/en-gb.js +61 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/es-do.js +85 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/es-us.js +79 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/es.js +84 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/et.js +75 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/fi.js +100 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/fr.js +76 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/gl.js +84 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/he.js +98 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/hi.js +124 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/hr.js +62 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/hu.js +104 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/id.js +83 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/it.js +65 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/ja.js +75 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/ka.js +87 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/kk.js +76 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/ko.js +77 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/lt.js +116 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/lv.js +56 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/mn.js +99 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/nb.js +53 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/nl-be.js +81 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/nl.js +80 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/pl.js +126 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/pt-br.js +56 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/ro.js +66 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/ru.js +181 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/sk.js +157 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/sl.js +184 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/sq.js +54 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/sv.js +63 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/th-be.js +74 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/th.js +59 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/tr.js +82 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/uk.js +147 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/vi.js +74 -0
- package/esm2015/datepicker/sub-components/chronos/i18n/zh-cn.js +114 -0
- package/esm2015/datepicker/sub-components/chronos/index.js +2 -0
- package/esm2015/datepicker/sub-components/chronos/locale/calendar.js +9 -0
- package/esm2015/datepicker/sub-components/chronos/locale/locale.class.js +532 -0
- package/esm2015/datepicker/sub-components/chronos/locale/locale.defaults.js +40 -0
- package/esm2015/datepicker/sub-components/chronos/locale/locales.js +229 -0
- package/esm2015/datepicker/sub-components/chronos/moment/add-subtract.js +35 -0
- package/esm2015/datepicker/sub-components/chronos/moment/calendar.js +41 -0
- package/esm2015/datepicker/sub-components/chronos/moment/diff.js +70 -0
- package/esm2015/datepicker/sub-components/chronos/moment/min-max.js +38 -0
- package/esm2015/datepicker/sub-components/chronos/parse/regex.js +49 -0
- package/esm2015/datepicker/sub-components/chronos/parse/token.js +32 -0
- package/esm2015/datepicker/sub-components/chronos/public_api.js +56 -0
- package/esm2015/datepicker/sub-components/chronos/test/chain.js +711 -0
- package/esm2015/datepicker/sub-components/chronos/types.js +2 -0
- package/esm2015/datepicker/sub-components/chronos/units/aliases.js +35 -0
- package/esm2015/datepicker/sub-components/chronos/units/constants.js +11 -0
- package/esm2015/datepicker/sub-components/chronos/units/day-of-month.js +31 -0
- package/esm2015/datepicker/sub-components/chronos/units/day-of-week.js +129 -0
- package/esm2015/datepicker/sub-components/chronos/units/day-of-year.js +37 -0
- package/esm2015/datepicker/sub-components/chronos/units/hour.js +127 -0
- package/esm2015/datepicker/sub-components/chronos/units/index.js +19 -0
- package/esm2015/datepicker/sub-components/chronos/units/millisecond.js +60 -0
- package/esm2015/datepicker/sub-components/chronos/units/minute.js +23 -0
- package/esm2015/datepicker/sub-components/chronos/units/month.js +63 -0
- package/esm2015/datepicker/sub-components/chronos/units/offset.js +210 -0
- package/esm2015/datepicker/sub-components/chronos/units/priorities.js +21 -0
- package/esm2015/datepicker/sub-components/chronos/units/quarter.js +39 -0
- package/esm2015/datepicker/sub-components/chronos/units/second.js +23 -0
- package/esm2015/datepicker/sub-components/chronos/units/timestamp.js +28 -0
- package/esm2015/datepicker/sub-components/chronos/units/timezone.js +19 -0
- package/esm2015/datepicker/sub-components/chronos/units/week-calendar-utils.js +70 -0
- package/esm2015/datepicker/sub-components/chronos/units/week-year.js +101 -0
- package/esm2015/datepicker/sub-components/chronos/units/week.js +58 -0
- package/esm2015/datepicker/sub-components/chronos/units/year.js +60 -0
- package/esm2015/datepicker/sub-components/chronos/utils/abs-ceil.js +4 -0
- package/esm2015/datepicker/sub-components/chronos/utils/abs-round.js +4 -0
- package/esm2015/datepicker/sub-components/chronos/utils/compare-arrays.js +16 -0
- package/esm2015/datepicker/sub-components/chronos/utils/date-compare.js +55 -0
- package/esm2015/datepicker/sub-components/chronos/utils/date-getters.js +67 -0
- package/esm2015/datepicker/sub-components/chronos/utils/date-setters.js +75 -0
- package/esm2015/datepicker/sub-components/chronos/utils/defaults.js +11 -0
- package/esm2015/datepicker/sub-components/chronos/utils/start-end-of.js +57 -0
- package/esm2015/datepicker/sub-components/chronos/utils/type-checks.js +56 -0
- package/esm2015/datepicker/sub-components/chronos/utils/zero-fill.js +10 -0
- package/esm2015/datepicker/sub-components/chronos/utils.js +7 -0
- package/esm2015/datepicker/sub-components/component-loader/bs-component-ref.class.js +3 -0
- package/esm2015/datepicker/sub-components/component-loader/component-loader.class.js +272 -0
- package/esm2015/datepicker/sub-components/component-loader/component-loader.factory.js +32 -0
- package/esm2015/datepicker/sub-components/component-loader/content-ref.class.js +12 -0
- package/esm2015/datepicker/sub-components/component-loader/index.js +2 -0
- package/esm2015/datepicker/sub-components/component-loader/listen-options.model.js +2 -0
- package/esm2015/datepicker/sub-components/component-loader/public_api.js +5 -0
- package/esm2015/datepicker/sub-components/mini-ngrx/index.js +2 -0
- package/esm2015/datepicker/sub-components/mini-ngrx/public_api.js +3 -0
- package/esm2015/datepicker/sub-components/mini-ngrx/state.class.js +16 -0
- package/esm2015/datepicker/sub-components/mini-ngrx/store.class.js +43 -0
- package/esm2015/datepicker/sub-components/positioning/index.js +2 -0
- package/esm2015/datepicker/sub-components/positioning/models/index.js +2 -0
- package/esm2015/datepicker/sub-components/positioning/modifiers/arrow.js +56 -0
- package/esm2015/datepicker/sub-components/positioning/modifiers/flip.js +60 -0
- package/esm2015/datepicker/sub-components/positioning/modifiers/index.js +6 -0
- package/esm2015/datepicker/sub-components/positioning/modifiers/initData.js +42 -0
- package/esm2015/datepicker/sub-components/positioning/modifiers/preventOverflow.js +56 -0
- package/esm2015/datepicker/sub-components/positioning/modifiers/shift.js +22 -0
- package/esm2015/datepicker/sub-components/positioning/ng-positioning.js +30 -0
- package/esm2015/datepicker/sub-components/positioning/positioning.service.js +71 -0
- package/esm2015/datepicker/sub-components/positioning/public_api.js +3 -0
- package/esm2015/datepicker/sub-components/positioning/utils/computeAutoPlacement.js +53 -0
- package/esm2015/datepicker/sub-components/positioning/utils/findCommonOffsetParent.js +40 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getBordersSize.js +10 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getBoundaries.js +56 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getBoundingClientRect.js +55 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getClientRect.js +4 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.js +17 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsetParent.js +32 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.js +51 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsets.js +11 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getOppositePlacement.js +8 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getOppositeVariation.js +13 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getOuterSizes.js +14 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getParentNode.js +10 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getReferenceOffsets.js +13 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getRoot.js +10 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getScroll.js +14 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getScrollParent.js +26 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getStyleComputedProperty.js +13 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getTargetOffsets.js +30 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +19 -0
- package/esm2015/datepicker/sub-components/positioning/utils/getWindowSizes.js +18 -0
- package/esm2015/datepicker/sub-components/positioning/utils/includeScroll.js +15 -0
- package/esm2015/datepicker/sub-components/positioning/utils/index.js +24 -0
- package/esm2015/datepicker/sub-components/positioning/utils/isBrowser.js +2 -0
- package/esm2015/datepicker/sub-components/positioning/utils/isFixed.js +16 -0
- package/esm2015/datepicker/sub-components/positioning/utils/isIE.js +16 -0
- package/esm2015/datepicker/sub-components/positioning/utils/isModifierEnabled.js +10 -0
- package/esm2015/datepicker/sub-components/positioning/utils/isNumeric.js +7 -0
- package/esm2015/datepicker/sub-components/positioning/utils/isOffsetContainer.js +9 -0
- package/esm2015/datepicker/sub-components/positioning/utils/setStyles.js +17 -0
- package/esm2015/datepicker/sub-components/positioning/utils/updateContainerClass.js +22 -0
- package/esm2015/datepicker/sub-components/tooltip/index.js +2 -0
- package/esm2015/datepicker/sub-components/tooltip/public_api.js +5 -0
- package/esm2015/datepicker/sub-components/tooltip/tooltip-container.component.js +63 -0
- package/esm2015/datepicker/sub-components/tooltip/tooltip.config.js +22 -0
- package/esm2015/datepicker/sub-components/tooltip/tooltip.directive.js +282 -0
- package/esm2015/datepicker/sub-components/tooltip/tooltip.module.js +23 -0
- package/esm2015/datepicker/sub-components/utils/decorators.js +25 -0
- package/esm2015/datepicker/sub-components/utils/facade/browser.js +24 -0
- package/esm2015/datepicker/sub-components/utils/index.js +2 -0
- package/esm2015/datepicker/sub-components/utils/linked-list.class.js +240 -0
- package/esm2015/datepicker/sub-components/utils/public_api.js +11 -0
- package/esm2015/datepicker/sub-components/utils/theme-provider.js +35 -0
- package/esm2015/datepicker/sub-components/utils/trigger.class.js +10 -0
- package/esm2015/datepicker/sub-components/utils/triggers.js +110 -0
- package/esm2015/datepicker/sub-components/utils/utils.class.js +21 -0
- package/esm2015/datepicker/sub-components/utils/warn-once.js +12 -0
- package/esm2015/datepicker/themes/bs/bs-calendar-layout.component.js +25 -0
- package/esm2015/datepicker/themes/bs/bs-current-date-view.component.js +13 -0
- package/esm2015/datepicker/themes/bs/bs-custom-dates-view.component.js +44 -0
- package/esm2015/datepicker/themes/bs/bs-datepicker-container.component.js +152 -0
- package/esm2015/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +47 -0
- package/esm2015/datepicker/themes/bs/bs-datepicker-inline-container.component.js +36 -0
- package/esm2015/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +63 -0
- package/esm2015/datepicker/themes/bs/bs-daterangepicker-container.component.js +195 -0
- package/esm2015/datepicker/themes/bs/bs-daterangepicker-inline-container.component.js +36 -0
- package/esm2015/datepicker/themes/bs/bs-days-calendar-view.component.js +162 -0
- package/esm2015/datepicker/themes/bs/bs-months-calendar-view.component.js +60 -0
- package/esm2015/datepicker/themes/bs/bs-timepicker-view.component.js +34 -0
- package/esm2015/datepicker/themes/bs/bs-years-calendar-view.component.js +61 -0
- package/esm2015/datepicker/utils/bs-calendar-utils.js +43 -0
- package/esm2015/datepicker/utils/matrix-utils.js +14 -0
- package/esm2015/datepicker/yearpicker.component.js +90 -0
- package/esm2015/datepicker_v2/tz-dp-container/tz-dp-container.component.js +13 -13
- package/esm2015/multi-select-dropdown/multi-select-dropdown.component.js +10 -2
- package/fesm2015/mis-crystal-design-system-datepicker.js +13512 -0
- package/fesm2015/mis-crystal-design-system-datepicker.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-datepicker_v2.js +12 -12
- package/fesm2015/mis-crystal-design-system-datepicker_v2.js.map +1 -1
- package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js +9 -1
- package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js.map +1 -1
- package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.metadata.json +1 -1
- package/multi-select-dropdown/multi-select-dropdown.component.d.ts +1 -1
- 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=
|