ds-one 0.2.0-alpha.3 → 0.2.5-alpha.10
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/DS1/0-face/{2025-04-23-device.ts → device.ts} +10 -6
- package/DS1/{utils/language.ts → 0-face/i18n.ts} +236 -92
- package/DS1/0-face/preferences.ts +23 -0
- package/DS1/0-face/pricing.ts +57 -0
- package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
- package/DS1/1-root/one.css +76 -107
- package/DS1/2-core/ds-banner.ts +3 -0
- package/DS1/2-core/ds-button.ts +13 -16
- package/DS1/2-core/ds-cycle.ts +84 -39
- package/DS1/2-core/{ds-year.ts → ds-date.ts} +5 -6
- package/DS1/2-core/ds-icon.ts +4 -4
- package/DS1/2-core/ds-input.ts +1 -0
- package/DS1/2-core/ds-text.ts +27 -3
- package/DS1/2-core/ds-tooltip.ts +9 -14
- package/DS1/3-unit/ds-list.ts +7 -0
- package/DS1/3-unit/ds-row.ts +4 -5
- package/DS1/3-unit/ds-table.ts +5 -6
- package/DS1/4-page/ds-grid.ts +9 -59
- package/DS1/4-page/ds-layout.ts +123 -18
- package/DS1/index.ts +39 -37
- package/LICENSE +1 -1
- package/README.md +43 -133
- package/dist/0-face/{2025-04-23-device.d.ts → device.d.ts} +1 -1
- package/dist/0-face/device.d.ts.map +1 -0
- package/dist/0-face/{2025-04-23-device.js → device.js} +7 -3
- package/dist/{utils/language.d.ts → 0-face/i18n.d.ts} +1 -3
- package/dist/0-face/i18n.d.ts.map +1 -0
- package/dist/{utils/language.js → 0-face/i18n.js} +178 -76
- package/dist/0-face/preferences.d.ts +9 -0
- package/dist/0-face/preferences.d.ts.map +1 -0
- package/dist/0-face/preferences.js +14 -0
- package/dist/0-face/pricing.d.ts +15 -0
- package/dist/0-face/pricing.d.ts.map +1 -0
- package/dist/0-face/pricing.js +46 -0
- package/dist/0-face/theme.d.ts.map +1 -0
- package/dist/2-core/ds-banner.d.ts +1 -0
- package/dist/2-core/ds-banner.d.ts.map +1 -0
- package/dist/2-core/ds-banner.js +2 -0
- package/dist/2-core/ds-button.d.ts +2 -7
- package/dist/2-core/ds-button.d.ts.map +1 -1
- package/dist/2-core/ds-button.js +12 -14
- package/dist/2-core/ds-cycle.d.ts +2 -0
- package/dist/2-core/ds-cycle.d.ts.map +1 -1
- package/dist/2-core/ds-cycle.js +80 -34
- package/dist/2-core/{ds-year.d.ts → ds-date.d.ts} +4 -4
- package/dist/2-core/ds-date.d.ts.map +1 -0
- package/dist/2-core/{ds-year.js → ds-date.js} +5 -5
- package/dist/2-core/ds-icon.js +4 -4
- package/dist/2-core/ds-input.d.ts +1 -0
- package/dist/2-core/ds-input.d.ts.map +1 -0
- package/dist/2-core/ds-input.js +1 -0
- package/dist/2-core/ds-text.d.ts +2 -0
- package/dist/2-core/ds-text.d.ts.map +1 -1
- package/dist/2-core/ds-text.js +26 -3
- package/dist/2-core/ds-tooltip.d.ts +1 -1
- package/dist/2-core/ds-tooltip.d.ts.map +1 -1
- package/dist/2-core/ds-tooltip.js +9 -13
- package/dist/3-unit/ds-list.d.ts.map +1 -1
- package/dist/3-unit/ds-list.js +3 -0
- package/dist/3-unit/{ds-doublenav.d.ts → ds-portfolio-doublenav.d.ts} +4 -4
- package/dist/3-unit/ds-portfolio-doublenav.d.ts.map +1 -0
- package/dist/3-unit/{ds-doublenav.js → ds-portfolio-doublenav.js} +4 -4
- package/dist/3-unit/{ds-panel.d.ts → ds-portfolio-panel.d.ts} +3 -3
- package/dist/3-unit/ds-portfolio-panel.d.ts.map +1 -0
- package/dist/3-unit/{ds-panel.js → ds-portfolio-panel.js} +3 -3
- package/dist/3-unit/{ds-singlenav.d.ts → ds-portfolio-singlenav.d.ts} +4 -4
- package/dist/3-unit/ds-portfolio-singlenav.d.ts.map +1 -0
- package/dist/3-unit/{ds-singlenav.js → ds-portfolio-singlenav.js} +7 -7
- package/dist/3-unit/ds-row.js +4 -4
- package/dist/3-unit/ds-table.d.ts.map +1 -1
- package/dist/3-unit/ds-table.js +5 -6
- package/dist/4-page/ds-grid.d.ts +0 -7
- package/dist/4-page/ds-grid.d.ts.map +1 -1
- package/dist/4-page/ds-grid.js +9 -54
- package/dist/4-page/ds-layout.d.ts +1 -1
- package/dist/4-page/ds-layout.d.ts.map +1 -1
- package/dist/4-page/ds-layout.js +126 -17
- package/dist/ds-one.bundle.js +2515 -4132
- package/dist/ds-one.bundle.js.map +4 -4
- package/dist/ds-one.bundle.min.js +245 -787
- package/dist/ds-one.bundle.min.js.map +4 -4
- package/dist/index.d.ts +16 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -34
- package/package.json +8 -9
- package/DS1/0-face/2025-04-23-language.ts +0 -4
- package/DS1/2-core/ds-article.ts +0 -454
- package/DS1/2-core/ds-attributes.ts +0 -155
- package/DS1/2-core/ds-downloadcv.ts +0 -146
- package/DS1/2-core/ds-header.ts +0 -82
- package/DS1/2-core/ds-home.ts +0 -168
- package/DS1/2-core/ds-link.ts +0 -121
- package/DS1/2-core/ds-markdown.ts +0 -252
- package/DS1/2-core/ds-price.ts +0 -108
- package/DS1/2-core/ds-squarecircle.ts +0 -155
- package/DS1/2-core/ds-title.ts +0 -139
- package/DS1/2-core/ds-viewtoggle.ts +0 -83
- package/DS1/3-unit/ds-doublenav.ts +0 -106
- package/DS1/3-unit/ds-panel.ts +0 -27
- package/DS1/3-unit/ds-singlenav.ts +0 -79
- package/DS1/utils/cdn-loader.ts +0 -208
- package/DS1/utils/keys.json +0 -41
- package/DS1/utils/pricing.ts +0 -24
- package/DS1/utils/scroll.ts +0 -184
- package/DS1/utils/settings.ts +0 -23
- package/DS1/utils/viewMode.ts +0 -55
- package/dist/0-face/2025-04-23-device.d.ts.map +0 -1
- package/dist/0-face/2025-04-23-language.d.ts +0 -1
- package/dist/0-face/2025-04-23-language.d.ts.map +0 -1
- package/dist/0-face/2025-04-23-language.js +0 -3
- package/dist/2-core/article-v1.d.ts +0 -129
- package/dist/2-core/article-v1.d.ts.map +0 -1
- package/dist/2-core/article-v1.js +0 -361
- package/dist/2-core/attributes-v1.d.ts +0 -47
- package/dist/2-core/attributes-v1.d.ts.map +0 -1
- package/dist/2-core/attributes-v1.js +0 -128
- package/dist/2-core/cycle-v1.d.ts +0 -66
- package/dist/2-core/cycle-v1.d.ts.map +0 -1
- package/dist/2-core/cycle-v1.js +0 -586
- package/dist/2-core/downloadcv-v1.d.ts +0 -58
- package/dist/2-core/downloadcv-v1.d.ts.map +0 -1
- package/dist/2-core/downloadcv-v1.js +0 -119
- package/dist/2-core/ds-article.d.ts +0 -129
- package/dist/2-core/ds-article.d.ts.map +0 -1
- package/dist/2-core/ds-article.js +0 -361
- package/dist/2-core/ds-attributes.d.ts +0 -47
- package/dist/2-core/ds-attributes.d.ts.map +0 -1
- package/dist/2-core/ds-attributes.js +0 -128
- package/dist/2-core/ds-button.figma.d.ts +0 -2
- package/dist/2-core/ds-button.figma.d.ts.map +0 -1
- package/dist/2-core/ds-button.figma.js +0 -6
- package/dist/2-core/ds-downloadcv.d.ts +0 -58
- package/dist/2-core/ds-downloadcv.d.ts.map +0 -1
- package/dist/2-core/ds-downloadcv.js +0 -119
- package/dist/2-core/ds-header.d.ts +0 -28
- package/dist/2-core/ds-header.d.ts.map +0 -1
- package/dist/2-core/ds-header.js +0 -66
- package/dist/2-core/ds-home.d.ts +0 -26
- package/dist/2-core/ds-home.d.ts.map +0 -1
- package/dist/2-core/ds-home.js +0 -148
- package/dist/2-core/ds-link.d.ts +0 -35
- package/dist/2-core/ds-link.d.ts.map +0 -1
- package/dist/2-core/ds-link.js +0 -85
- package/dist/2-core/ds-markdown.d.ts +0 -7
- package/dist/2-core/ds-markdown.d.ts.map +0 -1
- package/dist/2-core/ds-markdown.js +0 -240
- package/dist/2-core/ds-price.d.ts +0 -46
- package/dist/2-core/ds-price.d.ts.map +0 -1
- package/dist/2-core/ds-price.js +0 -72
- package/dist/2-core/ds-squarecircle.d.ts +0 -50
- package/dist/2-core/ds-squarecircle.d.ts.map +0 -1
- package/dist/2-core/ds-squarecircle.js +0 -133
- package/dist/2-core/ds-title.d.ts +0 -50
- package/dist/2-core/ds-title.d.ts.map +0 -1
- package/dist/2-core/ds-title.js +0 -103
- package/dist/2-core/ds-viewtoggle.d.ts +0 -27
- package/dist/2-core/ds-viewtoggle.d.ts.map +0 -1
- package/dist/2-core/ds-viewtoggle.js +0 -49
- package/dist/2-core/ds-year.d.ts.map +0 -1
- package/dist/2-core/header-v1.d.ts +0 -28
- package/dist/2-core/header-v1.d.ts.map +0 -1
- package/dist/2-core/header-v1.js +0 -66
- package/dist/2-core/home-v1.d.ts +0 -26
- package/dist/2-core/home-v1.d.ts.map +0 -1
- package/dist/2-core/home-v1.js +0 -148
- package/dist/2-core/icon-v1.d.ts +0 -28
- package/dist/2-core/icon-v1.d.ts.map +0 -1
- package/dist/2-core/icon-v1.js +0 -297
- package/dist/2-core/link-v1.d.ts +0 -35
- package/dist/2-core/link-v1.d.ts.map +0 -1
- package/dist/2-core/link-v1.js +0 -85
- package/dist/2-core/markdown-v1.d.ts +0 -7
- package/dist/2-core/markdown-v1.d.ts.map +0 -1
- package/dist/2-core/markdown-v1.js +0 -240
- package/dist/2-core/price-v1.d.ts +0 -46
- package/dist/2-core/price-v1.d.ts.map +0 -1
- package/dist/2-core/price-v1.js +0 -72
- package/dist/2-core/squarecircle-v1.d.ts +0 -50
- package/dist/2-core/squarecircle-v1.d.ts.map +0 -1
- package/dist/2-core/squarecircle-v1.js +0 -133
- package/dist/2-core/text-v1.d.ts +0 -48
- package/dist/2-core/text-v1.d.ts.map +0 -1
- package/dist/2-core/text-v1.js +0 -83
- package/dist/2-core/title-v1.d.ts +0 -50
- package/dist/2-core/title-v1.d.ts.map +0 -1
- package/dist/2-core/title-v1.js +0 -103
- package/dist/2-core/tooltip-v1.d.ts +0 -39
- package/dist/2-core/tooltip-v1.d.ts.map +0 -1
- package/dist/2-core/tooltip-v1.js +0 -145
- package/dist/2-core/viewtoggle-v1.d.ts +0 -27
- package/dist/2-core/viewtoggle-v1.d.ts.map +0 -1
- package/dist/2-core/viewtoggle-v1.js +0 -49
- package/dist/2-core/year-v1.d.ts +0 -16
- package/dist/2-core/year-v1.d.ts.map +0 -1
- package/dist/2-core/year-v1.js +0 -21
- package/dist/3-unit/ds-doublenav.d.ts.map +0 -1
- package/dist/3-unit/ds-panel.d.ts.map +0 -1
- package/dist/3-unit/ds-singlenav.d.ts.map +0 -1
- package/dist/utils/cdn-loader.d.ts +0 -19
- package/dist/utils/cdn-loader.d.ts.map +0 -1
- package/dist/utils/cdn-loader.js +0 -142
- package/dist/utils/keys.json +0 -41
- package/dist/utils/language.d.ts.map +0 -1
- package/dist/utils/pricing.d.ts +0 -8
- package/dist/utils/pricing.d.ts.map +0 -1
- package/dist/utils/pricing.js +0 -14
- package/dist/utils/scroll.d.ts +0 -34
- package/dist/utils/scroll.d.ts.map +0 -1
- package/dist/utils/scroll.js +0 -140
- package/dist/utils/settings.d.ts +0 -9
- package/dist/utils/settings.d.ts.map +0 -1
- package/dist/utils/settings.js +0 -14
- package/dist/utils/theme.d.ts.map +0 -1
- package/dist/utils/viewMode.d.ts +0 -14
- package/dist/utils/viewMode.d.ts.map +0 -1
- package/dist/utils/viewMode.js +0 -46
- /package/DS1/{utils → 0-face}/theme.ts +0 -0
- /package/DS1/{x Icon → x-icon}/1x.svg +0 -0
- /package/DS1/{x Icon → x-icon}/1xdots.svg +0 -0
- /package/DS1/{x Icon → x-icon}/1xgrid.svg +0 -0
- /package/DS1/{x Icon → x-icon}/1xlines.svg +0 -0
- /package/DS1/{x Icon → x-icon}/2x.svg +0 -0
- /package/DS1/{x Icon → x-icon}/2xdots.svg +0 -0
- /package/DS1/{x Icon → x-icon}/2xgrid.svg +0 -0
- /package/DS1/{x Icon → x-icon}/2xlines.svg +0 -0
- /package/DS1/{x Icon → x-icon}/big.svg +0 -0
- /package/DS1/{x Icon → x-icon}/blank.svg +0 -0
- /package/DS1/{x Icon → x-icon}/check.svg +0 -0
- /package/DS1/{x Icon → x-icon}/close.svg +0 -0
- /package/DS1/{x Icon → x-icon}/collapse.svg +0 -0
- /package/DS1/{x Icon → x-icon}/color.svg +0 -0
- /package/DS1/{x Icon → x-icon}/column.svg +0 -0
- /package/DS1/{x Icon → x-icon}/default.svg +0 -0
- /package/DS1/{x Icon → x-icon}/delete.svg +0 -0
- /package/DS1/{x Icon → x-icon}/do.svg +0 -0
- /package/DS1/{x Icon → x-icon}/down.svg +0 -0
- /package/DS1/{x Icon → x-icon}/duplicate.svg +0 -0
- /package/DS1/{x Icon → x-icon}/email.svg +0 -0
- /package/DS1/{x Icon → x-icon}/expand.svg +0 -0
- /package/DS1/{x Icon → x-icon}/gallery.svg +0 -0
- /package/DS1/{x Icon → x-icon}/group.svg +0 -0
- /package/DS1/{x Icon → x-icon}/head.svg +0 -0
- /package/DS1/{x Icon → x-icon}/icon.svg +0 -0
- /package/DS1/{x Icon → x-icon}/left.svg +0 -0
- /package/DS1/{x Icon → x-icon}/lock.svg +0 -0
- /package/DS1/{x Icon → x-icon}/mic.svg +0 -0
- /package/DS1/{x Icon → x-icon}/minimize.svg +0 -0
- /package/DS1/{x Icon → x-icon}/more.svg +0 -0
- /package/DS1/{x Icon → x-icon}/note.svg +0 -0
- /package/DS1/{x Icon → x-icon}/open.svg +0 -0
- /package/DS1/{x Icon → x-icon}/page.svg +0 -0
- /package/DS1/{x Icon → x-icon}/plus.svg +0 -0
- /package/DS1/{x Icon → x-icon}/rewind.svg +0 -0
- /package/DS1/{x Icon → x-icon}/right.svg +0 -0
- /package/DS1/{x Icon/row..svg → x-icon/row.svg} +0 -0
- /package/DS1/{x Icon → x-icon}/search.svg +0 -0
- /package/DS1/{x Icon → x-icon}/see.svg +0 -0
- /package/DS1/{x Icon → x-icon}/star.svg +0 -0
- /package/DS1/{x Icon → x-icon}/title.svg +0 -0
- /package/DS1/{x Icon → x-icon}/undo.svg +0 -0
- /package/DS1/{x Icon → x-icon}/ungroup.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unhead.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unicon.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unlock.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unmic.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unsee.svg +0 -0
- /package/DS1/{x Icon → x-icon}/unstar.svg +0 -0
- /package/DS1/{x Icon → x-icon}/untitle.svg +0 -0
- /package/DS1/{x Icon → x-icon}/up.svg +0 -0
- /package/dist/{utils → 0-face}/theme.d.ts +0 -0
- /package/dist/{utils → 0-face}/theme.js +0 -0
package/DS1/utils/scroll.ts
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
// scroll.ts
|
|
2
|
-
// Scroll position utilities for carrying scroll position across page navigations
|
|
3
|
-
|
|
4
|
-
export type ScrollPosition = {
|
|
5
|
-
x: number;
|
|
6
|
-
y: number;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
const SCROLL_POSITION_KEY = "ds-scroll-position";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Save the current scroll position
|
|
13
|
-
*/
|
|
14
|
-
export function saveScrollPosition(): void {
|
|
15
|
-
if (typeof window === "undefined") {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
const position: ScrollPosition = {
|
|
21
|
-
x: window.scrollX,
|
|
22
|
-
y: window.scrollY,
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
sessionStorage.setItem(SCROLL_POSITION_KEY, JSON.stringify(position));
|
|
26
|
-
} catch (error) {
|
|
27
|
-
console.warn("[DS one] Failed to save scroll position:", error);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Get the saved scroll position
|
|
33
|
-
*/
|
|
34
|
-
export function getScrollPosition(): ScrollPosition | null {
|
|
35
|
-
if (typeof window === "undefined") {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
const stored = sessionStorage.getItem(SCROLL_POSITION_KEY);
|
|
41
|
-
|
|
42
|
-
if (!stored) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const position = JSON.parse(stored) as ScrollPosition;
|
|
47
|
-
|
|
48
|
-
// Validate the parsed data
|
|
49
|
-
if (
|
|
50
|
-
typeof position.x === "number" &&
|
|
51
|
-
typeof position.y === "number" &&
|
|
52
|
-
!isNaN(position.x) &&
|
|
53
|
-
!isNaN(position.y)
|
|
54
|
-
) {
|
|
55
|
-
return position;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return null;
|
|
59
|
-
} catch (error) {
|
|
60
|
-
console.warn("[DS one] Failed to retrieve scroll position:", error);
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Restore the saved scroll position
|
|
67
|
-
*/
|
|
68
|
-
export function restoreScrollPosition(
|
|
69
|
-
options: { smooth?: boolean; clear?: boolean } = {}
|
|
70
|
-
): boolean {
|
|
71
|
-
if (typeof window === "undefined") {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const position = getScrollPosition();
|
|
76
|
-
|
|
77
|
-
if (!position) {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
try {
|
|
82
|
-
// Use requestAnimationFrame to ensure DOM is ready
|
|
83
|
-
requestAnimationFrame(() => {
|
|
84
|
-
window.scrollTo({
|
|
85
|
-
left: position.x,
|
|
86
|
-
top: position.y,
|
|
87
|
-
behavior: options.smooth ? "smooth" : "instant",
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
// Optionally clear the saved position after restoring
|
|
91
|
-
if (options.clear) {
|
|
92
|
-
clearScrollPosition();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Dispatch custom event
|
|
96
|
-
window.dispatchEvent(
|
|
97
|
-
new CustomEvent("scroll-restored", {
|
|
98
|
-
detail: position,
|
|
99
|
-
})
|
|
100
|
-
);
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
return true;
|
|
104
|
-
} catch (error) {
|
|
105
|
-
console.warn("[DS one] Failed to restore scroll position:", error);
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Clear the saved scroll position
|
|
112
|
-
*/
|
|
113
|
-
export function clearScrollPosition(): void {
|
|
114
|
-
if (typeof window === "undefined") {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
try {
|
|
119
|
-
sessionStorage.removeItem(SCROLL_POSITION_KEY);
|
|
120
|
-
} catch (error) {
|
|
121
|
-
console.warn("[DS one] Failed to clear scroll position:", error);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Initialize scroll position management
|
|
127
|
-
* Call this once to set up automatic save/restore behavior
|
|
128
|
-
*/
|
|
129
|
-
export function initScrollManagement(
|
|
130
|
-
options: {
|
|
131
|
-
autoSave?: boolean;
|
|
132
|
-
autoRestore?: boolean;
|
|
133
|
-
smooth?: boolean;
|
|
134
|
-
clearOnRestore?: boolean;
|
|
135
|
-
} = {}
|
|
136
|
-
): void {
|
|
137
|
-
if (typeof window === "undefined") {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const {
|
|
142
|
-
autoSave = true,
|
|
143
|
-
autoRestore = true,
|
|
144
|
-
smooth = false,
|
|
145
|
-
clearOnRestore = false,
|
|
146
|
-
} = options;
|
|
147
|
-
|
|
148
|
-
// Auto-save scroll position before leaving the page
|
|
149
|
-
if (autoSave) {
|
|
150
|
-
window.addEventListener("beforeunload", () => {
|
|
151
|
-
saveScrollPosition();
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
// Also save on history state changes (for SPAs)
|
|
155
|
-
window.addEventListener("pagehide", () => {
|
|
156
|
-
saveScrollPosition();
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// Auto-restore scroll position when page loads
|
|
161
|
-
if (autoRestore) {
|
|
162
|
-
const restore = () => {
|
|
163
|
-
restoreScrollPosition({ smooth, clear: clearOnRestore });
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
if (document.readyState === "loading") {
|
|
167
|
-
// Wait for DOM to be ready
|
|
168
|
-
document.addEventListener("DOMContentLoaded", restore);
|
|
169
|
-
} else {
|
|
170
|
-
// DOM is already ready
|
|
171
|
-
restore();
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Auto-initialize scroll management when module loads
|
|
177
|
-
if (typeof window !== "undefined") {
|
|
178
|
-
initScrollManagement({
|
|
179
|
-
autoSave: true,
|
|
180
|
-
autoRestore: true,
|
|
181
|
-
smooth: false,
|
|
182
|
-
clearOnRestore: false,
|
|
183
|
-
});
|
|
184
|
-
}
|
package/DS1/utils/settings.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { LanguageCode } from "./language";
|
|
2
|
-
import type { ThemeType } from "./theme";
|
|
3
|
-
|
|
4
|
-
export type Settings = {
|
|
5
|
-
language?: LanguageCode;
|
|
6
|
-
theme?: ThemeType;
|
|
7
|
-
[key: string]: unknown;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export function saveSettings(settings: Settings): void {
|
|
11
|
-
if (typeof window === "undefined") {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
try {
|
|
16
|
-
const raw = window.localStorage?.getItem("ds-one:settings");
|
|
17
|
-
const existing = raw ? (JSON.parse(raw) as Record<string, unknown>) : {};
|
|
18
|
-
const next = { ...existing, ...settings };
|
|
19
|
-
window.localStorage?.setItem("ds-one:settings", JSON.stringify(next));
|
|
20
|
-
} catch (error) {
|
|
21
|
-
console.warn("ds-one: unable to persist settings", error);
|
|
22
|
-
}
|
|
23
|
-
}
|
package/DS1/utils/viewMode.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
// viewMode.ts
|
|
2
|
-
// View mode utilities for managing text/image view states
|
|
3
|
-
|
|
4
|
-
export type ViewMode = "text" | "image";
|
|
5
|
-
|
|
6
|
-
const VIEW_MODE_KEY = "ds-view-mode";
|
|
7
|
-
const DEFAULT_VIEW_MODE: ViewMode = "text";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Get the current view mode from localStorage or return default
|
|
11
|
-
*/
|
|
12
|
-
export function getViewMode(): ViewMode {
|
|
13
|
-
if (typeof window === "undefined") {
|
|
14
|
-
return DEFAULT_VIEW_MODE;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
try {
|
|
18
|
-
const stored = localStorage.getItem(VIEW_MODE_KEY);
|
|
19
|
-
return stored === "image" || stored === "text" ? stored : DEFAULT_VIEW_MODE;
|
|
20
|
-
} catch {
|
|
21
|
-
return DEFAULT_VIEW_MODE;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Set the view mode in localStorage and dispatch change event
|
|
27
|
-
*/
|
|
28
|
-
export function setViewMode(mode: ViewMode): void {
|
|
29
|
-
if (typeof window === "undefined") {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
localStorage.setItem(VIEW_MODE_KEY, mode);
|
|
35
|
-
|
|
36
|
-
// Dispatch custom event for components to listen to
|
|
37
|
-
window.dispatchEvent(
|
|
38
|
-
new CustomEvent("view-mode-changed", {
|
|
39
|
-
detail: mode,
|
|
40
|
-
})
|
|
41
|
-
);
|
|
42
|
-
} catch (error) {
|
|
43
|
-
console.warn("Failed to save view mode:", error);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Toggle between text and image view modes
|
|
49
|
-
*/
|
|
50
|
-
export function toggleViewMode(): ViewMode {
|
|
51
|
-
const currentMode = getViewMode();
|
|
52
|
-
const newMode = currentMode === "text" ? "image" : "text";
|
|
53
|
-
setViewMode(newMode);
|
|
54
|
-
return newMode;
|
|
55
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"2025-04-23-device.d.ts","sourceRoot":"","sources":["../../DS1/0-face/2025-04-23-device.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CA6B1C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,UAAU,CA8ChD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=2025-04-23-language.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"2025-04-23-language.d.ts","sourceRoot":"","sources":["../../DS1/0-face/2025-04-23-language.ts"],"names":[],"mappings":""}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { LitElement } from "lit";
|
|
2
|
-
/**
|
|
3
|
-
* A component for displaying article content with image/text toggle
|
|
4
|
-
*
|
|
5
|
-
* @element article-v1
|
|
6
|
-
*/
|
|
7
|
-
export declare class Article extends LitElement {
|
|
8
|
-
static get properties(): {
|
|
9
|
-
imgLightDesktop: {
|
|
10
|
-
type: StringConstructor;
|
|
11
|
-
reflect: boolean;
|
|
12
|
-
attribute: string;
|
|
13
|
-
};
|
|
14
|
-
imgDarkDesktop: {
|
|
15
|
-
type: StringConstructor;
|
|
16
|
-
reflect: boolean;
|
|
17
|
-
attribute: string;
|
|
18
|
-
};
|
|
19
|
-
imgLightMobile: {
|
|
20
|
-
type: StringConstructor;
|
|
21
|
-
reflect: boolean;
|
|
22
|
-
attribute: string;
|
|
23
|
-
};
|
|
24
|
-
imgDarkMobile: {
|
|
25
|
-
type: StringConstructor;
|
|
26
|
-
reflect: boolean;
|
|
27
|
-
attribute: string;
|
|
28
|
-
};
|
|
29
|
-
src: {
|
|
30
|
-
type: StringConstructor;
|
|
31
|
-
reflect: boolean;
|
|
32
|
-
};
|
|
33
|
-
alt: {
|
|
34
|
-
type: StringConstructor;
|
|
35
|
-
reflect: boolean;
|
|
36
|
-
};
|
|
37
|
-
imageToggle: {
|
|
38
|
-
type: BooleanConstructor;
|
|
39
|
-
reflect: boolean;
|
|
40
|
-
attribute: string;
|
|
41
|
-
};
|
|
42
|
-
imageOnlyWidth: {
|
|
43
|
-
type: NumberConstructor;
|
|
44
|
-
reflect: boolean;
|
|
45
|
-
attribute: string;
|
|
46
|
-
};
|
|
47
|
-
priority: {
|
|
48
|
-
type: BooleanConstructor;
|
|
49
|
-
reflect: boolean;
|
|
50
|
-
};
|
|
51
|
-
externalToggle: {
|
|
52
|
-
type: BooleanConstructor;
|
|
53
|
-
reflect: boolean;
|
|
54
|
-
attribute: string;
|
|
55
|
-
};
|
|
56
|
-
mobileKey: {
|
|
57
|
-
type: StringConstructor;
|
|
58
|
-
reflect: boolean;
|
|
59
|
-
attribute: string;
|
|
60
|
-
};
|
|
61
|
-
desktopKey: {
|
|
62
|
-
type: StringConstructor;
|
|
63
|
-
reflect: boolean;
|
|
64
|
-
attribute: string;
|
|
65
|
-
};
|
|
66
|
-
textKey: {
|
|
67
|
-
type: StringConstructor;
|
|
68
|
-
reflect: boolean;
|
|
69
|
-
attribute: string;
|
|
70
|
-
};
|
|
71
|
-
defaultValue: {
|
|
72
|
-
type: StringConstructor;
|
|
73
|
-
reflect: boolean;
|
|
74
|
-
attribute: string;
|
|
75
|
-
};
|
|
76
|
-
_text: {
|
|
77
|
-
type: StringConstructor;
|
|
78
|
-
state: boolean;
|
|
79
|
-
};
|
|
80
|
-
_currentImage: {
|
|
81
|
-
type: StringConstructor;
|
|
82
|
-
state: boolean;
|
|
83
|
-
};
|
|
84
|
-
_imageVisible: {
|
|
85
|
-
type: BooleanConstructor;
|
|
86
|
-
state: boolean;
|
|
87
|
-
};
|
|
88
|
-
_shouldAnimate: {
|
|
89
|
-
type: BooleanConstructor;
|
|
90
|
-
state: boolean;
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
imgLightDesktop: string;
|
|
94
|
-
imgDarkDesktop: string;
|
|
95
|
-
imgLightMobile: string;
|
|
96
|
-
imgDarkMobile: string;
|
|
97
|
-
src: string;
|
|
98
|
-
alt: string;
|
|
99
|
-
imageToggle: boolean;
|
|
100
|
-
imageOnlyWidth: number;
|
|
101
|
-
priority: boolean;
|
|
102
|
-
externalToggle: boolean;
|
|
103
|
-
mobileKey: string;
|
|
104
|
-
desktopKey: string;
|
|
105
|
-
textKey: string;
|
|
106
|
-
defaultValue: string;
|
|
107
|
-
_text: string;
|
|
108
|
-
_currentImage: string;
|
|
109
|
-
_imageVisible: boolean;
|
|
110
|
-
_shouldAnimate: boolean;
|
|
111
|
-
private _mql;
|
|
112
|
-
private boundHandlers;
|
|
113
|
-
constructor();
|
|
114
|
-
static styles: import("lit").CSSResult;
|
|
115
|
-
updated(changed: Map<string, unknown>): void;
|
|
116
|
-
connectedCallback(): void;
|
|
117
|
-
disconnectedCallback(): void;
|
|
118
|
-
private _loadText;
|
|
119
|
-
private _resolveImage;
|
|
120
|
-
private _toggleImage;
|
|
121
|
-
private _handleImageLoad;
|
|
122
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
123
|
-
}
|
|
124
|
-
declare global {
|
|
125
|
-
interface HTMLElementTagNameMap {
|
|
126
|
-
"article-v1": Article;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=article-v1.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"article-v1.d.ts","sourceRoot":"","sources":["../../DS1/2-core/article-v1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;GAIG;AACH,qBAAa,OAAQ,SAAQ,UAAU;IACrC,MAAM,KAAK,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6CpB;IAEO,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IAEhC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,aAAa,CAKnB;;IAiDF,MAAM,CAAC,MAAM,0BAmEX;IAEF,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAkCrC,iBAAiB;IAuDjB,oBAAoB;IA+BpB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,gBAAgB,CAGtB;IAEF,MAAM;CAmCP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,OAAO,CAAC;KACvB;CACF"}
|