Skip to content

Instantly share code, notes, and snippets.

@enten
enten / aria-label-reflects-content.directive.ts
Last active March 4, 2023 15:23
AriaLabelReflectsContentDirective
import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, OnDestroy } from '@angular/core';
import { NEVER, Observable, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Directive({
selector: '[ariaLabelReflectsContent]',
exportAs: 'ariaLabelReflectsContent',
standalone: true,
})
export class AriaLabelReflectsContentDirective implements AfterViewInit, OnDestroy {
@enten
enten / encrypt_psw.js
Created October 10, 2022 16:04
Original PHP function from WordPress PrivateContent (users_manag.php:930):
// Original PHP function from WordPress PrivateContent (users_manag.php:930):
//
// public function encrypt_psw($psw) {
// return base64_encode( serialize( array(base64_encode($psw), md5(sha1(10091988*strlen($psw))) )));
// }
var Base64 = require('js-base64').Base64;
var PHPSer = require('php-serialize');
var crypto = require('crypto');
var md5 = require('md5');
@enten
enten / npm-install-dumber.js
Created October 10, 2022 14:46
Install npm dependencies in a lazy-dumb-one-by-one way
// Copyright (c) 2022 Steven Enten. All rights reserved. Licensed under the MIT license.
/**
* Install npm dependencies in a lazy-dumb-one-by-one way
*
* Usage: node npm-install-dumber.js [<package-name|package-type> ...]
*
* If `npm install` never succeeds: try to run this script as much as necessary.
*
* @example
@enten
enten / fromImageLoadEvents.ts
Created April 21, 2019 08:53
Create observable that emits when image load event occurred on element.
/**
* Create observable that emits when image load event occurred on element.
*
* @param element
* @returns Observable on element's image load events
*/
export function fromImageLoadEvents(element: HTMLElement): Observable<HTMLImageElement> {
return new Observable<HTMLImageElement>(observable => {
const images: HTMLImageElement[] = [];
let loadListener: (event: ProgressEvent) => void;
@enten
enten / embark-angular-utils.js
Last active October 7, 2018 13:55
embark-angular-template: angular webpack config builder for embark
const fs = require('fs');
const path = require('path');
const glob = require('glob');
const rimraf = require('rimraf');
const { filter } = require('rxjs/operators');
const { Architect } = require('@angular-devkit/architect');
const {
basename,
@enten
enten / atomik.scss
Last active June 30, 2018 20:10
atomik: responsive design in an atomic way
//
// atomik: responsive design in an atomic way.
//
// When responsive design must be or becomes an atomic job:
// let's atomik do the dirty work with a pretty-sugar api.
//
//
@enten
enten / compose2.js
Last active January 2, 2018 20:41
Stamp factory which allows extra properties
const assign = require('@stamp/core/assign')
const compose = require('@stamp/compose')
const isStamp = require('@stamp/is/stamp')
const merge = require('@stamp/core/merge')
const STAMP_DESCRIPTOR_VOID = {
'methods': {},
'properties': {},
'deepProperties': {},
'propertyDescriptors': {},
@enten
enten / jdg-tcg-cartes.json
Last active October 10, 2022 18:36
Joueur du Grenier : Trading Card Game
[
{
"numero": 1,
"type": "invocation",
"nom": "Joueur Du Grenier",
"famille": "humain",
"illustration": null,
"description": "Une carte originale",
"descriptionDetaillee": "Saviez-vous que cette chemise a été achetée dans un magasin et que du coup cette carte n'a aucun effet spécial ?",
"attaque": 3,
@enten
enten / accessor.js
Last active November 22, 2017 23:42
/** Usage */
const Accessor = require('./accessor')
const obj = {}
Accessor.in(obj).under('options')
.add('foo.bar', () => 'fallback foobar')
//.add('what.you.need', () => 'fallback value')
// { defaultFooBar: [Function: value],
@enten
enten / adsl3.js
Last active August 14, 2017 04:23
const nodeNotifier = require('node-notifier')
const supportsColor = require('supports-color')
const {
inspect,
format
} = require('util')
const DEFAULT = {
colors: !!supportsColor,