Skip to content

Instantly share code, notes, and snippets.

View danybeltran's full-sized avatar

Dany Beltran danybeltran

  • El Salvador
View GitHub Profile
@danybeltran
danybeltran / [email protected]
Last active May 4, 2022 16:57
atomic-state for browsers
"use strict"
/** @license Atomic State
* Copyright (c) Dany Beltran
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var ReflectOwnKeys,
R = "object" == typeof Reflect ? Reflect : null,
@danybeltran
danybeltran / main.js
Last active February 1, 2022 17:42
Observer pattern in javascript
const { randomUUID } = require("crypto")
/**
* Create an observable value
*/
class Observable {
observableValue
subscribers = {}
/**
@danybeltran
danybeltran / atomic-state.min.js
Last active June 27, 2022 07:25
Minified Atomic State for production apps
/** @license Atomic State
* Copyright (c) Dany Beltran
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/ /**
* An observable class that uses the observer pattern
*/ class Observervable{constructor(){this.suscribers={}}async addSubscriber(a,b){a in this.suscribers||(this.suscribers[a]={});let c=Object.keys(this.suscribers[a]).length+1;"__proto__"!==a&&"prototype"!==a?this.suscribers[a][c]=b:console.warn('"prototype" and "__proto__" are not valid message names')}async removeSubscriber(a,c){for(let b in this.suscribers[a])this.suscribers[a][b]===c&&delete this.suscribers[a][b]}async update(a,b){for(let c in this.suscribers[a])await this.suscribers[a][c](b)}}function createObserver(){let a=new Observervable;return{observer:a,notify:function(b,c,d){a.update(b,{storeName:b,hookCall:c,payload:d})}}}const{createContext:a,useCallback:b,useContext:c,useEffect:d,useMemo:e,useRef:f,useState:g}=React,atomObservables={},defaultAtomsValue
@danybeltran
danybeltran / data.csv
Last active October 1, 2021 16:16
data for graphics
Orders 10 30-01-2021
Persons 20 30-01-2021