Skip to content

Commit 9a2e375

Browse files
committed
chore: replace addEventListener with on from svelte/events
1 parent 2158d55 commit 9a2e375

25 files changed

Lines changed: 127 additions & 138 deletions

File tree

.changeset/silly-pants-know.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
'@svelte-put/clickoutside': patch
3+
'@svelte-put/dragscroll': patch
4+
'@svelte-put/shortcut': patch
5+
'@svelte-put/movable': patch
6+
'@svelte-put/copy': patch
7+
'@svelte-put/toc': patch
8+
---
9+
10+
defer events to Svelte internal delegation system where applicable

packages/avatar/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
"extends": "../../package.json"
8282
},
8383
"peerDependencies": {
84-
"svelte": "^5.0.0-next.1"
84+
"svelte": "^5.0.0-next.152"
8585
},
8686
"dependencies": {
8787
"md5": "^2.3.0"

packages/clickoutside/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"@internals/tsconfig": "workspace:*"
5555
},
5656
"peerDependencies": {
57-
"svelte": "^5.0.0-next.1"
57+
"svelte": "^5.0.0-next.152"
5858
},
5959
"volta": {
6060
"extends": "../../package.json"

packages/clickoutside/src/clickoutside.js

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { on } from 'svelte/events';
12
/**
23
* Dispatch a `clickoutside` {@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent | CustomEvent } on click outside of node
34
* @example
@@ -51,7 +52,7 @@
5152
* @returns {import('./public').ClickOutsideActionReturn}
5253
*/
5354
export function clickoutside(node, param = { enabled: true }) {
54-
let { enabled, eventType, nodeForEvent, options, capture } = resolveConfig(param);
55+
let { enabled, eventType, nodeForEvent, options } = resolveConfig(param);
5556

5657
/**
5758
* @param {Event} event
@@ -63,18 +64,20 @@ export function clickoutside(node, param = { enabled: true }) {
6364
}
6465
}
6566

67+
/** @type {undefined | (() => void)} */
68+
let off;
6669
if (param.enabled !== false) {
67-
nodeForEvent.addEventListener(eventType, handle, options);
70+
off = on(/** @type {Element} */(nodeForEvent), eventType, handle, options);
6871
}
6972

7073
return {
7174
update(update) {
72-
nodeForEvent.removeEventListener(eventType, handle, capture);
73-
({ enabled, eventType, nodeForEvent, options, capture } = resolveConfig(update));
74-
if (enabled) nodeForEvent.addEventListener(eventType, handle, options);
75+
off?.();
76+
({ enabled, eventType, nodeForEvent, options } = resolveConfig(update));
77+
if (enabled) off = on(/** @type {Element} */(nodeForEvent), eventType, handle, options);
7578
},
7679
destroy() {
77-
nodeForEvent.removeEventListener(eventType, handle, capture);
80+
off?.();
7881
},
7982
};
8083
}
@@ -86,17 +89,17 @@ export function clickoutside(node, param = { enabled: true }) {
8689
* enabled: boolean;
8790
* nodeForEvent: Element | Document;
8891
* eventType: string;
89-
* options: boolean | AddEventListenerOptions | undefined;
90-
* capture: boolean | undefined;
92+
* options?: AddEventListenerOptions;
9193
* }}
9294
*/
9395
export function resolveConfig(param = {}) {
9496
return {
9597
enabled: param.enabled ?? true,
9698
nodeForEvent: param.limit?.parent ?? document,
9799
eventType: param.event ?? 'click',
98-
options: param.options,
99-
capture: typeof param.options === 'object' ? param.options?.capture : param.options,
100+
options: typeof param.options === 'boolean'
101+
? { capture: param.options }
102+
: param.options,
100103
};
101104
}
102105

packages/cloudflare-turnstile/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"@internals/tsconfig": "workspace:*"
5252
},
5353
"peerDependencies": {
54-
"svelte": "^5.0.0-next.1"
54+
"svelte": "^5.0.0-next.152"
5555
},
5656
"volta": {
5757
"extends": "../../package.json"

packages/copy/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"@internals/tsconfig": "workspace:*"
5252
},
5353
"peerDependencies": {
54-
"svelte": "^5.0.0-next.1"
54+
"svelte": "^5.0.0-next.152"
5555
},
5656
"volta": {
5757
"extends": "../../package.json"

packages/copy/src/copy.action.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { on } from 'svelte/events';
2+
13
import { copyToClipboard } from './copy.helpers.js';
24

35
/**
@@ -32,20 +34,18 @@ export function copy(node, parameter = {}) {
3234
}
3335
}
3436

35-
37+
/** @type {Array<() => void>} */
38+
let offs = [];
3639
function addEvents() {
3740
if (trigger) {
38-
for (const event of events) {
39-
trigger.addEventListener(/** @type {K} */ (event), handler);
40-
}
41+
offs = events.map((event) => on(trigger, event, handler));
4142
}
4243
}
4344

4445
function removeEvents() {
4546
if (trigger) {
46-
for (const event of events) {
47-
trigger.removeEventListener(/** @type {K} */ (event), handler);
48-
}
47+
offs.forEach(unsub => unsub());
48+
offs = [];
4949
}
5050
}
5151

packages/dragscroll/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
"@internals/tsconfig": "workspace:*"
5454
},
5555
"peerDependencies": {
56-
"svelte": "^5.0.0-next.1"
56+
"svelte": "^5.0.0-next.152"
5757
},
5858
"volta": {
5959
"extends": "../../package.json"

packages/dragscroll/src/dragscroll.action.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { on } from 'svelte/events';
2+
13
/**
24
* @package
35
* @param {import('./public').DragScrollParameter} param
@@ -97,20 +99,20 @@ export function dragscroll(node, param = {}) {
9799
}
98100
}
99101

102+
/** @type {Array<() => void>} */
103+
let offs = [];
100104
function addEvents() {
101105
if (!node) return;
102-
node.addEventListener(events.down, handlePointerDown);
103-
node.addEventListener(events.leave, handlePointerUpAndLeave);
104-
node.addEventListener(events.up, handlePointerUpAndLeave);
105-
node.addEventListener(events.move, handlePointerMove);
106+
offs.push(on(node, events.down, handlePointerDown));
107+
offs.push(on(node, events.leave, handlePointerUpAndLeave));
108+
offs.push(on(node, events.up, handlePointerUpAndLeave));
109+
offs.push(on(node, events.move, handlePointerMove));
106110
}
107111

108112
function removeEvents() {
109113
if (!node) return;
110-
node.removeEventListener(events.down, handlePointerDown);
111-
node.removeEventListener(events.leave, handlePointerUpAndLeave);
112-
node.removeEventListener(events.up, handlePointerUpAndLeave);
113-
node.removeEventListener(events.move, handlePointerMove);
114+
offs.forEach(unsub => unsub());
115+
offs = [];
114116
}
115117

116118
function changeCursor(active = false) {

packages/inline-svg/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"@internals/tsconfig": "workspace:*"
5555
},
5656
"peerDependencies": {
57-
"svelte": "^5.0.0-next.1"
57+
"svelte": "^5.0.0-next.152"
5858
},
5959
"volta": {
6060
"extends": "../../package.json"

0 commit comments

Comments
 (0)