Skip to content

Instantly share code, notes, and snippets.

View borispoehland's full-sized avatar

Boris Pöhland borispoehland

View GitHub Profile
const UA = req.headers['user-agent'];
const isMobile = Boolean(UA.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile|WPDesktop/i));
export const getTopY = (element: HTMLElement, downOffset: number): number => {
return element.getBoundingClientRect().top + window.pageYOffset - downOffset;
};
@borispoehland
borispoehland / withLoadingSpinner.js
Last active February 18, 2021 14:15
Sample HOC for React Typescript
import React, { FC, FunctionComponent } from 'react';
import { LoadingSpinner } from '@components/LoadingSpinner';
interface IProps {
isLoading: boolean;
}
// eslint-disable-next-line @typescript-eslint/ban-types, react/display-name
const WithLoadingSpinner = <P extends object>(Component: FunctionComponent<P>): FC<P & IProps> => ({
isLoading,
import { useEffect, useState } from 'react';
interface IProps {
imagesToLoad: string[],
}
const useImagesAreLoaded = ({ imagesToLoad }: IProps): boolean => {
const [loadedTilesCount, setLoadedTilesCount] = useState(0);
useEffect((): void => {
import React, {
useState,
useLayoutEffect
} from 'react';
import ReactDOM from 'react-dom';
const BlinkyRender = () => {
const [value, setValue] = useState(0);
useLayoutEffect(() => {
fetchCsv() {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", require("path/to/local/file.txt"), false);
rawFile.onreadystatechange = () => {
if (rawFile.readyState === 4) {
if (rawFile.status === 200 || rawFile.status === 0) {
var allText = rawFile.responseText;
Papa.parse(allText, {
complete: this.setData, // in this case, set the text as react state