ds-one 0.2.5-alpha.8 → 0.3.0-alpha.1
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/device.ts +138 -0
- package/DS1/0-face/i18n.ts +36 -89
- package/DS1/0-face/scaling.ts +152 -0
- package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
- package/DS1/1-root/one.css +124 -77
- package/DS1/2-core/ds-banner.ts +120 -1
- package/DS1/2-core/ds-button.ts +16 -96
- package/DS1/2-core/ds-card.ts +137 -0
- package/DS1/2-core/ds-cycle.ts +82 -184
- package/DS1/2-core/ds-date.ts +3 -10
- package/DS1/2-core/ds-gap.ts +38 -0
- package/DS1/2-core/ds-icon.ts +6 -35
- package/DS1/2-core/ds-input.ts +306 -1
- package/DS1/2-core/ds-pagedots.ts +52 -0
- package/DS1/2-core/ds-text.ts +55 -28
- package/DS1/2-core/ds-tooltip.ts +14 -66
- package/DS1/2-core/styles/ds-banner.css +77 -0
- package/DS1/2-core/styles/ds-button.css +67 -0
- package/DS1/2-core/styles/ds-cycle.css +21 -0
- package/DS1/2-core/styles/ds-date.css +9 -0
- package/DS1/2-core/styles/ds-gap.css +93 -0
- package/DS1/2-core/styles/ds-icon.css +30 -0
- package/DS1/2-core/styles/ds-input.css +46 -0
- package/DS1/2-core/styles/ds-pagedots.css +31 -0
- package/DS1/2-core/styles/ds-text.css +29 -0
- package/DS1/2-core/styles/ds-tooltip.css +49 -0
- package/DS1/3-unit/ds-accordion.ts +95 -0
- package/DS1/3-unit/ds-form.ts +304 -0
- package/DS1/3-unit/ds-list.ts +5 -14
- package/DS1/3-unit/ds-row.ts +3 -19
- package/DS1/3-unit/ds-table.ts +3 -86
- package/DS1/3-unit/styles/ds-accordion.css +46 -0
- package/DS1/3-unit/styles/ds-list.css +9 -0
- package/DS1/3-unit/styles/ds-row.css +19 -0
- package/DS1/3-unit/styles/ds-table.css +80 -0
- package/DS1/4-page/ds-container.ts +28 -0
- package/DS1/4-page/ds-grid.ts +37 -50
- package/DS1/4-page/ds-layout.ts +652 -163
- package/DS1/4-page/styles/ds-container.css +35 -0
- package/DS1/4-page/styles/ds-grid.css +56 -0
- package/DS1/4-page/styles/ds-layout.css +246 -0
- package/DS1/index.ts +9 -1
- package/DS1/vite-env.d.ts +13 -0
- package/DS1/x-icon/2x.svg +4 -0
- package/DS1/x-icon/2xdots.svg +18 -0
- package/DS1/x-icon/2xgrid.svg +6 -0
- package/DS1/x-icon/2xlines.svg +6 -0
- package/DS1/x-icon/4x4.svg +18 -0
- package/DS1/x-icon/apple.svg +4 -0
- package/DS1/x-icon/avatar.svg +4 -0
- package/DS1/x-icon/big.svg +4 -0
- package/DS1/x-icon/blank.svg +3 -0
- package/DS1/x-icon/check.svg +3 -0
- package/DS1/x-icon/close.svg +3 -0
- package/DS1/x-icon/collapse.svg +3 -0
- package/DS1/x-icon/color.svg +4 -0
- package/DS1/x-icon/column.svg +5 -0
- package/DS1/x-icon/default.svg +3 -0
- package/DS1/x-icon/delete.svg +5 -0
- package/DS1/x-icon/dictate.svg +6 -0
- package/DS1/x-icon/do.svg +3 -0
- package/DS1/x-icon/down.svg +3 -0
- package/DS1/x-icon/duplicate.svg +4 -0
- package/DS1/x-icon/gallery.svg +5 -0
- package/DS1/x-icon/google.svg +6 -0
- package/DS1/x-icon/head.svg +5 -0
- package/DS1/x-icon/home.svg +3 -0
- package/DS1/x-icon/icon.svg +4 -0
- package/DS1/x-icon/in.svg +4 -0
- package/DS1/x-icon/lock.svg +5 -0
- package/DS1/x-icon/loop.svg +5 -0
- package/DS1/x-icon/mic.svg +5 -0
- package/DS1/x-icon/minimize.svg +3 -0
- package/DS1/x-icon/more.svg +5 -0
- package/DS1/x-icon/neutral.svg +6 -0
- package/DS1/x-icon/note.svg +6 -0
- package/DS1/x-icon/page.svg +4 -0
- package/DS1/x-icon/plus.svg +3 -0
- package/DS1/x-icon/rewind.svg +4 -0
- package/DS1/x-icon/row.svg +5 -0
- package/DS1/x-icon/sdown.svg +3 -0
- package/DS1/x-icon/search.svg +4 -0
- package/DS1/x-icon/see.svg +4 -0
- package/DS1/x-icon/ship.svg +5 -0
- package/DS1/x-icon/star.svg +3 -0
- package/DS1/x-icon/status.svg +4 -0
- package/DS1/x-icon/sup.svg +3 -0
- package/DS1/x-icon/title.svg +3 -0
- package/DS1/x-icon/undo.svg +3 -0
- package/DS1/x-icon/ungroup.svg +4 -0
- package/DS1/x-icon/unhead.svg +3 -0
- package/DS1/x-icon/unicon.svg +3 -0
- package/DS1/x-icon/unlock.svg +5 -0
- package/DS1/x-icon/unmic.svg +6 -0
- package/DS1/x-icon/unsee.svg +5 -0
- package/DS1/x-icon/unstar.svg +3 -0
- package/DS1/x-icon/untitle.svg +3 -0
- package/DS1/x-icon/up.svg +3 -0
- package/LICENSE +1 -1
- package/README.md +4 -4
- package/dist/0-face/device.d.ts +5 -0
- package/dist/0-face/device.d.ts.map +1 -1
- package/dist/0-face/device.js +111 -0
- package/dist/0-face/i18n.d.ts +0 -2
- package/dist/0-face/i18n.d.ts.map +1 -1
- package/dist/0-face/i18n.js +36 -73
- package/dist/0-face/scaling.d.ts +48 -0
- package/dist/0-face/scaling.d.ts.map +1 -0
- package/dist/0-face/scaling.js +114 -0
- package/dist/2-core/ds-banner.d.ts +67 -0
- package/dist/2-core/ds-banner.d.ts.map +1 -1
- package/dist/2-core/ds-banner.js +97 -1
- package/dist/2-core/ds-button.d.ts +4 -20
- package/dist/2-core/ds-button.d.ts.map +1 -1
- package/dist/2-core/ds-button.js +14 -88
- package/dist/2-core/ds-card.d.ts +39 -0
- package/dist/2-core/ds-card.d.ts.map +1 -0
- package/dist/2-core/ds-card.js +119 -0
- package/dist/2-core/ds-cycle.d.ts +1 -5
- package/dist/2-core/ds-cycle.d.ts.map +1 -1
- package/dist/2-core/ds-cycle.js +79 -166
- package/dist/2-core/ds-date.d.ts.map +1 -1
- package/dist/2-core/ds-date.js +3 -9
- package/dist/2-core/ds-gap.d.ts +28 -0
- package/dist/2-core/ds-gap.d.ts.map +1 -0
- package/dist/2-core/ds-gap.js +25 -0
- package/dist/2-core/ds-icon.d.ts.map +1 -1
- package/dist/2-core/ds-icon.js +6 -35
- package/dist/2-core/ds-input.d.ts +127 -0
- package/dist/2-core/ds-input.d.ts.map +1 -1
- package/dist/2-core/ds-input.js +252 -1
- package/dist/2-core/ds-pagedots.d.ts +32 -0
- package/dist/2-core/ds-pagedots.d.ts.map +1 -0
- package/dist/2-core/ds-pagedots.js +36 -0
- package/dist/2-core/ds-text.d.ts +5 -3
- package/dist/2-core/ds-text.d.ts.map +1 -1
- package/dist/2-core/ds-text.js +49 -27
- package/dist/2-core/ds-tooltip.d.ts +3 -3
- package/dist/2-core/ds-tooltip.d.ts.map +1 -1
- package/dist/2-core/ds-tooltip.js +13 -65
- package/dist/2-core/styles/ds-banner.css +77 -0
- package/dist/2-core/styles/ds-button.css +67 -0
- package/dist/2-core/styles/ds-cycle.css +21 -0
- package/dist/2-core/styles/ds-date.css +9 -0
- package/dist/2-core/styles/ds-gap.css +93 -0
- package/dist/2-core/styles/ds-icon.css +30 -0
- package/dist/2-core/styles/ds-input.css +46 -0
- package/dist/2-core/styles/ds-pagedots.css +26 -0
- package/dist/2-core/styles/ds-text.css +29 -0
- package/dist/2-core/styles/ds-tooltip.css +49 -0
- package/dist/3-unit/ds-accordion.d.ts +47 -0
- package/dist/3-unit/ds-accordion.d.ts.map +1 -0
- package/dist/3-unit/ds-accordion.js +75 -0
- package/dist/3-unit/ds-form.d.ts +70 -0
- package/dist/3-unit/ds-form.d.ts.map +1 -0
- package/dist/3-unit/ds-form.js +232 -0
- package/dist/3-unit/ds-list.d.ts.map +1 -1
- package/dist/3-unit/ds-list.js +5 -11
- package/dist/3-unit/ds-row.d.ts.map +1 -1
- package/dist/3-unit/ds-row.js +3 -19
- package/dist/3-unit/ds-table.d.ts.map +1 -1
- package/dist/3-unit/ds-table.js +3 -86
- package/dist/3-unit/styles/ds-accordion.css +46 -0
- package/dist/3-unit/styles/ds-list.css +9 -0
- package/dist/3-unit/styles/ds-row.css +19 -0
- package/dist/3-unit/styles/ds-table.css +80 -0
- package/dist/{3-unit/row-v1.d.ts → 4-page/ds-container.d.ts} +3 -11
- package/dist/4-page/ds-container.d.ts.map +1 -0
- package/dist/4-page/ds-container.js +11 -0
- package/dist/4-page/ds-grid.d.ts +5 -0
- package/dist/4-page/ds-grid.d.ts.map +1 -1
- package/dist/4-page/ds-grid.js +38 -56
- package/dist/4-page/ds-layout.d.ts +3 -3
- package/dist/4-page/ds-layout.d.ts.map +1 -1
- package/dist/4-page/ds-layout.js +651 -162
- package/dist/4-page/styles/ds-container.css +35 -0
- package/dist/4-page/styles/ds-grid.css +56 -0
- package/dist/4-page/styles/ds-layout.css +251 -0
- package/dist/ds-one.bundle.css +700 -0
- package/dist/ds-one.bundle.css.map +7 -0
- package/dist/ds-one.bundle.js +2728 -1597
- package/dist/ds-one.bundle.js.map +1 -7
- package/dist/ds-one.bundle.min.css +2 -0
- package/dist/ds-one.bundle.min.css.map +7 -0
- package/dist/ds-one.bundle.min.js +3850 -546
- package/dist/ds-one.bundle.min.js.map +1 -7
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/package.json +4 -3
- package/dist/3-unit/doublenav-v1.d.ts +0 -51
- package/dist/3-unit/doublenav-v1.d.ts.map +0 -1
- package/dist/3-unit/doublenav-v1.js +0 -88
- package/dist/3-unit/ds-portfolio-doublenav.d.ts +0 -51
- package/dist/3-unit/ds-portfolio-doublenav.d.ts.map +0 -1
- package/dist/3-unit/ds-portfolio-doublenav.js +0 -88
- package/dist/3-unit/ds-portfolio-panel.d.ts +0 -11
- package/dist/3-unit/ds-portfolio-panel.d.ts.map +0 -1
- package/dist/3-unit/ds-portfolio-panel.js +0 -16
- package/dist/3-unit/ds-portfolio-singlenav.d.ts +0 -32
- package/dist/3-unit/ds-portfolio-singlenav.d.ts.map +0 -1
- package/dist/3-unit/ds-portfolio-singlenav.js +0 -62
- package/dist/3-unit/list-v1.d.ts +0 -11
- package/dist/3-unit/list-v1.d.ts.map +0 -1
- package/dist/3-unit/list-v1.js +0 -15
- package/dist/3-unit/panel-v1.d.ts +0 -11
- package/dist/3-unit/panel-v1.d.ts.map +0 -1
- package/dist/3-unit/panel-v1.js +0 -16
- package/dist/3-unit/row-v1.d.ts.map +0 -1
- package/dist/3-unit/row-v1.js +0 -32
- package/dist/3-unit/singlenav-v1.d.ts +0 -32
- package/dist/3-unit/singlenav-v1.d.ts.map +0 -1
- package/dist/3-unit/singlenav-v1.js +0 -62
package/DS1/x-icon/page.svg
CHANGED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="10" height="12" viewBox="0 0 10 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M1 2C1 1.44772 1.44772 1 2 1H6L9 4V10C9 10.5523 8.55228 11 8 11H2C1.44772 11 1 10.5523 1 10V2Z" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
3
|
+
<path d="M6 1V4H9" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
4
|
+
</svg>
|
package/DS1/x-icon/plus.svg
CHANGED
package/DS1/x-icon/rewind.svg
CHANGED
package/DS1/x-icon/row.svg
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="0.5" y="0.5" width="11" height="3" stroke="currentColor" stroke-width="1" fill="none"/>
|
|
3
|
+
<rect x="0.5" y="4.5" width="11" height="3" stroke="currentColor" stroke-width="1" fill="none"/>
|
|
4
|
+
<rect x="0.5" y="8.5" width="11" height="3" stroke="currentColor" stroke-width="1" fill="none"/>
|
|
5
|
+
</svg>
|
package/DS1/x-icon/search.svg
CHANGED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<circle cx="5" cy="5" r="4" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
3
|
+
<line x1="8" y1="8" x2="11" y2="11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
4
|
+
</svg>
|
package/DS1/x-icon/see.svg
CHANGED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M7 1C3.5 1 1 5 1 5C1 5 3.5 9 7 9C10.5 9 13 5 13 5C13 5 10.5 1 7 1Z" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
3
|
+
<circle cx="7" cy="5" r="2" fill="currentColor"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="14" height="12" viewBox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M2 8L1 11H13L12 8" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
|
|
3
|
+
<path d="M3 8V4H6V1H8V4H11V8H3Z" fill="currentColor"/>
|
|
4
|
+
<rect x="5" y="5" width="4" height="2" fill="var(--surface-color, #fff)"/>
|
|
5
|
+
</svg>
|
package/DS1/x-icon/star.svg
CHANGED
package/DS1/x-icon/title.svg
CHANGED
package/DS1/x-icon/undo.svg
CHANGED
package/DS1/x-icon/ungroup.svg
CHANGED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="0.5" y="0.5" width="5" height="5" stroke="currentColor" stroke-width="1" stroke-dasharray="2 1" fill="none"/>
|
|
3
|
+
<rect x="6.5" y="6.5" width="5" height="5" stroke="currentColor" stroke-width="1" stroke-dasharray="2 1" fill="none"/>
|
|
4
|
+
</svg>
|
package/DS1/x-icon/unhead.svg
CHANGED
package/DS1/x-icon/unicon.svg
CHANGED
package/DS1/x-icon/unlock.svg
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="10" height="12" viewBox="0 0 10 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="1" y="5" width="8" height="6" rx="1" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
3
|
+
<path d="M3 5V3C3 1.89543 3.89543 1 5 1C6.10457 1 7 1.89543 7 3" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" fill="none"/>
|
|
4
|
+
<circle cx="5" cy="8" r="1" fill="currentColor"/>
|
|
5
|
+
</svg>
|
package/DS1/x-icon/unmic.svg
CHANGED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="10" height="14" viewBox="0 0 10 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="2.5" y="1" width="5" height="7" rx="2.5" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
3
|
+
<path d="M1 6C1 8.76142 2.79086 11 5 11C7.20914 11 9 8.76142 9 6" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
4
|
+
<line x1="5" y1="11" x2="5" y2="13" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/>
|
|
5
|
+
<line x1="1" y1="1" x2="9" y2="13" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/>
|
|
6
|
+
</svg>
|
package/DS1/x-icon/unsee.svg
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="14" height="12" viewBox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M7 2C3.5 2 1 6 1 6C1 6 3.5 10 7 10C10.5 10 13 6 13 6C13 6 10.5 2 7 2Z" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
3
|
+
<circle cx="7" cy="6" r="2" stroke="currentColor" stroke-width="1.2" fill="none"/>
|
|
4
|
+
<line x1="2" y1="1" x2="12" y2="11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/>
|
|
5
|
+
</svg>
|
package/DS1/x-icon/unstar.svg
CHANGED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M6 1L7.5 4.5L11 5L8.5 7.5L9 11L6 9.5L3 11L3.5 7.5L1 5L4.5 4.5L6 1Z" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round" stroke-dasharray="2 1" fill="none"/>
|
|
3
|
+
</svg>
|
package/DS1/x-icon/untitle.svg
CHANGED
package/DS1/x-icon/up.svg
CHANGED
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# DS one (0.
|
|
1
|
+
# DS one (0.3.0-alpha.1)
|
|
2
2
|
|
|
3
3
|
A plug and play design system
|
|
4
4
|
|
|
@@ -20,7 +20,7 @@ yarn add ds-one@alpha
|
|
|
20
20
|
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
**Note**: Currently published as alpha version `0.
|
|
23
|
+
**Note**: Currently published as alpha version `0.3.0-alpha.1`
|
|
24
24
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
|
@@ -41,8 +41,8 @@ yarn add ds-one@alpha
|
|
|
41
41
|
</script>
|
|
42
42
|
</head>
|
|
43
43
|
<body>
|
|
44
|
-
<ds-button variant="primary"
|
|
45
|
-
<ds-text
|
|
44
|
+
<ds-button variant="primary" text="Get Started"></ds-button>
|
|
45
|
+
<ds-text text="Welcome"></ds-text>
|
|
46
46
|
</body>
|
|
47
47
|
</html>
|
|
48
48
|
```
|
package/dist/0-face/device.d.ts
CHANGED
|
@@ -22,4 +22,9 @@ export declare function getDeviceInfo(): DeviceInfo;
|
|
|
22
22
|
* Initialize device detection and log to console
|
|
23
23
|
*/
|
|
24
24
|
export declare function initDeviceDetection(): DeviceInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Disable double-tap to zoom in the browser (app-like behavior)
|
|
27
|
+
* Prevents all zoom gestures including double-tap and pinch-to-zoom
|
|
28
|
+
*/
|
|
29
|
+
export declare function applike(): void;
|
|
25
30
|
//# sourceMappingURL=device.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../DS1/0-face/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,
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../DS1/0-face/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,CA0DhD;AAwBD;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CA4H9B"}
|
package/dist/0-face/device.js
CHANGED
|
@@ -65,6 +65,9 @@ export function initDeviceDetection() {
|
|
|
65
65
|
document.documentElement.style.setProperty("--sf", scalingFactor.toFixed(3));
|
|
66
66
|
// Also set --sf for backwards compatibility
|
|
67
67
|
document.documentElement.style.setProperty("--sf", scalingFactor.toFixed(3));
|
|
68
|
+
// Add .mobile class to html element for CSS targeting
|
|
69
|
+
document.documentElement.classList.add("mobile");
|
|
70
|
+
document.documentElement.classList.remove("desktop");
|
|
68
71
|
console.log(`[DS one] Mobile device detected - ${deviceInfo.deviceType} (${deviceInfo.screenWidth}x${deviceInfo.screenHeight}), scaling factor: ${scalingFactor.toFixed(2)}`);
|
|
69
72
|
}
|
|
70
73
|
else {
|
|
@@ -73,6 +76,9 @@ export function initDeviceDetection() {
|
|
|
73
76
|
document.documentElement.style.setProperty("--sf", "1");
|
|
74
77
|
// Also set --sf for backwards compatibility
|
|
75
78
|
document.documentElement.style.setProperty("--sf", "1");
|
|
79
|
+
// Add .desktop class and remove .mobile class
|
|
80
|
+
document.documentElement.classList.add("desktop");
|
|
81
|
+
document.documentElement.classList.remove("mobile");
|
|
76
82
|
}
|
|
77
83
|
console.log(`[DS one] Desktop device detected (${deviceInfo.screenWidth}x${deviceInfo.screenHeight})`);
|
|
78
84
|
}
|
|
@@ -111,3 +117,108 @@ if (typeof window !== "undefined") {
|
|
|
111
117
|
}, 100);
|
|
112
118
|
});
|
|
113
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Disable double-tap to zoom in the browser (app-like behavior)
|
|
122
|
+
* Prevents all zoom gestures including double-tap and pinch-to-zoom
|
|
123
|
+
*/
|
|
124
|
+
export function applike() {
|
|
125
|
+
if (typeof document === "undefined" || typeof window === "undefined") {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// Set viewport meta tag to prevent zoom - this is the most important step
|
|
129
|
+
let viewport = document.querySelector('meta[name="viewport"]');
|
|
130
|
+
if (!viewport) {
|
|
131
|
+
viewport = document.createElement("meta");
|
|
132
|
+
viewport.setAttribute("name", "viewport");
|
|
133
|
+
document.head.appendChild(viewport);
|
|
134
|
+
}
|
|
135
|
+
viewport.setAttribute("content", "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no");
|
|
136
|
+
// Apply touch-action: pan-x pan-y globally to prevent zoom but allow panning
|
|
137
|
+
const style = document.createElement("style");
|
|
138
|
+
style.id = "ds-one-applike-style";
|
|
139
|
+
style.textContent = `
|
|
140
|
+
* {
|
|
141
|
+
touch-action: pan-x pan-y !important;
|
|
142
|
+
-ms-touch-action: pan-x pan-y !important;
|
|
143
|
+
}
|
|
144
|
+
html, body {
|
|
145
|
+
touch-action: pan-x pan-y !important;
|
|
146
|
+
-ms-touch-action: pan-x pan-y !important;
|
|
147
|
+
}
|
|
148
|
+
`;
|
|
149
|
+
// Remove existing style if present
|
|
150
|
+
const existingStyle = document.getElementById("ds-one-applike-style");
|
|
151
|
+
if (existingStyle) {
|
|
152
|
+
existingStyle.remove();
|
|
153
|
+
}
|
|
154
|
+
document.head.appendChild(style);
|
|
155
|
+
// Track touch events to prevent double-tap zoom
|
|
156
|
+
let lastTouchEnd = 0;
|
|
157
|
+
let touchStartTime = 0;
|
|
158
|
+
const preventZoom = (event) => {
|
|
159
|
+
// Prevent pinch zoom (two fingers)
|
|
160
|
+
if (event instanceof TouchEvent) {
|
|
161
|
+
if (event.touches.length > 1) {
|
|
162
|
+
event.preventDefault();
|
|
163
|
+
event.stopPropagation();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const now = Date.now();
|
|
167
|
+
if (event.type === "touchstart") {
|
|
168
|
+
// If touchstart happens within 300ms of last touchend, it's likely a double-tap
|
|
169
|
+
if (now - lastTouchEnd < 300) {
|
|
170
|
+
event.preventDefault();
|
|
171
|
+
event.stopPropagation();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
touchStartTime = now;
|
|
175
|
+
}
|
|
176
|
+
else if (event.type === "touchend") {
|
|
177
|
+
const touchDuration = now - touchStartTime;
|
|
178
|
+
// If this is a quick tap (< 300ms) and happened soon after previous touchend, prevent it
|
|
179
|
+
if (touchDuration < 300 && now - lastTouchEnd < 300) {
|
|
180
|
+
event.preventDefault();
|
|
181
|
+
event.stopPropagation();
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
lastTouchEnd = now;
|
|
185
|
+
}
|
|
186
|
+
else if (event.type === "touchmove") {
|
|
187
|
+
// Prevent any touchmove that might trigger zoom
|
|
188
|
+
if (event.touches.length > 1) {
|
|
189
|
+
event.preventDefault();
|
|
190
|
+
event.stopPropagation();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Prevent wheel zoom with ctrl/cmd key (common on trackpads)
|
|
196
|
+
if (event instanceof WheelEvent && (event.ctrlKey || event.metaKey)) {
|
|
197
|
+
event.preventDefault();
|
|
198
|
+
event.stopPropagation();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
// Use capture phase to catch events earlier
|
|
203
|
+
const options = { passive: false, capture: true };
|
|
204
|
+
// Prevent all zoom gestures - use capture phase
|
|
205
|
+
document.addEventListener("touchstart", preventZoom, options);
|
|
206
|
+
document.addEventListener("touchmove", preventZoom, options);
|
|
207
|
+
document.addEventListener("touchend", preventZoom, options);
|
|
208
|
+
document.addEventListener("touchcancel", preventZoom, options);
|
|
209
|
+
// Prevent wheel zoom
|
|
210
|
+
document.addEventListener("wheel", preventZoom, options);
|
|
211
|
+
// Prevent gesture events (iOS Safari) - use capture phase
|
|
212
|
+
document.addEventListener("gesturestart", (e) => {
|
|
213
|
+
e.preventDefault();
|
|
214
|
+
e.stopPropagation();
|
|
215
|
+
}, options);
|
|
216
|
+
document.addEventListener("gesturechange", (e) => {
|
|
217
|
+
e.preventDefault();
|
|
218
|
+
e.stopPropagation();
|
|
219
|
+
}, options);
|
|
220
|
+
document.addEventListener("gestureend", (e) => {
|
|
221
|
+
e.preventDefault();
|
|
222
|
+
e.stopPropagation();
|
|
223
|
+
}, options);
|
|
224
|
+
}
|
package/dist/0-face/i18n.d.ts
CHANGED
|
@@ -19,8 +19,6 @@ export declare const currentLanguage: {
|
|
|
19
19
|
export declare function translate(key: string): string;
|
|
20
20
|
export declare function hasTranslation(key: string, language?: LanguageCode): boolean;
|
|
21
21
|
export declare function getText(key: string): string;
|
|
22
|
-
export declare function getNotionText(key: string, language?: LanguageCode): Promise<string | null>;
|
|
23
|
-
export declare function setNotionText(key: string, value: string, language?: LanguageCode): void;
|
|
24
22
|
export declare function getAvailableLanguages(): Promise<LanguageCode[]>;
|
|
25
23
|
export declare function getAvailableLanguagesSync(): LanguageCode[];
|
|
26
24
|
export declare function loadTranslations(language: LanguageCode, translations: TranslationData): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../DS1/0-face/i18n.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAGlC,KAAK,eAAe,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAAC;AAyDF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACtD,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC;CACF;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../DS1/0-face/i18n.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAGlC,KAAK,eAAe,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAAC;AAyDF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACtD,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC;CACF;AA+RD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,MAAM,CA6CR;AAqDD,wBAAgB,kBAAkB,IAAI,YAAY,CAwBjD;AAWD,eAAO,MAAM,eAAe;;gBAGL,YAAY;CAWlC,CAAC;AAuDF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiB7C;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,YAAoC,GAC7C,OAAO,CAmBT;AAGD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAGD,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAS/D;AAGD,wBAAgB,yBAAyB,IAAI,YAAY,EAAE,CAO1D;AAGD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,eAAe,GAC5B,IAAI,CAON;AAGD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAgBxD"}
|
package/dist/0-face/i18n.js
CHANGED
|
@@ -4,42 +4,42 @@ let translationKeys = {};
|
|
|
4
4
|
// Primary language list – prioritise the 10 requested languages when cycling
|
|
5
5
|
const LANGUAGE_PRIORITY_ORDER = [
|
|
6
6
|
"da",
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"pt",
|
|
7
|
+
"de",
|
|
8
|
+
"en",
|
|
10
9
|
"es",
|
|
11
|
-
"
|
|
12
|
-
"
|
|
10
|
+
"fr",
|
|
11
|
+
"it",
|
|
13
12
|
"ja",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
13
|
+
"pt",
|
|
14
|
+
"sv",
|
|
15
|
+
"zh",
|
|
16
16
|
];
|
|
17
17
|
const LANGUAGE_PRIORITY_LOOKUP = new Map(LANGUAGE_PRIORITY_ORDER.map((code, index) => [code, index]));
|
|
18
18
|
// Fallback language names if Intl.DisplayNames is not available
|
|
19
19
|
const FALLBACK_LANGUAGE_NAMES = {
|
|
20
20
|
da: "Danish",
|
|
21
21
|
"da-dk": "Danish",
|
|
22
|
-
nb: "Norwegian",
|
|
23
|
-
"nb-no": "Norwegian",
|
|
24
|
-
sv: "Swedish",
|
|
25
|
-
"sv-se": "Swedish",
|
|
26
22
|
de: "German",
|
|
27
23
|
"de-de": "German",
|
|
28
24
|
en: "English",
|
|
29
25
|
"en-us": "English",
|
|
30
|
-
pt: "Portuguese",
|
|
31
|
-
"pt-pt": "Portuguese",
|
|
32
|
-
"pt-br": "Portuguese (Brazil)",
|
|
33
26
|
es: "Spanish",
|
|
34
27
|
"es-es": "Spanish",
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
28
|
+
fr: "French",
|
|
29
|
+
"fr-fr": "French",
|
|
30
|
+
it: "Italian",
|
|
31
|
+
"it-it": "Italian",
|
|
39
32
|
ja: "Japanese",
|
|
40
33
|
"ja-jp": "Japanese",
|
|
41
|
-
|
|
42
|
-
"
|
|
34
|
+
pt: "Portuguese",
|
|
35
|
+
"pt-pt": "Portuguese",
|
|
36
|
+
sv: "Swedish",
|
|
37
|
+
"sv-se": "Swedish",
|
|
38
|
+
zh: "Chinese",
|
|
39
|
+
"zh-cn": "Chinese",
|
|
40
|
+
"zh-tw": "Chinese",
|
|
41
|
+
"zh-hans": "Chinese",
|
|
42
|
+
"zh-hant": "Chinese",
|
|
43
43
|
};
|
|
44
44
|
const DISPLAY_NAME_CACHE = new Map();
|
|
45
45
|
let displayNameFallbackWarningShown = false;
|
|
@@ -179,7 +179,6 @@ function getTranslationData() {
|
|
|
179
179
|
}
|
|
180
180
|
// Cached translation data - use getter to always get fresh data
|
|
181
181
|
let translationData = getTranslationData();
|
|
182
|
-
const notionStore = new Map();
|
|
183
182
|
const defaultLanguage = "en";
|
|
184
183
|
function extractPrimarySubtag(code) {
|
|
185
184
|
if (!code) {
|
|
@@ -288,33 +287,30 @@ export function getLanguageDisplayName(code, options = {}) {
|
|
|
288
287
|
const BROWSER_LANGUAGE_PREFERENCES = {
|
|
289
288
|
da: "da",
|
|
290
289
|
"da-dk": "da",
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
"
|
|
296
|
-
sv: "sv",
|
|
297
|
-
"sv-se": "sv",
|
|
298
|
-
pt: "pt",
|
|
299
|
-
"pt-pt": "pt",
|
|
300
|
-
"pt-br": "pt",
|
|
290
|
+
de: "de",
|
|
291
|
+
"de-de": "de",
|
|
292
|
+
en: "en",
|
|
293
|
+
"en-us": "en",
|
|
294
|
+
"en-gb": "en",
|
|
301
295
|
es: "es",
|
|
302
296
|
"es-es": "es",
|
|
303
297
|
"es-mx": "es",
|
|
298
|
+
fr: "fr",
|
|
299
|
+
"fr-fr": "fr",
|
|
300
|
+
it: "it",
|
|
301
|
+
"it-it": "it",
|
|
302
|
+
ja: "ja",
|
|
303
|
+
"ja-jp": "ja",
|
|
304
|
+
pt: "pt",
|
|
305
|
+
"pt-pt": "pt",
|
|
306
|
+
"pt-br": "pt",
|
|
307
|
+
sv: "sv",
|
|
308
|
+
"sv-se": "sv",
|
|
304
309
|
zh: "zh",
|
|
305
310
|
"zh-cn": "zh",
|
|
306
311
|
"zh-hans": "zh",
|
|
307
312
|
"zh-tw": "zh",
|
|
308
313
|
"zh-hant": "zh",
|
|
309
|
-
ko: "ko",
|
|
310
|
-
"ko-kr": "ko",
|
|
311
|
-
ja: "ja",
|
|
312
|
-
"ja-jp": "ja",
|
|
313
|
-
en: "en",
|
|
314
|
-
"en-us": "en",
|
|
315
|
-
"en-gb": "en",
|
|
316
|
-
de: "de",
|
|
317
|
-
"de-de": "de",
|
|
318
314
|
};
|
|
319
315
|
function resolvePreferredLanguage(languageTag) {
|
|
320
316
|
if (!languageTag) {
|
|
@@ -391,7 +387,6 @@ if (typeof window !== "undefined") {
|
|
|
391
387
|
translationData = getTranslationData();
|
|
392
388
|
// Dispatch that translations are loaded
|
|
393
389
|
window.dispatchEvent(new CustomEvent("translations-loaded"));
|
|
394
|
-
window.notionDataLoaded = true;
|
|
395
390
|
// Dispatch language-changed to update all components
|
|
396
391
|
const currentLang = currentLanguage.value;
|
|
397
392
|
window.dispatchEvent(new CustomEvent("language-changed", {
|
|
@@ -406,7 +401,6 @@ if (typeof window !== "undefined") {
|
|
|
406
401
|
setTimeout(() => {
|
|
407
402
|
// Since we directly imported the data, just dispatch the events
|
|
408
403
|
window.dispatchEvent(new CustomEvent("translations-loaded"));
|
|
409
|
-
window.notionDataLoaded = true;
|
|
410
404
|
// Also dispatch language-changed with the current language
|
|
411
405
|
const currentLang = currentLanguage.value;
|
|
412
406
|
window.dispatchEvent(new CustomEvent("language-changed", {
|
|
@@ -448,37 +442,6 @@ export function hasTranslation(key, language = currentLanguage.value) {
|
|
|
448
442
|
export function getText(key) {
|
|
449
443
|
return translate(key);
|
|
450
444
|
}
|
|
451
|
-
// Get text from translation data (async for compatibility)
|
|
452
|
-
export async function getNotionText(key, language = currentLanguage.value) {
|
|
453
|
-
if (!key) {
|
|
454
|
-
return null;
|
|
455
|
-
}
|
|
456
|
-
if (!translationData || !translationData[language]) {
|
|
457
|
-
return null;
|
|
458
|
-
}
|
|
459
|
-
const text = translationData[language][key];
|
|
460
|
-
if (text) {
|
|
461
|
-
return text;
|
|
462
|
-
}
|
|
463
|
-
// Fallback to English
|
|
464
|
-
if (language !== defaultLanguage && translationData[defaultLanguage]?.[key]) {
|
|
465
|
-
return translationData[defaultLanguage][key];
|
|
466
|
-
}
|
|
467
|
-
return null;
|
|
468
|
-
}
|
|
469
|
-
// Store Notion text (for dynamic updates)
|
|
470
|
-
export function setNotionText(key, value, language = currentLanguage.value) {
|
|
471
|
-
if (!key)
|
|
472
|
-
return;
|
|
473
|
-
const bucket = getLanguageBucket(language);
|
|
474
|
-
bucket.set(key, value);
|
|
475
|
-
}
|
|
476
|
-
function getLanguageBucket(language) {
|
|
477
|
-
if (!notionStore.has(language)) {
|
|
478
|
-
notionStore.set(language, new Map());
|
|
479
|
-
}
|
|
480
|
-
return notionStore.get(language);
|
|
481
|
-
}
|
|
482
445
|
// Get available languages - dynamically detect from loaded data
|
|
483
446
|
export function getAvailableLanguages() {
|
|
484
447
|
// Always get fresh translation data
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export type ScalingMode = "auto" | "fixed" | "fluid";
|
|
2
|
+
export interface ScalingConfig {
|
|
3
|
+
mode: ScalingMode;
|
|
4
|
+
baseWidth: number;
|
|
5
|
+
minScale: number;
|
|
6
|
+
maxScale: number;
|
|
7
|
+
}
|
|
8
|
+
export declare const scalingFactor: import("@lit-labs/signals").Signal.State<number>;
|
|
9
|
+
export declare const scalingConfig: import("@lit-labs/signals").Signal.State<ScalingConfig>;
|
|
10
|
+
/**
|
|
11
|
+
* Calculate the scaling factor based on viewport width
|
|
12
|
+
* @param viewportWidth - Current viewport width in pixels
|
|
13
|
+
* @param config - Scaling configuration
|
|
14
|
+
* @returns The calculated scaling factor
|
|
15
|
+
*/
|
|
16
|
+
export declare function calculateScalingFactor(viewportWidth: number, config?: ScalingConfig): number;
|
|
17
|
+
/**
|
|
18
|
+
* Set the scaling configuration
|
|
19
|
+
* @param config - Partial scaling configuration to apply
|
|
20
|
+
*/
|
|
21
|
+
export declare function setScalingConfig(config: Partial<ScalingConfig>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Update the scaling factor based on current viewport
|
|
24
|
+
*/
|
|
25
|
+
export declare function updateScalingFactor(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get the current scaling factor
|
|
28
|
+
* @returns The current scaling factor
|
|
29
|
+
*/
|
|
30
|
+
export declare function getScalingFactor(): number;
|
|
31
|
+
/**
|
|
32
|
+
* Convert a design pixel value to scaled pixels
|
|
33
|
+
* @param designPx - The design pixel value (based on 280px width)
|
|
34
|
+
* @returns The scaled pixel value
|
|
35
|
+
*/
|
|
36
|
+
export declare function scale(designPx: number): number;
|
|
37
|
+
/**
|
|
38
|
+
* Convert a scaled pixel value back to design pixels
|
|
39
|
+
* @param scaledPx - The scaled pixel value
|
|
40
|
+
* @returns The design pixel value
|
|
41
|
+
*/
|
|
42
|
+
export declare function unscale(scaledPx: number): number;
|
|
43
|
+
/**
|
|
44
|
+
* Initialize scaling system
|
|
45
|
+
* This is typically called automatically when the module loads
|
|
46
|
+
*/
|
|
47
|
+
export declare function initScaling(): void;
|
|
48
|
+
//# sourceMappingURL=scaling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaling.d.ts","sourceRoot":"","sources":["../../DS1/0-face/scaling.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD,eAAO,MAAM,aAAa,kDAAoB,CAAC;AAG/C,eAAO,MAAM,aAAa,yDAAuC,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,aAAmC,GAC1C,MAAM,CAYR;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CASrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAoB1C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAqBlC"}
|