Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | 1x 1x 30x 10x 10x 429x 429x 152x 277x 277x 306x 306x 306x 246x 60x 2x 2x 2x 8x 8x 8x 8x 314x 314x 1x 1x 314x 1x | const DEFINED_CURSORS = Symbol('DefinedCursors');
const STANDARD_CURSORS = new Set([
'alias',
'all-scroll',
'auto',
'cell',
'col-resize',
'context-menu',
'copy',
'crosshair',
'default',
'e-resize',
'ew-resize',
'grab',
'grabbing',
'help',
'move',
'ne-resize',
'nesw-resize',
'no-drop',
'none',
'not-allowed',
'n-resize',
'ns-resize',
'nw-resize',
'nwse-resize',
'pointer',
'progress',
'row-resize',
'se-resize',
's-resize',
'sw-resize',
'text',
'vertical-text',
'wait',
'w-resize',
'zoom-in',
'zoom-out',
]);
export default class MouseCursor {
private name: string;
private fallback: MouseCursor | undefined;
constructor(name: string, fallback?: MouseCursor | undefined) {
this.name = name + '';
this.fallback = fallback;
}
getName(): string {
return this.name + '';
}
addFallbackStyleProperty(style: string): string {
const { fallback } = this;
if (fallback instanceof MouseCursor) {
return `${style}, ${fallback.getStyleProperty()}`;
}
return style + '';
}
getStyleProperty(): string {
return this.addFallbackStyleProperty(this.name) + '';
}
static getDefinedCursor(name: string): MouseCursor | undefined {
const definedCursors = getDefinedCursors(
// @ts-ignore
MouseCursor as Record<symbol, Map<string, MouseCursor>>,
DEFINED_CURSORS
);
let mouseCursor = definedCursors.get(name);
if (mouseCursor instanceof MouseCursor) {
return mouseCursor;
}
if (STANDARD_CURSORS.has(name)) {
mouseCursor = new MouseCursor(name);
definedCursors.set(name, mouseCursor);
return mouseCursor;
}
}
static setDefinedCursor(name: string, cursor: MouseCursor): boolean {
Eif (cursor instanceof MouseCursor) {
const definedCursors = getDefinedCursors(
// @ts-ignore
MouseCursor as Record<symbol, Map<string, MouseCursor>>,
DEFINED_CURSORS
);
definedCursors.set(name, cursor);
return true;
}
return false;
}
}
/*
* Helpers
*/
function getDefinedCursors(
context: Record<symbol, Map<string, MouseCursor>>,
symbol: symbol
): Map<string, MouseCursor> {
let definedCursors = context[symbol];
if (!(definedCursors instanceof Map)) {
definedCursors = new Map();
Object.defineProperty(context, symbol, { value: definedCursors });
}
return definedCursors;
}
const standardCursorNames = STANDARD_CURSORS.values();
export { standardCursorNames };
|