astro-tractstack 2.0.42 → 2.0.43
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.
package/package.json
CHANGED
|
@@ -46,30 +46,32 @@ const mainStylesUrl = isDev
|
|
|
46
46
|
)
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
<script>
|
|
50
|
-
(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
49
|
+
<script is:inline>
|
|
50
|
+
if (typeof document !== 'undefined') {
|
|
51
|
+
(function initCleanSlate() {
|
|
52
|
+
try {
|
|
53
|
+
document.cookie =
|
|
54
|
+
'admin_auth=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax';
|
|
55
|
+
document.cookie =
|
|
56
|
+
'editor_auth=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax';
|
|
57
|
+
document.cookie =
|
|
58
|
+
'tractstack_session_id=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax';
|
|
58
59
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
const tractStackKeys = [];
|
|
61
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
62
|
+
const key = localStorage.key(i);
|
|
63
|
+
if (key && key.startsWith('tractstack_')) {
|
|
64
|
+
tractStackKeys.push(key);
|
|
65
|
+
}
|
|
64
66
|
}
|
|
65
|
-
|
|
66
|
-
tractStackKeys.forEach((key) => localStorage.removeItem(key));
|
|
67
|
+
tractStackKeys.forEach((key) => localStorage.removeItem(key));
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
console.log('TractStack: Clean slate initialization complete');
|
|
70
|
+
} catch (error) {
|
|
71
|
+
console.warn('TractStack: Error during clean slate init:', error);
|
|
72
|
+
}
|
|
73
|
+
})();
|
|
74
|
+
}
|
|
73
75
|
</script>
|
|
74
76
|
</body>
|
|
75
77
|
</html>
|
|
@@ -21,16 +21,18 @@ function cleanupLayoutObservers() {
|
|
|
21
21
|
settingsPanelSubscription();
|
|
22
22
|
settingsPanelSubscription = null;
|
|
23
23
|
}
|
|
24
|
-
if (debouncedUpdateListener) {
|
|
24
|
+
if (debouncedUpdateListener && typeof window !== `undefined`) {
|
|
25
25
|
window.removeEventListener('scroll', debouncedUpdateListener);
|
|
26
26
|
window.removeEventListener('resize', debouncedUpdateListener);
|
|
27
27
|
debouncedUpdateListener = null;
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
if (typeof document !== `undefined`) {
|
|
30
|
+
const storykeepHeader = document.getElementById('storykeepHeader');
|
|
31
|
+
if (storykeepHeader) {
|
|
32
|
+
document.body.style.paddingTop = '';
|
|
33
|
+
storykeepHeader.style.position = '';
|
|
34
|
+
storykeepHeader.style.top = '';
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
|
|
@@ -45,7 +47,7 @@ function setupPaneObserver() {
|
|
|
45
47
|
currentPaneObserver = null;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
|
-
if (signalValue && signalValue.nodeId) {
|
|
50
|
+
if (signalValue && signalValue.nodeId && typeof document !== `undefined`) {
|
|
49
51
|
setTimeout(() => {
|
|
50
52
|
const { nodeId } = signalValue;
|
|
51
53
|
|
|
@@ -77,84 +79,92 @@ function setupPaneObserver() {
|
|
|
77
79
|
export function setupLayoutObservers(): void {
|
|
78
80
|
cleanupLayoutObservers();
|
|
79
81
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
82
|
+
if (typeof document !== `undefined` || typeof window !== `undefined`) {
|
|
83
|
+
const storykeepHeader = document.getElementById('storykeepHeader');
|
|
84
|
+
const settingsControls = document.getElementById('settingsControls');
|
|
85
|
+
const standardHeader = document.querySelector('header');
|
|
86
|
+
|
|
87
|
+
if (!storykeepHeader || !settingsControls || !standardHeader) return;
|
|
88
|
+
|
|
89
|
+
let standardHeaderHeight = 0;
|
|
90
|
+
const updateStandardHeaderHeight = () => {
|
|
91
|
+
standardHeaderHeight = standardHeader.offsetHeight;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const updatePanelPosition = () => {
|
|
95
|
+
const headerRect = storykeepHeader.getBoundingClientRect();
|
|
96
|
+
const panelTop = headerRect.bottom;
|
|
97
|
+
settingsControls.style.top = `${panelTop}px`;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const handleScroll = () => {
|
|
101
|
+
const scrollY = window.scrollY;
|
|
102
|
+
const shouldBeSticky = scrollY > standardHeaderHeight;
|
|
103
|
+
const currentPosition = headerPositionStore.get();
|
|
104
|
+
const newPosition = shouldBeSticky ? 'sticky' : 'normal';
|
|
105
|
+
|
|
106
|
+
if (currentPosition !== newPosition) {
|
|
107
|
+
setHeaderPosition(newPosition);
|
|
108
|
+
if (shouldBeSticky) {
|
|
109
|
+
document.body.style.paddingTop = `${storykeepHeader.offsetHeight}px`;
|
|
110
|
+
storykeepHeader.style.position = 'fixed';
|
|
111
|
+
storykeepHeader.style.top = '0';
|
|
112
|
+
} else {
|
|
113
|
+
document.body.style.paddingTop = '';
|
|
114
|
+
storykeepHeader.style.position = '';
|
|
115
|
+
storykeepHeader.style.top = '';
|
|
116
|
+
}
|
|
113
117
|
}
|
|
114
|
-
}
|
|
115
|
-
};
|
|
118
|
+
};
|
|
116
119
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
debouncedUpdateListener = debounce(() => {
|
|
121
|
+
updateStandardHeaderHeight();
|
|
122
|
+
handleScroll();
|
|
123
|
+
updatePanelPosition();
|
|
124
|
+
}, 50);
|
|
122
125
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
const handleSettingsPanelChange = () => {
|
|
127
|
+
if (!settingsPanelOpenStore.get()) {
|
|
128
|
+
hasScrolledForSettingsPanel = false;
|
|
129
|
+
}
|
|
130
|
+
};
|
|
128
131
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
window.addEventListener('scroll', debouncedUpdateListener, {
|
|
133
|
+
passive: true,
|
|
134
|
+
});
|
|
135
|
+
window.addEventListener('resize', debouncedUpdateListener);
|
|
136
|
+
settingsPanelOpenStore.subscribe(handleSettingsPanelChange);
|
|
132
137
|
|
|
133
|
-
|
|
138
|
+
setupPaneObserver();
|
|
134
139
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
140
|
+
updateStandardHeaderHeight();
|
|
141
|
+
handleScroll();
|
|
142
|
+
updatePanelPosition();
|
|
143
|
+
}
|
|
138
144
|
}
|
|
139
145
|
|
|
140
146
|
export function handleSettingsPanelMobile(isOpen: boolean): void {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
147
|
+
if (typeof window !== `undefined` && typeof document !== `undefined`) {
|
|
148
|
+
const isMobile = window.innerWidth < 801;
|
|
149
|
+
if (!isMobile) return;
|
|
150
|
+
|
|
151
|
+
if (isOpen) {
|
|
152
|
+
const header = document.querySelector('header');
|
|
153
|
+
const headerHeight = header?.offsetHeight || 0;
|
|
154
|
+
const currentScrollY = window.scrollY;
|
|
155
|
+
|
|
156
|
+
if (currentScrollY <= headerHeight && !hasScrolledForSettingsPanel) {
|
|
157
|
+
window.scrollTo({ top: headerHeight + 10, behavior: 'smooth' });
|
|
158
|
+
hasScrolledForSettingsPanel = true;
|
|
159
|
+
}
|
|
160
|
+
setMobileHeaderFaded(true);
|
|
161
|
+
} else {
|
|
162
|
+
setMobileHeaderFaded(false);
|
|
163
|
+
hasScrolledForSettingsPanel = false;
|
|
152
164
|
}
|
|
153
|
-
setMobileHeaderFaded(true);
|
|
154
|
-
} else {
|
|
155
|
-
setMobileHeaderFaded(false);
|
|
156
|
-
hasScrolledForSettingsPanel = false;
|
|
157
165
|
}
|
|
158
166
|
}
|
|
159
167
|
|
|
160
|
-
|
|
168
|
+
if (typeof document !== `undefined`) {
|
|
169
|
+
document.addEventListener('astro:before-swap', cleanupLayoutObservers);
|
|
170
|
+
}
|