(emitter, name, event = name)
| 1132 | } |
| 1133 | |
| 1134 | function defineEventHandler(emitter, name, event = name) { |
| 1135 | // 8.1.5.1 Event handlers - basically `on[eventName]` attributes |
| 1136 | const propName = `on${name}`; |
| 1137 | function get() { |
| 1138 | validateThisInternalField(this, kHandlers, 'EventTarget'); |
| 1139 | return this[kHandlers]?.get(event)?.handler ?? null; |
| 1140 | } |
| 1141 | ObjectDefineProperty(get, 'name', { |
| 1142 | __proto__: null, |
| 1143 | value: `get ${propName}`, |
| 1144 | }); |
| 1145 | |
| 1146 | function set(value) { |
| 1147 | validateThisInternalField(this, kHandlers, 'EventTarget'); |
| 1148 | let wrappedHandler = this[kHandlers]?.get(event); |
| 1149 | if (wrappedHandler) { |
| 1150 | if (typeof wrappedHandler.handler === 'function') { |
| 1151 | this[kEvents].get(event).size--; |
| 1152 | const size = this[kEvents].get(event).size; |
| 1153 | this[kRemoveListener](size, event, wrappedHandler.handler, false); |
| 1154 | } |
| 1155 | wrappedHandler.handler = value; |
| 1156 | if (typeof wrappedHandler.handler === 'function') { |
| 1157 | this[kEvents].get(event).size++; |
| 1158 | const size = this[kEvents].get(event).size; |
| 1159 | this[kNewListener](size, event, value, false, false, false, false); |
| 1160 | } |
| 1161 | } else { |
| 1162 | wrappedHandler = makeEventHandler(value); |
| 1163 | this.addEventListener(event, wrappedHandler); |
| 1164 | } |
| 1165 | this[kHandlers].set(event, wrappedHandler); |
| 1166 | } |
| 1167 | ObjectDefineProperty(set, 'name', { |
| 1168 | __proto__: null, |
| 1169 | value: `set ${propName}`, |
| 1170 | }); |
| 1171 | |
| 1172 | ObjectDefineProperty(emitter, propName, { |
| 1173 | __proto__: null, |
| 1174 | get, |
| 1175 | set, |
| 1176 | configurable: true, |
| 1177 | enumerable: true, |
| 1178 | }); |
| 1179 | } |
| 1180 | |
| 1181 | module.exports = { |
| 1182 | Event, |
no outgoing calls
no test coverage detected
searching dependent graphs…