tyrell-components 1.0.0-RC11 → 1.0.0-RC13
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/README.md +1 -0
- package/css/tyrell-colors-static.css +316 -0
- package/css/tyrell-theme.css +1454 -0
- package/css/tyrell.css +112 -420
- package/dist/tyrell-colors-static.css +316 -0
- package/dist/tyrell-theme.css +1454 -0
- package/dist/tyrell.css +112 -420
- package/dist/tyrell.js +1 -1
- package/lib/base/ty-component.d.ts +7 -0
- package/lib/base/ty-component.d.ts.map +1 -1
- package/lib/base/ty-component.js +27 -0
- package/lib/base/ty-component.js.map +1 -1
- package/lib/components/button.d.ts +16 -1
- package/lib/components/button.d.ts.map +1 -1
- package/lib/components/button.js +34 -4
- package/lib/components/button.js.map +1 -1
- package/lib/components/calendar-month.d.ts +23 -0
- package/lib/components/calendar-month.d.ts.map +1 -1
- package/lib/components/calendar-month.js +168 -11
- package/lib/components/calendar-month.js.map +1 -1
- package/lib/components/calendar-navigation.d.ts +31 -5
- package/lib/components/calendar-navigation.d.ts.map +1 -1
- package/lib/components/calendar-navigation.js +71 -31
- package/lib/components/calendar-navigation.js.map +1 -1
- package/lib/components/calendar.d.ts +17 -2
- package/lib/components/calendar.d.ts.map +1 -1
- package/lib/components/calendar.js +83 -12
- package/lib/components/calendar.js.map +1 -1
- package/lib/components/checkbox.d.ts +14 -3
- package/lib/components/checkbox.d.ts.map +1 -1
- package/lib/components/checkbox.js +86 -57
- package/lib/components/checkbox.js.map +1 -1
- package/lib/components/copy.d.ts +14 -3
- package/lib/components/copy.d.ts.map +1 -1
- package/lib/components/copy.js +47 -25
- package/lib/components/copy.js.map +1 -1
- package/lib/components/date-picker.d.ts +26 -1
- package/lib/components/date-picker.d.ts.map +1 -1
- package/lib/components/date-picker.js +151 -32
- package/lib/components/date-picker.js.map +1 -1
- package/lib/components/input.d.ts +17 -2
- package/lib/components/input.d.ts.map +1 -1
- package/lib/components/input.js +104 -25
- package/lib/components/input.js.map +1 -1
- package/lib/components/modal.d.ts.map +1 -1
- package/lib/components/modal.js +28 -3
- package/lib/components/modal.js.map +1 -1
- package/lib/components/option.d.ts +0 -27
- package/lib/components/option.d.ts.map +1 -1
- package/lib/components/option.js +11 -102
- package/lib/components/option.js.map +1 -1
- package/lib/components/popup.d.ts.map +1 -1
- package/lib/components/popup.js +36 -2
- package/lib/components/popup.js.map +1 -1
- package/lib/components/radio.d.ts +6 -2
- package/lib/components/radio.d.ts.map +1 -1
- package/lib/components/radio.js +55 -13
- package/lib/components/radio.js.map +1 -1
- package/lib/components/scroll-container.d.ts +16 -0
- package/lib/components/scroll-container.d.ts.map +1 -1
- package/lib/components/scroll-container.js +105 -1
- package/lib/components/scroll-container.js.map +1 -1
- package/lib/components/select.d.ts +550 -0
- package/lib/components/select.d.ts.map +1 -0
- package/lib/components/select.js +2115 -0
- package/lib/components/select.js.map +1 -0
- package/lib/components/selected-tags.d.ts +93 -0
- package/lib/components/selected-tags.d.ts.map +1 -0
- package/lib/components/selected-tags.js +286 -0
- package/lib/components/selected-tags.js.map +1 -0
- package/lib/components/switch.d.ts +6 -3
- package/lib/components/switch.d.ts.map +1 -1
- package/lib/components/switch.js +54 -36
- package/lib/components/switch.js.map +1 -1
- package/lib/components/tabs.d.ts.map +1 -1
- package/lib/components/tabs.js +190 -25
- package/lib/components/tabs.js.map +1 -1
- package/lib/components/tag.d.ts +9 -1
- package/lib/components/tag.d.ts.map +1 -1
- package/lib/components/tag.js +41 -5
- package/lib/components/tag.js.map +1 -1
- package/lib/components/textarea.d.ts +3 -0
- package/lib/components/textarea.d.ts.map +1 -1
- package/lib/components/textarea.js +61 -6
- package/lib/components/textarea.js.map +1 -1
- package/lib/components/tooltip.d.ts +4 -2
- package/lib/components/tooltip.d.ts.map +1 -1
- package/lib/components/tooltip.js +109 -70
- package/lib/components/tooltip.js.map +1 -1
- package/lib/components/wizard.d.ts.map +1 -1
- package/lib/components/wizard.js +22 -3
- package/lib/components/wizard.js.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -2
- package/lib/index.js.map +1 -1
- package/lib/styles/button.d.ts +41 -6
- package/lib/styles/button.d.ts.map +1 -1
- package/lib/styles/button.js +294 -254
- package/lib/styles/button.js.map +1 -1
- package/lib/styles/calendar-month.d.ts +3 -1
- package/lib/styles/calendar-month.d.ts.map +1 -1
- package/lib/styles/calendar-month.js +100 -67
- package/lib/styles/calendar-month.js.map +1 -1
- package/lib/styles/calendar-navigation.d.ts +1 -1
- package/lib/styles/calendar-navigation.d.ts.map +1 -1
- package/lib/styles/calendar-navigation.js +20 -28
- package/lib/styles/calendar-navigation.js.map +1 -1
- package/lib/styles/checkbox.d.ts +7 -5
- package/lib/styles/checkbox.d.ts.map +1 -1
- package/lib/styles/checkbox.js +125 -8
- package/lib/styles/checkbox.js.map +1 -1
- package/lib/styles/copy.d.ts +3 -1
- package/lib/styles/copy.d.ts.map +1 -1
- package/lib/styles/copy.js +61 -6
- package/lib/styles/copy.js.map +1 -1
- package/lib/styles/custom-scrollbar.d.ts +1 -1
- package/lib/styles/custom-scrollbar.d.ts.map +1 -1
- package/lib/styles/custom-scrollbar.js +2 -2
- package/lib/styles/date-picker.d.ts +3 -1
- package/lib/styles/date-picker.d.ts.map +1 -1
- package/lib/styles/date-picker.js +65 -103
- package/lib/styles/date-picker.js.map +1 -1
- package/lib/styles/file-upload.d.ts +1 -1
- package/lib/styles/file-upload.d.ts.map +1 -1
- package/lib/styles/file-upload.js +3 -3
- package/lib/styles/input.d.ts +3 -1
- package/lib/styles/input.d.ts.map +1 -1
- package/lib/styles/input.js +93 -419
- package/lib/styles/input.js.map +1 -1
- package/lib/styles/multiselect.d.ts +3 -1
- package/lib/styles/multiselect.d.ts.map +1 -1
- package/lib/styles/multiselect.js +26 -2
- package/lib/styles/multiselect.js.map +1 -1
- package/lib/styles/option.d.ts +1 -1
- package/lib/styles/option.d.ts.map +1 -1
- package/lib/styles/option.js +20 -47
- package/lib/styles/option.js.map +1 -1
- package/lib/styles/radio.d.ts +3 -1
- package/lib/styles/radio.d.ts.map +1 -1
- package/lib/styles/radio.js +24 -21
- package/lib/styles/radio.js.map +1 -1
- package/lib/styles/scroll-container.d.ts +1 -1
- package/lib/styles/scroll-container.d.ts.map +1 -1
- package/lib/styles/scroll-container.js +6 -0
- package/lib/styles/scroll-container.js.map +1 -1
- package/lib/styles/select-base.d.ts +9 -0
- package/lib/styles/select-base.d.ts.map +1 -0
- package/lib/styles/select-base.js +973 -0
- package/lib/styles/select-base.js.map +1 -0
- package/lib/styles/select.d.ts +12 -0
- package/lib/styles/select.d.ts.map +1 -0
- package/lib/styles/select.js +308 -0
- package/lib/styles/select.js.map +1 -0
- package/lib/styles/step.d.ts +1 -1
- package/lib/styles/step.d.ts.map +1 -1
- package/lib/styles/switch.d.ts +3 -1
- package/lib/styles/switch.d.ts.map +1 -1
- package/lib/styles/switch.js +25 -10
- package/lib/styles/switch.js.map +1 -1
- package/lib/styles/tab.d.ts +1 -1
- package/lib/styles/tab.d.ts.map +1 -1
- package/lib/styles/tabs.d.ts +1 -1
- package/lib/styles/tabs.d.ts.map +1 -1
- package/lib/styles/tabs.js +71 -1
- package/lib/styles/tabs.js.map +1 -1
- package/lib/styles/tag.d.ts +1 -1
- package/lib/styles/tag.d.ts.map +1 -1
- package/lib/styles/tag.js +40 -141
- package/lib/styles/tag.js.map +1 -1
- package/lib/styles/textarea.d.ts +1 -1
- package/lib/styles/textarea.d.ts.map +1 -1
- package/lib/styles/textarea.js +71 -37
- package/lib/styles/textarea.js.map +1 -1
- package/lib/styles/tooltip.d.ts +4 -2
- package/lib/styles/tooltip.d.ts.map +1 -1
- package/lib/styles/tooltip.js +4 -119
- package/lib/styles/tooltip.js.map +1 -1
- package/lib/styles/wizard.d.ts +1 -1
- package/lib/styles/wizard.d.ts.map +1 -1
- package/lib/styles/wizard.js +18 -6
- package/lib/styles/wizard.js.map +1 -1
- package/lib/types/common.d.ts +2 -1
- package/lib/types/common.d.ts.map +1 -1
- package/lib/types/common.js +15 -1
- package/lib/types/common.js.map +1 -1
- package/lib/utils/calendar-utils.d.ts +0 -48
- package/lib/utils/calendar-utils.d.ts.map +1 -1
- package/lib/utils/calendar-utils.js +0 -69
- package/lib/utils/calendar-utils.js.map +1 -1
- package/lib/utils/flavor-sheet.d.ts +32 -0
- package/lib/utils/flavor-sheet.d.ts.map +1 -0
- package/lib/utils/flavor-sheet.js +40 -0
- package/lib/utils/flavor-sheet.js.map +1 -0
- package/lib/utils/icon-registry.d.ts +0 -13
- package/lib/utils/icon-registry.d.ts.map +1 -1
- package/lib/utils/icon-registry.js +0 -35
- package/lib/utils/icon-registry.js.map +1 -1
- package/lib/utils/icons.d.ts +10 -0
- package/lib/utils/icons.d.ts.map +1 -0
- package/lib/utils/icons.js +10 -0
- package/lib/utils/icons.js.map +1 -0
- package/lib/utils/loader-registry.d.ts +2 -2
- package/lib/utils/loader-registry.js +2 -2
- package/lib/utils/locale.d.ts +0 -57
- package/lib/utils/locale.d.ts.map +1 -1
- package/lib/utils/locale.js +0 -89
- package/lib/utils/locale.js.map +1 -1
- package/lib/utils/number-format.d.ts +0 -21
- package/lib/utils/number-format.d.ts.map +1 -1
- package/lib/utils/number-format.js +0 -27
- package/lib/utils/number-format.js.map +1 -1
- package/lib/utils/positioning.d.ts +29 -22
- package/lib/utils/positioning.d.ts.map +1 -1
- package/lib/utils/positioning.js +23 -87
- package/lib/utils/positioning.js.map +1 -1
- package/lib/utils/scroll-lock.d.ts.map +1 -1
- package/lib/utils/scroll-lock.js +0 -1
- package/lib/utils/scroll-lock.js.map +1 -1
- package/lib/utils/styles.d.ts +0 -5
- package/lib/utils/styles.d.ts.map +1 -1
- package/lib/utils/styles.js +0 -7
- package/lib/utils/styles.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +22 -11
- package/css/tyrell-brand.css +0 -913
- package/dist/tyrell-brand.css +0 -913
- package/lib/components/dropdown.d.ts +0 -424
- package/lib/components/dropdown.d.ts.map +0 -1
- package/lib/components/dropdown.js +0 -1640
- package/lib/components/dropdown.js.map +0 -1
- package/lib/components/multiselect.d.ts +0 -397
- package/lib/components/multiselect.d.ts.map +0 -1
- package/lib/components/multiselect.js +0 -1595
- package/lib/components/multiselect.js.map +0 -1
- package/lib/styles/dropdown.d.ts +0 -12
- package/lib/styles/dropdown.d.ts.map +0 -1
- package/lib/styles/dropdown.js +0 -1081
- package/lib/styles/dropdown.js.map +0 -1
|
@@ -132,34 +132,6 @@ export function registerIcons(icons) {
|
|
|
132
132
|
scheduleNotification(changedIcons);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
-
/**
|
|
136
|
-
* Register a single icon
|
|
137
|
-
* Always updates memory and notifies watchers immediately
|
|
138
|
-
* Cache update happens in background (only if different from cached version)
|
|
139
|
-
* @param name Icon name
|
|
140
|
-
* @param svg SVG string
|
|
141
|
-
*/
|
|
142
|
-
export function registerIcon(name, svg) {
|
|
143
|
-
// Always set in memory registry (fast, synchronous)
|
|
144
|
-
iconRegistry.set(name, svg);
|
|
145
|
-
// Notify watchers immediately (synchronous)
|
|
146
|
-
scheduleNotification(new Set([name]));
|
|
147
|
-
// Compare with cache in background to avoid unnecessary cache writes
|
|
148
|
-
getCachedIcon(name).then(cachedSvg => {
|
|
149
|
-
// Only write to cache if content actually changed
|
|
150
|
-
if (cachedSvg !== svg) {
|
|
151
|
-
cacheIcon(name, svg).catch(() => {
|
|
152
|
-
// Error already logged in cacheIcon
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
// If cachedSvg === svg, skip cache write (already up to date)
|
|
156
|
-
}).catch(() => {
|
|
157
|
-
// No cached version or error reading cache - write new icon
|
|
158
|
-
cacheIcon(name, svg).catch(() => {
|
|
159
|
-
// Error already logged in cacheIcon
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
135
|
/**
|
|
164
136
|
* Lookup an icon by name from memory
|
|
165
137
|
* NOTE: This does NOT check cache - use getCachedIcon() for that
|
|
@@ -268,13 +240,6 @@ function notifyWatchers(changedIcons) {
|
|
|
268
240
|
export function getIconNames() {
|
|
269
241
|
return Array.from(iconRegistry.keys());
|
|
270
242
|
}
|
|
271
|
-
/**
|
|
272
|
-
* Get registry size (memory only)
|
|
273
|
-
* @returns Number of registered icons in memory
|
|
274
|
-
*/
|
|
275
|
-
export function getIconCount() {
|
|
276
|
-
return iconRegistry.size;
|
|
277
|
-
}
|
|
278
243
|
/**
|
|
279
244
|
* Get cache statistics
|
|
280
245
|
* @returns Promise with cache info
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-registry.js","sourceRoot":"","sources":["../../src/utils/icon-registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"icon-registry.js","sourceRoot":"","sources":["../../src/utils/icon-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared inline SVG icons for shadow-DOM components.
|
|
3
|
+
*
|
|
4
|
+
* Kept inline (not the icon registry) because shadow roots must render
|
|
5
|
+
* without registry setup. Styling hooks target the wrapper element
|
|
6
|
+
* (e.g. `.required-icon svg`), never the svg's own classes.
|
|
7
|
+
*/
|
|
8
|
+
/** Lucide `asterisk` — required-field indicator. */
|
|
9
|
+
export declare const REQUIRED_ICON_SVG = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 6v12\"/><path d=\"M17.196 9 6.804 15\"/><path d=\"m6.804 9 10.392 6\"/></svg>";
|
|
10
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/utils/icons.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,4QAAwP,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared inline SVG icons for shadow-DOM components.
|
|
3
|
+
*
|
|
4
|
+
* Kept inline (not the icon registry) because shadow roots must render
|
|
5
|
+
* without registry setup. Styling hooks target the wrapper element
|
|
6
|
+
* (e.g. `.required-icon svg`), never the svg's own classes.
|
|
7
|
+
*/
|
|
8
|
+
/** Lucide `asterisk` — required-field indicator. */
|
|
9
|
+
export const REQUIRED_ICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 6v12"/><path d="M17.196 9 6.804 15"/><path d="m6.804 9 10.392 6"/></svg>`;
|
|
10
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/utils/icons.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oDAAoD;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,qPAAqP,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Global loader-icon registry.
|
|
3
3
|
*
|
|
4
4
|
* Set once at app bootstrap to override the default spinner SVG used by
|
|
5
|
-
* every loading-aware component (`ty-button`, `ty-
|
|
6
|
-
*
|
|
5
|
+
* every loading-aware component (`ty-button`, `ty-select`, etc.). Components
|
|
6
|
+
* call `getLoaderSvg()` on every render, so changing the
|
|
7
7
|
* registered SVG affects future renders.
|
|
8
8
|
*
|
|
9
9
|
* The wrapper element rotates the SVG with `transform: rotate()`, so prefer
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Global loader-icon registry.
|
|
3
3
|
*
|
|
4
4
|
* Set once at app bootstrap to override the default spinner SVG used by
|
|
5
|
-
* every loading-aware component (`ty-button`, `ty-
|
|
6
|
-
*
|
|
5
|
+
* every loading-aware component (`ty-button`, `ty-select`, etc.). Components
|
|
6
|
+
* call `getLoaderSvg()` on every render, so changing the
|
|
7
7
|
* registered SVG affects future renders.
|
|
8
8
|
*
|
|
9
9
|
* The wrapper element rotates the SVG with `transform: rotate()`, so prefer
|
package/lib/utils/locale.d.ts
CHANGED
|
@@ -50,63 +50,6 @@
|
|
|
50
50
|
* ```
|
|
51
51
|
*/
|
|
52
52
|
export declare function getEffectiveLocale(element: HTMLElement, explicitLocale?: string | null): string;
|
|
53
|
-
/**
|
|
54
|
-
* Normalize a locale string to BCP 47 format.
|
|
55
|
-
* Handles common variations and ensures consistency.
|
|
56
|
-
*
|
|
57
|
-
* @param locale - The locale string to normalize
|
|
58
|
-
* @returns Normalized locale string
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```typescript
|
|
62
|
-
* normalizeLocale('en') // 'en'
|
|
63
|
-
* normalizeLocale('en_US') // 'en-US'
|
|
64
|
-
* normalizeLocale('EN-us') // 'en-US'
|
|
65
|
-
* ```
|
|
66
|
-
*/
|
|
67
|
-
export declare function normalizeLocale(locale: string): string;
|
|
68
|
-
/**
|
|
69
|
-
* Check if a locale string is valid BCP 47 format.
|
|
70
|
-
*
|
|
71
|
-
* @param locale - The locale string to validate
|
|
72
|
-
* @returns true if valid, false otherwise
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```typescript
|
|
76
|
-
* isValidLocale('en-US') // true
|
|
77
|
-
* isValidLocale('fr') // true
|
|
78
|
-
* isValidLocale('invalid!') // false
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export declare function isValidLocale(locale: string): boolean;
|
|
82
|
-
/**
|
|
83
|
-
* Get the language code from a locale (e.g., 'en' from 'en-US').
|
|
84
|
-
*
|
|
85
|
-
* @param locale - The locale string
|
|
86
|
-
* @returns The language code
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```typescript
|
|
90
|
-
* getLanguageCode('en-US') // 'en'
|
|
91
|
-
* getLanguageCode('fr-FR') // 'fr'
|
|
92
|
-
* getLanguageCode('de') // 'de'
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
export declare function getLanguageCode(locale: string): string;
|
|
96
|
-
/**
|
|
97
|
-
* Get the region/country code from a locale (e.g., 'US' from 'en-US').
|
|
98
|
-
*
|
|
99
|
-
* @param locale - The locale string
|
|
100
|
-
* @returns The region code, or undefined if not present
|
|
101
|
-
*
|
|
102
|
-
* @example
|
|
103
|
-
* ```typescript
|
|
104
|
-
* getRegionCode('en-US') // 'US'
|
|
105
|
-
* getRegionCode('fr-FR') // 'FR'
|
|
106
|
-
* getRegionCode('de') // undefined
|
|
107
|
-
* ```
|
|
108
|
-
*/
|
|
109
|
-
export declare function getRegionCode(locale: string): string | undefined;
|
|
110
53
|
/**
|
|
111
54
|
* Create a MutationObserver to watch for lang attribute changes.
|
|
112
55
|
* Useful for components that need to react to dynamic locale changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,MAAM,CA0BR;AAED
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,MAAM,CA0BR;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GACpC,MAAM,IAAI,CAyBZ"}
|
package/lib/utils/locale.js
CHANGED
|
@@ -73,95 +73,6 @@ export function getEffectiveLocale(element, explicitLocale) {
|
|
|
73
73
|
// 5. Ultimate fallback
|
|
74
74
|
return 'en-US';
|
|
75
75
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Normalize a locale string to BCP 47 format.
|
|
78
|
-
* Handles common variations and ensures consistency.
|
|
79
|
-
*
|
|
80
|
-
* @param locale - The locale string to normalize
|
|
81
|
-
* @returns Normalized locale string
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
* ```typescript
|
|
85
|
-
* normalizeLocale('en') // 'en'
|
|
86
|
-
* normalizeLocale('en_US') // 'en-US'
|
|
87
|
-
* normalizeLocale('EN-us') // 'en-US'
|
|
88
|
-
* ```
|
|
89
|
-
*/
|
|
90
|
-
export function normalizeLocale(locale) {
|
|
91
|
-
if (!locale)
|
|
92
|
-
return 'en-US';
|
|
93
|
-
// Replace underscores with hyphens (en_US -> en-US)
|
|
94
|
-
let normalized = locale.replace(/_/g, '-');
|
|
95
|
-
// Split into parts
|
|
96
|
-
const parts = normalized.split('-');
|
|
97
|
-
if (parts.length === 0)
|
|
98
|
-
return 'en-US';
|
|
99
|
-
// Lowercase language code (EN -> en)
|
|
100
|
-
parts[0] = parts[0].toLowerCase();
|
|
101
|
-
// Uppercase country code if present (us -> US)
|
|
102
|
-
if (parts.length > 1) {
|
|
103
|
-
parts[1] = parts[1].toUpperCase();
|
|
104
|
-
}
|
|
105
|
-
return parts.join('-');
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Check if a locale string is valid BCP 47 format.
|
|
109
|
-
*
|
|
110
|
-
* @param locale - The locale string to validate
|
|
111
|
-
* @returns true if valid, false otherwise
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* ```typescript
|
|
115
|
-
* isValidLocale('en-US') // true
|
|
116
|
-
* isValidLocale('fr') // true
|
|
117
|
-
* isValidLocale('invalid!') // false
|
|
118
|
-
* ```
|
|
119
|
-
*/
|
|
120
|
-
export function isValidLocale(locale) {
|
|
121
|
-
if (!locale)
|
|
122
|
-
return false;
|
|
123
|
-
// BCP 47 language tag pattern
|
|
124
|
-
// Simplified: allows language-region format
|
|
125
|
-
const pattern = /^[a-z]{2,3}(-[A-Z]{2})?$/;
|
|
126
|
-
return pattern.test(locale);
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Get the language code from a locale (e.g., 'en' from 'en-US').
|
|
130
|
-
*
|
|
131
|
-
* @param locale - The locale string
|
|
132
|
-
* @returns The language code
|
|
133
|
-
*
|
|
134
|
-
* @example
|
|
135
|
-
* ```typescript
|
|
136
|
-
* getLanguageCode('en-US') // 'en'
|
|
137
|
-
* getLanguageCode('fr-FR') // 'fr'
|
|
138
|
-
* getLanguageCode('de') // 'de'
|
|
139
|
-
* ```
|
|
140
|
-
*/
|
|
141
|
-
export function getLanguageCode(locale) {
|
|
142
|
-
if (!locale)
|
|
143
|
-
return 'en';
|
|
144
|
-
return locale.split('-')[0].toLowerCase();
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Get the region/country code from a locale (e.g., 'US' from 'en-US').
|
|
148
|
-
*
|
|
149
|
-
* @param locale - The locale string
|
|
150
|
-
* @returns The region code, or undefined if not present
|
|
151
|
-
*
|
|
152
|
-
* @example
|
|
153
|
-
* ```typescript
|
|
154
|
-
* getRegionCode('en-US') // 'US'
|
|
155
|
-
* getRegionCode('fr-FR') // 'FR'
|
|
156
|
-
* getRegionCode('de') // undefined
|
|
157
|
-
* ```
|
|
158
|
-
*/
|
|
159
|
-
export function getRegionCode(locale) {
|
|
160
|
-
if (!locale)
|
|
161
|
-
return undefined;
|
|
162
|
-
const parts = locale.split('-');
|
|
163
|
-
return parts.length > 1 ? parts[1].toUpperCase() : undefined;
|
|
164
|
-
}
|
|
165
76
|
/**
|
|
166
77
|
* Create a MutationObserver to watch for lang attribute changes.
|
|
167
78
|
* Useful for components that need to react to dynamic locale changes.
|
package/lib/utils/locale.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAoB,EACpB,cAA8B;IAE9B,sDAAsD;IACtD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gDAAgD;IAChD,2CAA2C;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IAED,wCAAwC;IACxC,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,uCAAuC;IACvC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,uBAAuB;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAoB,EACpB,cAA8B;IAE9B,sDAAsD;IACtD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gDAAgD;IAChD,2CAA2C;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IAED,wCAAwC;IACxC,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,uCAAuC;IACvC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,uBAAuB;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAoB,EACpB,QAAqC;IAErC,IAAI,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEhD,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,EAAE,EAAE;QAClD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;gBACxE,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC9C,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;oBAChC,aAAa,GAAG,SAAS,CAAC;oBAC1B,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,qCAAqC;IACrC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;QACzC,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,CAAC,MAAM,CAAC;QACzB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,0BAA0B;IAC1B,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -59,25 +59,4 @@ export declare function parseNumericValue(value: string): number | null;
|
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
61
|
export declare function shouldFormat(type: string): boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Format currency with locale
|
|
64
|
-
* Convenience function for currency formatting
|
|
65
|
-
*/
|
|
66
|
-
export declare function formatCurrency(value: number, currency?: string, locale?: string): string;
|
|
67
|
-
/**
|
|
68
|
-
* Format percent with locale
|
|
69
|
-
* Convenience function for percent formatting
|
|
70
|
-
*
|
|
71
|
-
* Note: Expects value as 0.15 for 15%
|
|
72
|
-
*/
|
|
73
|
-
export declare function formatPercent(value: number, locale?: string, precision?: number): string;
|
|
74
|
-
/**
|
|
75
|
-
* Format compact notation
|
|
76
|
-
* Convenience function for compact formatting
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* formatCompact(1234567) // "1.2M"
|
|
80
|
-
* formatCompact(1234) // "1.2K"
|
|
81
|
-
*/
|
|
82
|
-
export declare function formatCompact(value: number, locale?: string): string;
|
|
83
62
|
//# sourceMappingURL=number-format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-format.d.ts","sourceRoot":"","sources":["../../src/utils/number-format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AAE5E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,GACnB,MAAM,CA4CR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2B9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD
|
|
1
|
+
{"version":3,"file":"number-format.d.ts","sourceRoot":"","sources":["../../src/utils/number-format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AAE5E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,GACnB,MAAM,CA4CR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2B9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD"}
|
|
@@ -113,31 +113,4 @@ export function parseNumericValue(value) {
|
|
|
113
113
|
export function shouldFormat(type) {
|
|
114
114
|
return ['number', 'currency', 'percent', 'compact'].includes(type);
|
|
115
115
|
}
|
|
116
|
-
/**
|
|
117
|
-
* Format currency with locale
|
|
118
|
-
* Convenience function for currency formatting
|
|
119
|
-
*/
|
|
120
|
-
export function formatCurrency(value, currency = 'USD', locale = 'en-US') {
|
|
121
|
-
return formatNumber(value, { type: 'currency', currency, locale });
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Format percent with locale
|
|
125
|
-
* Convenience function for percent formatting
|
|
126
|
-
*
|
|
127
|
-
* Note: Expects value as 0.15 for 15%
|
|
128
|
-
*/
|
|
129
|
-
export function formatPercent(value, locale = 'en-US', precision) {
|
|
130
|
-
return formatNumber(value, { type: 'percent', locale, precision });
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Format compact notation
|
|
134
|
-
* Convenience function for compact formatting
|
|
135
|
-
*
|
|
136
|
-
* @example
|
|
137
|
-
* formatCompact(1234567) // "1.2M"
|
|
138
|
-
* formatCompact(1234) // "1.2K"
|
|
139
|
-
*/
|
|
140
|
-
export function formatCompact(value, locale = 'en-US') {
|
|
141
|
-
return formatNumber(value, { type: 'compact', locale });
|
|
142
|
-
}
|
|
143
116
|
//# sourceMappingURL=number-format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-format.js","sourceRoot":"","sources":["../../src/utils/number-format.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"number-format.js","sourceRoot":"","sources":["../../src/utils/number-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,33 +111,40 @@ export declare const placementPreferences: {
|
|
|
111
111
|
tooltip: Placement[];
|
|
112
112
|
dropdown: Placement[];
|
|
113
113
|
};
|
|
114
|
-
/**
|
|
115
|
-
* Get element dimensions relative to viewport with calculated center points
|
|
116
|
-
*/
|
|
117
|
-
export declare function getElementRect(el: HTMLElement): ElementRect;
|
|
118
|
-
/**
|
|
119
|
-
* Get viewport dimensions and scroll position
|
|
120
|
-
*/
|
|
121
|
-
export declare function getViewportRect(): ViewportRect;
|
|
122
|
-
/**
|
|
123
|
-
* Calculate position for a specific placement
|
|
124
|
-
* Returns x, y coordinates and overflow information
|
|
125
|
-
*/
|
|
126
|
-
export declare function calculatePlacement(options: CalculatePlacementOptions): PositionResult;
|
|
127
114
|
/**
|
|
128
115
|
* Find the best position for the floating element
|
|
129
116
|
* Tries all preference placements and returns the one that fits best
|
|
130
117
|
*/
|
|
131
118
|
export declare function findBestPosition(options: PositionOptions): PositionResult;
|
|
132
119
|
/**
|
|
133
|
-
*
|
|
134
|
-
* Continuously monitors and updates position when target or floating element changes
|
|
120
|
+
* Below/above placement for trigger-anchored `<dialog>` popups.
|
|
135
121
|
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
122
|
+
* Unlike findBestPosition (12-placement engine for non-modal floats), these
|
|
123
|
+
* popups only ever open below or above their trigger, and their CSS anchors
|
|
124
|
+
* with `top:` when below but `bottom:` when above — so both conventions are
|
|
125
|
+
* returned and the caller picks by `below`.
|
|
126
|
+
*/
|
|
127
|
+
export interface AnchoredPopupOptions {
|
|
128
|
+
anchorRect: DOMRect | ElementRect;
|
|
129
|
+
popupWidth: number;
|
|
130
|
+
popupHeight: number;
|
|
131
|
+
/** Gap between trigger and popup edge (px, default 4) */
|
|
132
|
+
gap?: number;
|
|
133
|
+
/** Minimum distance from viewport edges (px, default 8) */
|
|
134
|
+
padding?: number;
|
|
135
|
+
/** Horizontal anchor edge: trigger's left edge ("start", default) or
|
|
136
|
+
* right edge ("end"). Either way the result is clamped into the
|
|
137
|
+
* viewport, same as before. */
|
|
138
|
+
align?: "start" | "end";
|
|
139
|
+
}
|
|
140
|
+
export interface AnchoredPopupPosition {
|
|
141
|
+
/** Popup left edge, viewport coords, clamped into view */
|
|
142
|
+
x: number;
|
|
143
|
+
/** CSS `top` value when below */
|
|
144
|
+
topY: number;
|
|
145
|
+
/** CSS `bottom` value when above */
|
|
146
|
+
bottomY: number;
|
|
147
|
+
below: boolean;
|
|
148
|
+
}
|
|
149
|
+
export declare function computeAnchoredPosition(o: AnchoredPopupOptions): AnchoredPopupPosition;
|
|
143
150
|
//# sourceMappingURL=positioning.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positioning.d.ts","sourceRoot":"","sources":["../../src/utils/positioning.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,WAAW,GAAG,KAAK,GAAG,SAAS,GAC/B,aAAa,GAAG,OAAO,GAAG,WAAW,GACrC,cAAc,GAAG,QAAQ,GAAG,YAAY,GACxC,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC;IAC5B,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,WAAW,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;AAMnC;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe,CAuDzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;aAI1B,SAAS,EAAE;aAIX,SAAS,EAAE;cAIX,SAAS,EAAE;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"positioning.d.ts","sourceRoot":"","sources":["../../src/utils/positioning.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/positioning.js
CHANGED
|
@@ -91,7 +91,7 @@ export const placementPreferences = {
|
|
|
91
91
|
/**
|
|
92
92
|
* Get element dimensions relative to viewport with calculated center points
|
|
93
93
|
*/
|
|
94
|
-
|
|
94
|
+
function getElementRect(el) {
|
|
95
95
|
const rect = el.getBoundingClientRect();
|
|
96
96
|
return {
|
|
97
97
|
top: rect.top,
|
|
@@ -107,7 +107,7 @@ export function getElementRect(el) {
|
|
|
107
107
|
/**
|
|
108
108
|
* Get viewport dimensions and scroll position
|
|
109
109
|
*/
|
|
110
|
-
|
|
110
|
+
function getViewportRect() {
|
|
111
111
|
return {
|
|
112
112
|
width: window.innerWidth,
|
|
113
113
|
height: window.innerHeight,
|
|
@@ -122,7 +122,7 @@ export function getViewportRect() {
|
|
|
122
122
|
* Calculate position for a specific placement
|
|
123
123
|
* Returns x, y coordinates and overflow information
|
|
124
124
|
*/
|
|
125
|
-
|
|
125
|
+
function calculatePlacement(options) {
|
|
126
126
|
const { targetRect, floatingRect, placement, offset, padding, scrollbarWidth, containerPadding, } = options;
|
|
127
127
|
const config = placements[placement];
|
|
128
128
|
const { vertical, horizontal, orientation } = config;
|
|
@@ -219,90 +219,26 @@ export function findBestPosition(options) {
|
|
|
219
219
|
}
|
|
220
220
|
return bestPosition;
|
|
221
221
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
const update = () => {
|
|
243
|
-
if (!active)
|
|
244
|
-
return;
|
|
245
|
-
const position = findBestPosition({
|
|
246
|
-
targetEl,
|
|
247
|
-
floatingEl,
|
|
248
|
-
...config,
|
|
249
|
-
});
|
|
250
|
-
updateFn(position);
|
|
251
|
-
};
|
|
252
|
-
// Initial update
|
|
253
|
-
update();
|
|
254
|
-
// Debounced update for resize events
|
|
255
|
-
const debouncedUpdate = () => {
|
|
256
|
-
if (resizeTimeout !== null) {
|
|
257
|
-
clearTimeout(resizeTimeout);
|
|
258
|
-
}
|
|
259
|
-
resizeTimeout = window.setTimeout(() => {
|
|
260
|
-
resizeTimeout = null;
|
|
261
|
-
update();
|
|
262
|
-
}, 10);
|
|
263
|
-
};
|
|
264
|
-
// RAF-based scroll handler for smooth updates
|
|
265
|
-
const handleScroll = () => {
|
|
266
|
-
if (!active)
|
|
267
|
-
return;
|
|
268
|
-
if (scrollRafId === null) {
|
|
269
|
-
scrollRafId = requestAnimationFrame(() => {
|
|
270
|
-
scrollRafId = null;
|
|
271
|
-
update();
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
};
|
|
275
|
-
// Observe size changes on target, floating element, and body
|
|
276
|
-
resizeObserver = new ResizeObserver(debouncedUpdate);
|
|
277
|
-
resizeObserver.observe(targetEl);
|
|
278
|
-
resizeObserver.observe(floatingEl);
|
|
279
|
-
resizeObserver.observe(document.body);
|
|
280
|
-
// Observe DOM attribute changes on target
|
|
281
|
-
mutationObserver = new MutationObserver(update);
|
|
282
|
-
mutationObserver.observe(targetEl, {
|
|
283
|
-
attributes: true,
|
|
284
|
-
attributeFilter: ['class', 'style'],
|
|
285
|
-
});
|
|
286
|
-
// Listen for scroll events (capture phase for better performance)
|
|
287
|
-
window.addEventListener('scroll', handleScroll, true);
|
|
288
|
-
window.addEventListener('resize', debouncedUpdate);
|
|
289
|
-
// Return cleanup function
|
|
290
|
-
return () => {
|
|
291
|
-
active = false;
|
|
292
|
-
if (scrollRafId !== null) {
|
|
293
|
-
cancelAnimationFrame(scrollRafId);
|
|
294
|
-
}
|
|
295
|
-
if (resizeTimeout !== null) {
|
|
296
|
-
clearTimeout(resizeTimeout);
|
|
297
|
-
}
|
|
298
|
-
if (resizeObserver) {
|
|
299
|
-
resizeObserver.disconnect();
|
|
300
|
-
}
|
|
301
|
-
if (mutationObserver) {
|
|
302
|
-
mutationObserver.disconnect();
|
|
303
|
-
}
|
|
304
|
-
window.removeEventListener('scroll', handleScroll, true);
|
|
305
|
-
window.removeEventListener('resize', debouncedUpdate);
|
|
222
|
+
export function computeAnchoredPosition(o) {
|
|
223
|
+
const gap = o.gap ?? 4;
|
|
224
|
+
const padding = o.padding ?? 8;
|
|
225
|
+
const vw = window.innerWidth;
|
|
226
|
+
const vh = window.innerHeight;
|
|
227
|
+
const spaceBelow = vh - o.anchorRect.bottom;
|
|
228
|
+
const spaceAbove = o.anchorRect.top;
|
|
229
|
+
// Below when it fits — and when neither side fits, the side with MORE room
|
|
230
|
+
// instead of blindly flipping up (a trigger near the viewport top used to
|
|
231
|
+
// clip the popup off-screen).
|
|
232
|
+
const below = spaceBelow >= o.popupHeight + gap + padding || spaceBelow >= spaceAbove;
|
|
233
|
+
// Anchor to the trigger's left edge ("start") or right edge ("end"),
|
|
234
|
+
// clamped into the viewport either way.
|
|
235
|
+
const rawX = o.align === "end" ? o.anchorRect.right - o.popupWidth : o.anchorRect.left;
|
|
236
|
+
const x = Math.max(padding, Math.min(rawX, vw - o.popupWidth - padding));
|
|
237
|
+
return {
|
|
238
|
+
x,
|
|
239
|
+
topY: o.anchorRect.bottom + gap,
|
|
240
|
+
bottomY: vh - o.anchorRect.top + gap,
|
|
241
|
+
below,
|
|
306
242
|
};
|
|
307
243
|
}
|
|
308
244
|
//# sourceMappingURL=positioning.js.map
|