@ash-qw/dsh-theme-prts 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,69 +0,0 @@
1
- const RESIZE_SHIELD_ATTRIBUTE = 'data-prts-resize-shield'
2
- const DEFAULT_SETTLE_DELAY = 180
3
-
4
- export function createResizeShieldAdapter({
5
- window,
6
- settleDelay = DEFAULT_SETTLE_DELAY,
7
- } = {}) {
8
- let targets = []
9
- let settleTimer
10
- let started = false
11
-
12
- function setActive(active) {
13
- for (const node of targets) {
14
- if (!node || node.hasAttribute?.(RESIZE_SHIELD_ATTRIBUTE) === active) continue
15
- node.toggleAttribute?.(RESIZE_SHIELD_ATTRIBUTE, active)
16
- }
17
- }
18
-
19
- function clearTimer() {
20
- if (settleTimer === undefined) return
21
- window?.clearTimeout?.(settleTimer)
22
- settleTimer = undefined
23
- }
24
-
25
- function settle() {
26
- settleTimer = undefined
27
- setActive(false)
28
- }
29
-
30
- function onResize() {
31
- if (!started) return
32
- if (Number(window?.innerWidth) <= 640) {
33
- clearTimer()
34
- setActive(false)
35
- return
36
- }
37
- setActive(true)
38
- clearTimer()
39
- settleTimer = window?.setTimeout?.(settle, settleDelay)
40
- }
41
-
42
- function dispose() {
43
- clearTimer()
44
- window?.removeEventListener?.('resize', onResize)
45
- setActive(false)
46
- targets = []
47
- started = false
48
- }
49
-
50
- return {
51
- start(nextTargets = []) {
52
- const resolved = [...new Set(nextTargets)].filter(Boolean)
53
- if (!window || !resolved.length) {
54
- dispose()
55
- return false
56
- }
57
- if (started) {
58
- clearTimer()
59
- setActive(false)
60
- window.removeEventListener?.('resize', onResize)
61
- }
62
- targets = resolved
63
- started = true
64
- window.addEventListener?.('resize', onResize, { passive: true })
65
- return true
66
- },
67
- dispose,
68
- }
69
- }