Skip to content

Instantly share code, notes, and snippets.

View vasilionjea's full-sized avatar
🌎
Nullius in verba

Vasili Onjea vasilionjea

🌎
Nullius in verba
View GitHub Profile
function test() {
const nums = [1, 2, 3];
for (let i = 0; i < 60; i++) {
const first = nums[0];
const mid = nums[1];
nums.splice(2, 1); // delete last number
const newMid = (first + mid) / 2;
@vasilionjea
vasilionjea / README.md
Created May 30, 2024 21:20 — forked from alexanderson1993/README.md
Refactor this custom React Hook

React Hook Refactor

I can think of at least three ways this hook can be refactored which makes it easier to read and more performant. This can be done without adding new dependencies or changing the signature of the context provider or hook, so it only refactors the internal behavior.

I'd love to see how anyone else would refactor this.

import React, { useState, useEffect, useCallback } from 'react';
const flipMapKeys = (mapObj: Map<unknown, unknown> | null) => {
if (!mapObj) return new Map();
return new Map([...mapObj].map(([key, value]) => [value, key]));
};
/**
* useCachedRects hook
*/
import Benchmark from 'benchmark';
/**
* -------------------------------------------
* Utils
* -------------------------------------------
*/
function isNone(obj: unknown): boolean {
return obj === null || obj === undefined;
}
@vasilionjea
vasilionjea / rock-paper-scissors.js
Last active November 24, 2022 18:27
Mentoring juniors through rock, paper, scissors
/**
* -----------------------------------------------------------------
* It works version
* -----------------------------------------------------------------
*/
const computerChoiceDisplay = document.getElementById('computer-choice')
const playerChoiceDisplay = document.getElementById('player-choice')
const resultDisplay = document.getElementById('result')
const possibleChoices = document.querySelectorAll('button')
let playerChoice

JavaScript Observables

Notes on Observables.

/**
 * A simple Observable class with `map` and `filter` operators. 
 * 
 * When instantiated, Observable classes don't do anything until they 
 * are "subscribed" to.
@vasilionjea
vasilionjea / controllers.application.js
Created January 2, 2019 05:36
{{each}} Uncaught Error: unreachable
import Ember from 'ember';
export default Ember.Controller.extend({
buttons: [
{id: 1, text: 'button 1'},
{id: 2, text: 'button 2'},
{id: 3, text: 'button 3'}
],
});
@vasilionjea
vasilionjea / components.my-component.js
Created October 11, 2018 00:22
Integration tests - renderWithDefaults
import Ember from 'ember';
export default Ember.Component.extend({
});
@vasilionjea
vasilionjea / controllers.application.js
Created September 25, 2018 22:16
Computed Property for "wrapped items"
import Ember from 'ember';
export default Ember.Controller.extend({
canCreate: true,
hasMax: true,
items: [
{ isEnabled: true, name: 'duplicate'},
{ isEnabled: true, name: 'edit'},
],
@vasilionjea
vasilionjea / controllers.application.js
Last active September 13, 2018 07:29
Epxand a11y accordion panel dynamically via DOM event
import Ember from 'ember';
export default Ember.Controller.extend({
isValid: false,
actions: {
submit() {
if (this.get('isValid') === false) {
this._openFirstPanel();
}