|
|
|
@ -1,6 +1,9 @@
|
|
|
|
|
import Block from '../../Block';
|
|
|
|
|
import EventHandler from '../../../nodes/EventHandler';
|
|
|
|
|
import { x } from 'code-red';
|
|
|
|
|
import { x, p } from 'code-red';
|
|
|
|
|
|
|
|
|
|
const TRUE = x`true`;
|
|
|
|
|
const FALSE = x`false`;
|
|
|
|
|
|
|
|
|
|
export default function add_event_handlers(
|
|
|
|
|
block: Block,
|
|
|
|
@ -13,33 +16,24 @@ export default function add_event_handlers(
|
|
|
|
|
if (handler.modifiers.has('stopPropagation')) snippet = x`@stop_propagation(${snippet})`;
|
|
|
|
|
if (handler.modifiers.has('self')) snippet = x`@self(${snippet})`;
|
|
|
|
|
|
|
|
|
|
// let opts_string = '';
|
|
|
|
|
|
|
|
|
|
// if (block.renderer.options.dev) {
|
|
|
|
|
// if (handler.modifiers.has('stopPropagation')) {
|
|
|
|
|
// opts_string = ', true';
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// if (handler.modifiers.has('preventDefault')) {
|
|
|
|
|
// opts_string = ', true' + opts_string;
|
|
|
|
|
// } else if (opts_string) {
|
|
|
|
|
// opts_string = ', false' + opts_string;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
const args = [];
|
|
|
|
|
|
|
|
|
|
// const opts = ['passive', 'once', 'capture'].filter(mod => handler.modifiers.has(mod));
|
|
|
|
|
// if (opts.length) {
|
|
|
|
|
// opts_string = (opts.length === 1 && opts[0] === 'capture')
|
|
|
|
|
// ? ', true'
|
|
|
|
|
// : `, { ${opts.map(opt => `${opt}: true`).join(', ')} }`;
|
|
|
|
|
// } else if (opts_string) {
|
|
|
|
|
// opts_string = ', false' + opts_string;
|
|
|
|
|
// }
|
|
|
|
|
const opts = ['passive', 'once', 'capture'].filter(mod => handler.modifiers.has(mod));
|
|
|
|
|
if (opts.length) {
|
|
|
|
|
args.push((opts.length === 1 && opts[0] === 'capture')
|
|
|
|
|
? TRUE
|
|
|
|
|
: x`{ ${opts.map(opt => p`${opt}: true`)} }`);
|
|
|
|
|
} else if (block.renderer.options.dev) {
|
|
|
|
|
args.push(FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO modifiers
|
|
|
|
|
if (block.renderer.options.dev) {
|
|
|
|
|
args.push(handler.modifiers.has('stopPropagation') ? TRUE : FALSE);
|
|
|
|
|
args.push(handler.modifiers.has('preventDefault') ? TRUE : FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
block.event_listeners.push(
|
|
|
|
|
x`@listen(${target}, "${handler.name}", ${snippet})`
|
|
|
|
|
x`@listen(${target}, "${handler.name}", ${snippet}, ${args})`
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|