Skip to content

Instantly share code, notes, and snippets.

View erkobridee's full-sized avatar

Erko Bridee erkobridee

View GitHub Profile
@erkobridee
erkobridee / multiline_regexp_sample.js
Last active November 10, 2021 16:57
example of how to write a multiline RegExp and keep under row max length lint rules
const DEVICES_REGEXP = new RegExp([
/Android|webOS/,
/|iPhone|iPad|iPod/,
/|BB10|BlackBerry/,
/|IEMobile|Opera Mini/,
/|Mobile|mobile/
].map(function(r) {return r.source}).join(''), 'i');
// output: /Android|webOS|iPhone|iPad|iPod|BB10|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i
@erkobridee
erkobridee / isElementVisible.js
Last active May 6, 2019 06:47
a way to detect if a given element is on the visible area of the page
function isElementVisible(el, fullVisible) {
// efp - element from point
function efp(x, y) {
return window.document.elementFromPoint(x, y);
}
function getVWidth() {
return window.innerWidth || window.document.documentElement.clientWidth;
}
@erkobridee
erkobridee / useWait.ts
Created April 24, 2019 12:55
react hook for safe use setInterval or setTimeout
import * as React from 'react';
export type TFunction = (...args: any[]) => any;
/**
* common code to define useTimeout or useInterval hooks
*
* @param waitFunction
* @param cleanWaitFunction
*/
@erkobridee
erkobridee / AudioPlayerHelper.ts
Created April 19, 2019 12:24
a workaround to be able to play sounds anywhere (coded to be able to play sounds on iOS devices)
// empty sound
const TEST_AUDIO_MP3 = [
'data:audio/mpeg;base64',
',/+MYxAAAAANIAUAAAASEEB/jwOFM/0MM/90b/+RhST//w4NFwOjf',
'///PZu//',
'//9lns5GFDv//l9GlUIEEIAAAgIg8Ir/JGq3/',
'+MYxDsLIj5QMYcoAP0dv9HIjUcH//yYSg+CIbkGP//',
'8w0bLVjUP///3Z0x5QCAv/yLjwtGKTEFNRTMuOTeqqqqqqqqqqqqq/',
'+MYxEkNmdJkUYc4AKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq',
'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq'
import * as React from 'react';
type TFunction = (...args: any[]) => any;
/**
* safe way to use window.setTimeout using a hook to handle it
*
* @param {TFunction} callback to be executed by the timeout
* @param {number} delay time to the execution
* @param {boolean} autorun flag that says if should start running right after call the hook - default true
import * as React from 'react';
export type TFunction = (...args: any[]) => any;
/**
* safe way to use window.setInterval using a hook to handle it
*
* @param {TFunction} callback to be executed on each interval
* @param {number} delay time between the executions
* @param {boolean} autorun flag that says if should start running right after call the hook - default true
import * as React from 'react';
export interface IClickOutsideProps {
onClick: () => void;
/** element to add the click event listener, default selector is body */
parentTargetQuerySelector?: string;
}
/**
* Function Component to re-use the behavior of click outside
import * as React from 'react';
/**
* extend the React.useState to have the state referente, so it will be possible to use its value
* inside of other callbacks
*
* @param {T} initialValue
*
* @return {[T, React.MutableRefObject<T>, React.Dispatch<React.SetStateAction<T>>]} array
*/
type TJSObject = { [key: string]: any };
type TJSValue = TJSObject | any;
type TArrayFilter<T> = (x: T) => boolean;
const TO_STRING = {}.toString;
const isObjectBasicCheck = <T extends object>(value: any): value is T => value !== null && typeof value === 'object';
@erkobridee
erkobridee / utils_values.js
Created January 25, 2019 21:06
nodejs script to manipulate and generate random data (uses the lodash and the moment libs)
'use strict';
var _ = require('lodash'),
hash = require('./utils_hash')
;
//----------------------------------------------------------------------------//
var SERVER_DATE_FORMAT = 'YYYY-MM-DD';
module.exports.SERVER_DATE_FORMAT = SERVER_DATE_FORMAT;