Skip to content

Commit f984307

Browse files
authored
chore: tidy up is_capture_event (#12693)
1 parent 4aa815f commit f984307

File tree

5 files changed

+17
-31
lines changed

5 files changed

+17
-31
lines changed

packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/** @import { ArrowFunctionExpression, Expression, FunctionDeclaration, FunctionExpression } from 'estree' */
22
/** @import { Attribute, DelegatedEvent, RegularElement } from '#compiler' */
33
/** @import { Context } from '../types' */
4-
import { DelegatedEvents, is_capture_event } from '../../../../constants.js';
4+
import { DelegatedEvents } from '../../../../constants.js';
5+
import { is_capture_event } from '../../../../utils.js';
56
import {
67
get_attribute_chunks,
78
get_attribute_expression,
@@ -205,9 +206,9 @@ function get_delegated_event(event_name, handler, context) {
205206
* @param {string} event_name
206207
*/
207208
function get_attribute_event_name(event_name) {
208-
if (is_capture_event(event_name, 'include-on')) {
209+
event_name = event_name.slice(2);
210+
if (is_capture_event(event_name)) {
209211
event_name = event_name.slice(0, -7);
210212
}
211-
event_name = event_name.slice(2);
212213
return event_name;
213214
}

packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
11
/** @import { Expression, Identifier } from 'estree' */
22
/** @import { Attribute, ClassDirective, DelegatedEvent, ExpressionMetadata, ExpressionTag, Namespace, OnDirective, RegularElement, StyleDirective, SvelteElement, SvelteNode } from '#compiler' */
33
/** @import { ComponentContext } from '../../types' */
4-
import { AttributeAliases, is_capture_event } from '../../../../../../constants.js';
5-
import { is_ignored } from '../../../../../state.js';
4+
import { AttributeAliases } from '../../../../../../constants.js';
5+
import { is_capture_event } from '../../../../../../utils.js';
66
import { get_attribute_expression } from '../../../../../utils/ast.js';
77
import * as b from '../../../../../utils/builders.js';
8-
import { DOMProperties, PassiveEvents } from '../../../../constants.js';
8+
import { PassiveEvents } from '../../../../constants.js';
99
import { serialize_get_binding } from '../../utils.js';
10-
import {
11-
serialize_event_handler,
12-
serialize_template_literal,
13-
serialize_update,
14-
serialize_update_assignment
15-
} from './utils.js';
10+
import { serialize_event_handler, serialize_template_literal, serialize_update } from './utils.js';
1611

1712
/**
1813
* Serializes each style directive into something like `$.set_style(element, style_property, value)`

packages/svelte/src/constants.js

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -116,19 +116,6 @@ export const DOMBooleanAttributes = [
116116
export const namespace_svg = 'http://www.w3.org/2000/svg';
117117
export const namespace_mathml = 'http://www.w3.org/1998/Math/MathML';
118118

119-
/**
120-
* @param {string} name
121-
* @param {"include-on" | "exclude-on"} [mode] - wether if name starts with `on` or `on` is excluded at this point
122-
*/
123-
export function is_capture_event(name, mode = 'exclude-on') {
124-
if (!name.endsWith('capture')) {
125-
return false;
126-
}
127-
return mode == 'exclude-on'
128-
? name !== 'gotpointercapture' && name !== 'lostpointercapture'
129-
: name !== 'ongotpointercapture' && name !== 'onlostpointercapture';
130-
}
131-
132119
// we use a list of ignorable runtime warnings because not every runtime warning
133120
// can be ignored and we want to keep the validation for svelte-ignore in place
134121
export const IGNORABLE_RUNTIME_WARNINGS = /** @type {const} */ ([

packages/svelte/src/internal/client/dom/elements/attributes.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
import { DEV } from 'esm-env';
22
import { hydrating } from '../hydration.js';
33
import { get_descriptors, get_prototype_of } from '../../../shared/utils.js';
4-
import {
5-
AttributeAliases,
6-
DelegatedEvents,
7-
is_capture_event,
8-
namespace_svg
9-
} from '../../../../constants.js';
4+
import { AttributeAliases, DelegatedEvents, namespace_svg } from '../../../../constants.js';
105
import { create_event, delegate } from './events.js';
116
import { add_form_reset_listener, autofocus } from './misc.js';
127
import * as w from '../../warnings.js';
138
import { LOADING_ATTR_SYMBOL } from '../../constants.js';
149
import { queue_idle_task, queue_micro_task } from '../task.js';
10+
import { is_capture_event } from '../../../../utils.js';
1511

1612
/**
1713
* The value/checked attribute in the template actually corresponds to the defaultValue property, so we need

packages/svelte/src/utils.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,10 @@ const RESERVED_WORDS = [
9898
export function is_reserved(word) {
9999
return RESERVED_WORDS.includes(word);
100100
}
101+
102+
/**
103+
* @param {string} name
104+
*/
105+
export function is_capture_event(name) {
106+
return name.endsWith('capture') && name !== 'gotpointercapture' && name !== 'lostpointercapture';
107+
}

0 commit comments

Comments
 (0)