jdenticon
Version:
Javascript identicon generator
270 lines (247 loc) • 12.2 kB
TypeScript
/// <reference path="env.d.ts"/>
/**
* Jdenticon
* https://github.com/dmester/jdenticon
* Copyright © Daniel Mester Pirttijärvi
*/
declare global {
interface JdenticonConfig {
/**
* Limits the possible hues in generated icons. The hues are specified as an array of hues in degrees. If the
* option is omitted or an empty array is specified, all hues are allowed.
*/
hues?: number[],
/**
* Specifies the lightness of the generated icon.
*/
lightness?: {
/**
* Specifies the lightness range of colored shapes of an icon. The range is expressed as an array
* containing two numbers, representing the minimum and maximum lightness in the range [0.0, 1.0].
*/
color?: number[],
/**
* Specifies the lightness range of grayscale shapes of an icon. The range is expressed as an array
* containing two numbers, representing the minimum and maximum lightness in the range [0.0, 1.0].
*/
grayscale?: number[]
},
/**
* Specifies the saturation of the generated icon.
*
* For backward compatibility a single number can be specified instead of a `{ color, grayscale }`
* object. This single number refers to the saturation of colored shapes.
*/
saturation?: {
/**
* Specifies the saturation of originally colored shapes of an icon. The saturation is expressed as a
* number in the range [0.0, 1.0].
*/
color?: number,
/**
* Specifies the saturation of originally grayscale shapes of an icon. The saturation is expressed as a
* number in the range [0.0, 1.0].
*/
grayscale?: number
} | number,
/**
* Specifies the padding surrounding the icon in percents in the range [0.0, 0.5).
*/
padding?: number;
/**
* Specifies the background color to be rendered behind the icon.
*
* Supported syntaxes are:
* * `"#rgb"`
* * `"#rgba"`
* * `"#rrggbb"`
* * `"#rrggbbaa"`
*/
backColor?: string,
/**
* Specifies when icons will be rendered.
*
* * `"never"` – icons are never rendered automatically. You need to call `jdenticon.update()` manually to
* render identicons.
*
* * `"once"` – icons are rendered once the page has loaded. Any dynamically inserted or modified icons will
* not be rendered unless `jdenticon.update()` is manually called.
*
* * `"observe"` – icons are rendered upon page load, and the DOM is monitored for new icons using a
* `MutationObserver`. Use this if icons are inserted dynamically, e.g. by using Angular, React or
* VanillaJS. This option behaves as `"once"` in IE<11.
*
* @remarks
* This option has no effect in Node environments.
*/
replaceMode?: "never" | "once" | "observe"
}
interface Jdenticon {
/**
* Updates all canvas elements with the `data-jdenticon-hash` or `data-jdenticon-value` attribute.
*
* @remarks
* This method is only available in the browser. Calling this method on Node.js will throw an error.
*/
(): void;
/**
* Updates the identicon in the specified canvas or svg elements.
*
* @remarks
* This method is only available in the browser. Calling this method on Node.js will throw an error.
*
* @param elementOrSelector Specifies the container in which the icon is rendered as a DOM element of the type
* `<svg>` or `<canvas>`, or a CSS selector to such an element.
* @param hash Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
* `data-jdenticon-value` attribute will be evaluated.
* @param config Optional configuration. If specified, this configuration object overrides any global
* configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
* specified in place of a configuration object.
*/
update(elementOrSelector: Element | string, hashOrValue?: any, config?: JdenticonConfig | number): void;
/**
* Updates the identicon in the specified `<canvas>` elements.
*
* @remarks
* This method is only available in the browser. Calling this method on Node.js will throw an error.
*
* @param elementOrSelector Specifies the container in which the icon is rendered as a DOM element of the type
* `<canvas>`, or a CSS selector to such an element.
* @param hashOrValue Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
* `data-jdenticon-value` attribute will be evaluated.
* @param config Optional configuration. If specified, this configuration object overrides any
* global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
* specified in place of a configuration object.
*/
updateCanvas(elementOrSelector: Element | string, hashOrValue?: any, config?: JdenticonConfig | number): void;
/**
* Updates the identicon in the specified `<svg>` elements.
*
* @remarks
* This method is only available in the browser. Calling this method on Node.js will throw an error.
*
* @param elementOrSelector Specifies the container in which the icon is rendered as a DOM element of the type
* `<svg>`, or a CSS selector to such an element.
* @param hashOrValue Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
* `data-jdenticon-value` attribute will be evaluated.
* @param config Optional configuration. If specified, this configuration object overrides any
* global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
* specified in place of a configuration object.
*/
updateSvg(elementOrSelector: Element | string, hashOrValue?: any, config?: JdenticonConfig | number): void;
/**
* Draws an identicon to a context.
* @param ctx Canvas context on which the icon will be drawn at location (0, 0).
* @param hashOrValue A hexadecimal hash string or any value that will be hashed by Jdenticon.
* @param size Icon size in pixels.
* @param config Optional configuration. If specified, this configuration object overrides any global
* configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
* specified in place of a configuration object.
*/
drawIcon(
ctx: JdenticonCompatibleCanvasRenderingContext2D,
hashOrValue: any,
size: number,
config?: JdenticonConfig | number): void;
/**
* Draws an identicon as an SVG string.
* @param hashOrValue A hexadecimal hash string or any value that will be hashed by Jdenticon.
* @param size Icon size in pixels.
* @param config Optional configuration. If specified, this configuration object overrides any global
* configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
* specified in place of a configuration object.
* @returns SVG string
*/
toSvg(hashOrValue: any, size: number, config?: JdenticonConfig | number): string;
/**
* Draws an identicon as PNG.
*
* @remarks
* This method is not available in the browser.
*
* @param hashOrValue A hexadecimal hash string or any value that will be hashed by Jdenticon.
* @param size Icon size in pixels.
* @param config Optional configuration. If specified, this configuration object overrides any global
* configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
* specified in place of a configuration object.
* @returns PNG data
*/
toPng(hashOrValue: any, size: number, config?: JdenticonConfig | number): Buffer;
/**
* Gets the current global style configuration.
*/
configure(): JdenticonConfig;
/**
* Specifies the color options for the generated icons. This is the only supported method of setting identicon
* styles when used in a Node environment.
*
* In browsers {@link jdenticon_config} is the prefered way of setting an identicon style to avoid a race
* condition where the style is set before the Jdenticon lib has loaded, leading to an unhandled error.
*/
configure(newConfig: JdenticonConfig): JdenticonConfig;
/**
* Specifies the version of the Jdenticon package in use.
*/
readonly version: string;
}
/**
* This is a subset of `HTMLCanvasElement` to allow using incomplete canvas implementations,
* like `canvas-renderer`.
*/
interface JdenticonCompatibleCanvas {
// HTMLCanvasElement
readonly height: number;
readonly width: number;
getContext(contextId: "2d"): JdenticonCompatibleCanvasRenderingContext2D | null;
}
/**
* This is a subset of `CanvasRenderingContext2D` to allow using incomplete canvas implementations,
* like `canvas-renderer`.
*/
interface JdenticonCompatibleCanvasRenderingContext2D {
// CanvasRenderingContext2D
readonly canvas: JdenticonCompatibleCanvas;
// CanvasDrawPath
beginPath(): void;
fill(): void;
// CanvasFillStrokeStyles
fillStyle: any;
// CanvasPath
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
closePath(): void;
lineTo(x: number, y: number): void;
moveTo(x: number, y: number): void;
// CanvasRect
clearRect(x: number, y: number, w: number, h: number): void;
fillRect(x: number, y: number, w: number, h: number): void;
// CanvasState
restore(): void;
save(): void;
// CanvasTransform
translate(x: number, y: number): void;
}
interface JQuery {
/**
* Renders an indenticon for all matching supported elements.
*
* @param hashOrValue A hexadecimal hash string or any value that will be hashed by Jdenticon. If not
* specified the `data-jdenticon-hash` and `data-jdenticon-value` attributes of each element will be
* evaluated.
* @param config Optional configuration. If specified, this configuration object overrides any global
* configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
* specified in place of a configuration object.
*/
jdenticon(hashOrValue?: any, config?: JdenticonConfig | number): void;
}
interface Window {
/**
* Specifies options for generated identicons.
*
* See also {@link jdenticon.config} for Node usage.
*/
jdenticon_config?: JdenticonConfig;
}
}
declare var jdenticon: Jdenticon;
export = jdenticon;
export as namespace jdenticon;