The vanilla alternative for writing JSX-based React applications
git clone git://soophie.de/figure
17
* @typedef {ReactCreateFunction} DynFunction18
*/20
const EVENTS = [21
'onCopy',22
'onCut',23
'onPaste',24
'onCompositionEnd',25
'onCompositionStart',26
'onCompositionUpdate',27
'onKeyDown',28
'onKeyPress',29
'onKeyUp',30
'onFocus',31
'onBlur',32
'onChange',33
'onInput',34
'onInvalid',35
'onReset',36
'onSubmit',37
'onError',38
'onLoad',39
'onClick',40
'onContextMenu',41
'onDoubleClick',42
'onDrag',43
'onDragEnd',44
'onDragEnter',45
'onDragExit',46
'onDragLeave',47
'onDragOver',48
'onDragStart',49
'onDrop',50
'onMouseDown',51
'onMouseEnter',52
'onMouseLeave',53
'onMouseMove',54
'onMouseOut',55
'onMouseOver',56
'onMouseUp',57
'onPointerDown',58
'onPointerMove',59
'onPointerUp',60
'onPointerCancel',61
'onGotPointerCapture',62
'onLostPointerCapture',63
'onPointerEnter',64
'onPointerLeave',65
'onPointerOver',66
'onPointerOut',67
'onSelect',68
'onTouchCancel',69
'onTouchEnd',70
'onTouchMove',71
'onTouchStart',72
'onScroll',73
'onWheel',74
'onAbort',75
'onCanPlay',76
'onCanPlayThrough',77
'onDurationChange',78
'onEmptied',79
'onEncrypted',80
'onEnded',81
'onLoadedData',82
'onLoadedMetadata',83
'onLoadStart',84
'onPause',85
'onPlay',86
'onPlaying',87
'onProgress',88
'onRateChange',89
'onSeeked',90
'onSeeking',91
'onStalled',92
'onSuspend',93
'onTimeUpdate',94
'onVolumeChange',95
'onWaiting',96
'onAnimationStart',97
'onAnimationEnd',98
'onAnimationIteration',99
'onTransitionEnd',100
'onToggle',101
];103
/**104
* Initializes the figure framework.105
*
243
const values = feed(slice, refs);244
const value = values.length == 1 ? values[0] : values;245
let attr = key;163
const match = /^(\w+):(\w+)$/.exec(attr);164
if (match) {246
const eventMatch = /^(\w+):(\w+)$/.exec(attr);247
if (eventMatch) {248
// camel case attribute name166
const [, pre, name] = match;167
attr = `${pre}${name.substring(0, 1).toUpperCase()}${name.substring(1)}`;249
const [, pre, name] = eventMatch;250
for (const event of EVENTS) {251
// find matching event name252
if (`${pre}${name}` === event.toLowerCase()) {253
attr = event;254
break;255
}256
}257
}258
props[attr] = value instanceof Array ? value.join('') : value;259
}