Updated utils
This commit is contained in:
parent
42917806e9
commit
5505f60119
52
app/javascript/gabsocial/utils/element_position.js
Normal file
52
app/javascript/gabsocial/utils/element_position.js
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
export const findElementPosition = el => {
|
||||||
|
let box;
|
||||||
|
|
||||||
|
if (el.getBoundingClientRect && el.parentNode) {
|
||||||
|
box = el.getBoundingClientRect();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!box) {
|
||||||
|
return {
|
||||||
|
left: 0,
|
||||||
|
top: 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const docEl = document.documentElement;
|
||||||
|
const body = document.body;
|
||||||
|
|
||||||
|
const clientLeft = docEl.clientLeft || body.clientLeft || 0;
|
||||||
|
const scrollLeft = window.pageXOffset || body.scrollLeft;
|
||||||
|
const left = (box.left + scrollLeft) - clientLeft;
|
||||||
|
|
||||||
|
const clientTop = docEl.clientTop || body.clientTop || 0;
|
||||||
|
const scrollTop = window.pageYOffset || body.scrollTop;
|
||||||
|
const top = (box.top + scrollTop) - clientTop;
|
||||||
|
|
||||||
|
return {
|
||||||
|
left: Math.round(left),
|
||||||
|
top: Math.round(top),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getPointerPosition = (el, event) => {
|
||||||
|
const position = {};
|
||||||
|
const box = findElementPosition(el);
|
||||||
|
const boxW = el.offsetWidth;
|
||||||
|
const boxH = el.offsetHeight;
|
||||||
|
const boxY = box.top;
|
||||||
|
const boxX = box.left;
|
||||||
|
|
||||||
|
let pageY = event.pageY;
|
||||||
|
let pageX = event.pageX;
|
||||||
|
|
||||||
|
if (event.changedTouches) {
|
||||||
|
pageX = event.changedTouches[0].pageX;
|
||||||
|
pageY = event.changedTouches[0].pageY;
|
||||||
|
}
|
||||||
|
|
||||||
|
position.y = Math.max(0, Math.min(1, (pageY - boxY) / boxH));
|
||||||
|
position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));
|
||||||
|
|
||||||
|
return position;
|
||||||
|
};
|
@ -1,4 +1,3 @@
|
|||||||
import React, { Fragment } from 'react';
|
|
||||||
import { FormattedNumber } from 'react-intl';
|
import { FormattedNumber } from 'react-intl';
|
||||||
|
|
||||||
export const shortNumberFormat = number => {
|
export const shortNumberFormat = number => {
|
||||||
|
@ -15,9 +15,7 @@
|
|||||||
const rtlChars = /[\u0590-\u083F]|[\u08A0-\u08FF]|[\uFB1D-\uFDFF]|[\uFE70-\uFEFF]/mg;
|
const rtlChars = /[\u0590-\u083F]|[\u08A0-\u08FF]|[\uFB1D-\uFDFF]|[\uFE70-\uFEFF]/mg;
|
||||||
|
|
||||||
export function isRtl(text) {
|
export function isRtl(text) {
|
||||||
if (text.length === 0) {
|
if (text.length === 0) return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
text = text.replace(/(?:^|[^\/\w])@([a-z0-9_]+(@[a-z0-9\.\-]+)?)/ig, '');
|
text = text.replace(/(?:^|[^\/\w])@([a-z0-9_]+(@[a-z0-9\.\-]+)?)/ig, '');
|
||||||
text = text.replace(/(?:^|[^\/\w])#([\S]+)/ig, '');
|
text = text.replace(/(?:^|[^\/\w])#([\S]+)/ig, '');
|
||||||
@ -25,9 +23,7 @@ export function isRtl(text) {
|
|||||||
|
|
||||||
const matches = text.match(rtlChars);
|
const matches = text.match(rtlChars);
|
||||||
|
|
||||||
if (!matches) {
|
if (!matches) return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return matches.length / text.length > 0.3;
|
return matches.length / text.length > 0.3;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user