MCPcopy
hub / github.com/deepch/RTSPtoWebRTC / arrow

Function arrow

web/static/js/bootstrap.bundle.js:2895–2968  ·  view source on GitHub ↗

* @function * @memberof Modifiers * @argument {Object} data - The data object generated by update method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified

(data, options)

Source from the content-addressed store, hash-verified

2893 * @returns {Object} The data object, properly modified
2894 */
2895 function arrow(data, options) {
2896 var _data$offsets$arrow;
2897
2898 // arrow depends on keepTogether in order to work
2899 if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
2900 return data;
2901 }
2902
2903 var arrowElement = options.element;
2904
2905 // if arrowElement is a string, suppose it's a CSS selector
2906 if (typeof arrowElement === 'string') {
2907 arrowElement = data.instance.popper.querySelector(arrowElement);
2908
2909 // if arrowElement is not found, don't run the modifier
2910 if (!arrowElement) {
2911 return data;
2912 }
2913 } else {
2914 // if the arrowElement isn't a query selector we must check that the
2915 // provided DOM node is child of its popper node
2916 if (!data.instance.popper.contains(arrowElement)) {
2917 console.warn('WARNING: `arrow.element` must be child of its popper element!');
2918 return data;
2919 }
2920 }
2921
2922 var placement = data.placement.split('-')[0];
2923 var _data$offsets = data.offsets,
2924 popper = _data$offsets.popper,
2925 reference = _data$offsets.reference;
2926
2927 var isVertical = ['left', 'right'].indexOf(placement) !== -1;
2928
2929 var len = isVertical ? 'height' : 'width';
2930 var sideCapitalized = isVertical ? 'Top' : 'Left';
2931 var side = sideCapitalized.toLowerCase();
2932 var altSide = isVertical ? 'left' : 'top';
2933 var opSide = isVertical ? 'bottom' : 'right';
2934 var arrowElementSize = getOuterSizes(arrowElement)[len];
2935
2936 //
2937 // extends keepTogether behavior making sure the popper and its
2938 // reference have enough pixels in conjunction
2939 //
2940
2941 // top/left side
2942 if (reference[opSide] - arrowElementSize < popper[side]) {
2943 data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
2944 }
2945 // bottom/right side
2946 if (reference[side] + arrowElementSize > popper[opSide]) {
2947 data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
2948 }
2949 data.offsets.popper = getClientRect(data.offsets.popper);
2950
2951 // compute center of the popper
2952 var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;

Callers

nothing calls this directly

Calls 5

isModifierRequiredFunction · 0.85
getOuterSizesFunction · 0.85
getClientRectFunction · 0.85
getStyleComputedPropertyFunction · 0.85
definePropertyFunction · 0.85

Tested by

no test coverage detected