@g9tm/lynxcontrols 1.4.5 → 1.4.11
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/dist/.tsbuildinfo +1 -1
- package/dist/base/index.d.ts +1 -1
- package/dist/base/index.d.ts.map +1 -1
- package/dist/base/index.jsx +1 -1
- package/dist/base/pressable.d.ts.map +1 -1
- package/dist/base/pressable.jsx +2 -1
- package/dist/base/pressable.jsx.map +1 -1
- package/dist/base/selection-item.d.ts +9 -1
- package/dist/base/selection-item.d.ts.map +1 -1
- package/dist/base/selection-item.jsx +10 -1
- package/dist/base/selection-item.jsx.map +1 -1
- package/dist/button/button.css +20 -0
- package/dist/button/button.css.map +1 -1
- package/dist/button/header-action-button.d.ts +5 -0
- package/dist/button/header-action-button.d.ts.map +1 -1
- package/dist/button/header-action-button.jsx +6 -1
- package/dist/button/header-action-button.jsx.map +1 -1
- package/dist/button/visuals.d.ts.map +1 -1
- package/dist/button/visuals.jsx +1 -1
- package/dist/button/visuals.jsx.map +1 -1
- package/dist/cascade/cascade-panel.d.ts.map +1 -1
- package/dist/cascade/cascade-panel.jsx +2 -2
- package/dist/cascade/cascade-panel.jsx.map +1 -1
- package/dist/edge-panel/edge-panel.jsx +5 -5
- package/dist/edge-panel/edge-panel.jsx.map +1 -1
- package/dist/expander/expander.d.ts.map +1 -1
- package/dist/expander/expander.jsx +2 -1
- package/dist/expander/expander.jsx.map +1 -1
- package/dist/fields/editor.d.ts.map +1 -1
- package/dist/fields/editor.jsx +2 -2
- package/dist/fields/editor.jsx.map +1 -1
- package/dist/fields/fields.css +21 -0
- package/dist/fields/fields.css.map +1 -1
- package/dist/fields/index.d.ts +1 -1
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.jsx +1 -1
- package/dist/fields/outlined-field.d.ts +27 -1
- package/dist/fields/outlined-field.d.ts.map +1 -1
- package/dist/fields/outlined-field.jsx +29 -2
- package/dist/fields/outlined-field.jsx.map +1 -1
- package/dist/fields/text-entry.d.ts.map +1 -1
- package/dist/fields/text-entry.jsx +2 -2
- package/dist/fields/text-entry.jsx.map +1 -1
- package/dist/host/host.css.map +1 -1
- package/dist/host/host.d.ts +3 -2
- package/dist/host/host.d.ts.map +1 -1
- package/dist/host/host.jsx +2 -2
- package/dist/host/host.jsx.map +1 -1
- package/dist/pickers/combo-box.d.ts +8 -0
- package/dist/pickers/combo-box.d.ts.map +1 -1
- package/dist/pickers/combo-box.jsx +51 -9
- package/dist/pickers/combo-box.jsx.map +1 -1
- package/dist/pickers/date-time-picker.d.ts +2 -2
- package/dist/pickers/date-time-picker.d.ts.map +1 -1
- package/dist/pickers/date-time-picker.jsx +4 -3
- package/dist/pickers/date-time-picker.jsx.map +1 -1
- package/dist/pickers/date-time.d.ts +5 -2
- package/dist/pickers/date-time.d.ts.map +1 -1
- package/dist/pickers/date-time.jsx +1 -1
- package/dist/pickers/date-time.jsx.map +1 -1
- package/dist/pickers/picker-sheet.d.ts +6 -2
- package/dist/pickers/picker-sheet.d.ts.map +1 -1
- package/dist/pickers/picker-sheet.jsx +2 -3
- package/dist/pickers/picker-sheet.jsx.map +1 -1
- package/dist/pickers/picker.d.ts.map +1 -1
- package/dist/pickers/picker.jsx +3 -2
- package/dist/pickers/picker.jsx.map +1 -1
- package/dist/pickers/pickers.css +27 -0
- package/dist/pickers/pickers.css.map +1 -1
- package/dist/pickers/timespan-picker.d.ts.map +1 -1
- package/dist/pickers/timespan-picker.jsx +3 -2
- package/dist/pickers/timespan-picker.jsx.map +1 -1
- package/dist/pickers/trigger.d.ts +3 -1
- package/dist/pickers/trigger.d.ts.map +1 -1
- package/dist/pickers/trigger.jsx +6 -1
- package/dist/pickers/trigger.jsx.map +1 -1
- package/dist/plus-button/model.d.ts.map +1 -1
- package/dist/plus-button/model.jsx +5 -1
- package/dist/plus-button/model.jsx.map +1 -1
- package/dist/popup/frame.jsx +2 -2
- package/dist/popup/frame.jsx.map +1 -1
- package/dist/popup/service.d.ts.map +1 -1
- package/dist/popup/service.jsx +2 -2
- package/dist/popup/service.jsx.map +1 -1
- package/dist/provider/provider.css +4 -0
- package/dist/provider/provider.css.map +1 -1
- package/dist/provider/provider.d.ts.map +1 -1
- package/dist/provider/provider.jsx +4 -2
- package/dist/provider/provider.jsx.map +1 -1
- package/dist/provider/settings.d.ts +12 -0
- package/dist/provider/settings.d.ts.map +1 -1
- package/dist/provider/settings.jsx +6 -3
- package/dist/provider/settings.jsx.map +1 -1
- package/dist/provider/theme.css +4 -0
- package/dist/provider/theme.css.map +1 -1
- package/dist/range-slider/math.d.ts +14 -4
- package/dist/range-slider/math.d.ts.map +1 -1
- package/dist/range-slider/math.jsx +16 -4
- package/dist/range-slider/math.jsx.map +1 -1
- package/dist/range-slider/range-slider.css +17 -0
- package/dist/range-slider/range-slider.css.map +1 -1
- package/dist/range-slider/range-slider.d.ts +11 -0
- package/dist/range-slider/range-slider.d.ts.map +1 -1
- package/dist/range-slider/range-slider.jsx +35 -13
- package/dist/range-slider/range-slider.jsx.map +1 -1
- package/dist/selection/index.d.ts +2 -1
- package/dist/selection/index.d.ts.map +1 -1
- package/dist/selection/index.jsx +2 -1
- package/dist/selection/selection-sheet.d.ts +8 -1
- package/dist/selection/selection-sheet.d.ts.map +1 -1
- package/dist/selection/selection-sheet.jsx +64 -11
- package/dist/selection/selection-sheet.jsx.map +1 -1
- package/dist/selection/selection.css +7 -0
- package/dist/selection/selection.css.map +1 -1
- package/dist/selection/window.d.ts +29 -0
- package/dist/selection/window.d.ts.map +1 -0
- package/dist/selection/window.jsx +24 -0
- package/dist/selection/window.jsx.map +1 -0
- package/dist/sheet/frame.d.ts.map +1 -1
- package/dist/sheet/frame.jsx +35 -9
- package/dist/sheet/frame.jsx.map +1 -1
- package/dist/sheet/header.d.ts.map +1 -1
- package/dist/sheet/header.jsx +3 -1
- package/dist/sheet/header.jsx.map +1 -1
- package/dist/sheet/index.d.ts +2 -1
- package/dist/sheet/index.d.ts.map +1 -1
- package/dist/sheet/index.jsx +2 -1
- package/dist/sheet/motion.d.ts.map +1 -1
- package/dist/sheet/motion.jsx +14 -0
- package/dist/sheet/motion.jsx.map +1 -1
- package/dist/sheet/options.d.ts +26 -0
- package/dist/sheet/options.d.ts.map +1 -1
- package/dist/sheet/options.jsx +2 -1
- package/dist/sheet/options.jsx.map +1 -1
- package/dist/sheet/scroll-indicator.d.ts +33 -0
- package/dist/sheet/scroll-indicator.d.ts.map +1 -0
- package/dist/sheet/scroll-indicator.jsx +84 -0
- package/dist/sheet/scroll-indicator.jsx.map +1 -0
- package/dist/sheet/service.d.ts +8 -0
- package/dist/sheet/service.d.ts.map +1 -1
- package/dist/sheet/service.jsx +15 -4
- package/dist/sheet/service.jsx.map +1 -1
- package/dist/sheet/sheet.css +14 -0
- package/dist/sheet/sheet.css.map +1 -1
- package/dist/sheet/sizing.d.ts +2 -0
- package/dist/sheet/sizing.d.ts.map +1 -1
- package/dist/sheet/sizing.jsx +2 -1
- package/dist/sheet/sizing.jsx.map +1 -1
- package/dist/tab-bar/tab-bar.d.ts.map +1 -1
- package/dist/tab-bar/tab-bar.jsx +11 -6
- package/dist/tab-bar/tab-bar.jsx.map +1 -1
- package/dist/toast/service.jsx +3 -3
- package/dist/toast/service.jsx.map +1 -1
- package/dist/toast/store.d.ts.map +1 -1
- package/dist/toast/store.jsx +3 -2
- package/dist/toast/store.jsx.map +1 -1
- package/dist/toggle/chip-group.d.ts +9 -1
- package/dist/toggle/chip-group.d.ts.map +1 -1
- package/dist/toggle/chip-group.jsx +51 -12
- package/dist/toggle/chip-group.jsx.map +1 -1
- package/dist/toggle/switch.d.ts +1 -1
- package/dist/toggle/switch.d.ts.map +1 -1
- package/dist/toggle/switch.jsx +3 -2
- package/dist/toggle/switch.jsx.map +1 -1
- package/dist/toggle/toggle.css +20 -0
- package/dist/toggle/toggle.css.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/provider/provider.css"],"names":[],"mappings":"AACA;EAAE,sBAAsB;EACtB,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;AACf;;AAIA;EADE,cAAc;AAChB;;AAIA;EADE,cAAc;AAChB","sourcesContent":["/* G9Provider root: fills the LynxView and carries the theme variables (set inline / with setProperty). */\n.g9-provider {\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n height: 100%;\n}\n\n/* direction does not inherit in Lynx (plan/specs/02 §2): every G9 root sets it; these are the provider's. */\n.g9-dir-ltr {\n direction: ltr;\n}\n\n.g9-dir-rtl {\n direction: rtl;\n}\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://./src/provider/provider.css"],"names":[],"mappings":"AACA;EAAE,sBAAsB;EACtB,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;AACf;;AAIA;EADE,cAAc;AAChB;;AAIA;EADE,cAAc;AAChB;;AAOA;EAJE,uBAAuB;AACzB","sourcesContent":["/* G9Provider root: fills the LynxView and carries the theme variables (set inline / with setProperty). */\n.g9-provider {\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n height: 100%;\n}\n\n/* direction does not inherit in Lynx (plan/specs/02 §2): every G9 root sets it; these are the provider's. */\n.g9-dir-ltr {\n direction: ltr;\n}\n\n.g9-dir-rtl {\n direction: rtl;\n}\n\n/* Reduced motion (setG9MotionScale(0), the provider's `g9-motion-off`): every CSS transition of the kit ends at once, as\n the JS-timed motion does. Listed one by one (no universal selector); a new transition in a component belongs here too\n (provider-motion.test.ts checks); another package lists its own in its own stylesheet (progress-overlay.css). The infinite spinners keep turning: they say «busy», they move nothing a test waits for. */\n.g9-motion-off .g9-deferred__cover,\n.g9-motion-off .g9-progress__fill,\n.g9-motion-off .g9-expander__chevron,\n.g9-motion-off .g9-expander__clip,\n.g9-motion-off .g9-field__label,\n.g9-motion-off .g9-page-loading,\n.g9-motion-off .g9-toast__fill,\n.g9-motion-off .g9-switch__track,\n.g9-motion-off .g9-switch__thumb,\n.g9-motion-off .g9-chip,\n.g9-motion-off .g9-chip__check {\n transition-duration: 0ms;\n}\n"],"sourceRoot":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,EAGlB,KAAK,cAAc,EACnB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,EAGlB,KAAK,cAAc,EACnB,KAAK,YAAY,EAMlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAA8D,MAAM,gBAAgB,CAAC;AAgB5G,OAAO,EAAE,KAAK,UAAU,EAA4C,MAAM,YAAY,CAAC;AAEvF,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AAErB,mCAAmC;AACnC,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;IACvD;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC;IAC/C,kHAAkH;IAClH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AA6BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,CAmO5D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { assertRequiredCapabilities, createCultureStore, createDiagnostics, createIconFontRegistry, createPreferences, createSafeExecutor, createStrings, createThemeStore, toCssVariables, toLayoutCssVariables, toMetricCssVariables } from "@g9tm/lynxcontrols-foundation";
|
|
1
|
+
import { assertRequiredCapabilities, createCultureStore, createDiagnostics, createIconFontRegistry, createPreferences, createSafeExecutor, createStrings, createThemeStore, g9MotionScale, subscribeG9Motion, toCssVariables, toLayoutCssVariables, toMetricCssVariables } from "@g9tm/lynxcontrols-foundation";
|
|
2
2
|
import { useEffect, useMemo, useRef, useState, useSyncExternalStore } from "@lynx-js/react";
|
|
3
3
|
import { useStableCallback } from "../base/use-stable-callback.jsx";
|
|
4
4
|
import { g9Hosts } from "../host/registry.jsx";
|
|
@@ -265,6 +265,8 @@ function G9Provider(props) {
|
|
|
265
265
|
settings.backEventName,
|
|
266
266
|
onBack
|
|
267
267
|
]);
|
|
268
|
+
const [motionOff, setMotionOff] = useState(()=>0 === g9MotionScale());
|
|
269
|
+
useEffect(()=>subscribeG9Motion((s)=>setMotionOff(0 === s)), []);
|
|
268
270
|
const rootStyle = null != fallbackVariables ? fallbackVariables : initialVariables;
|
|
269
271
|
const directionClass = 'rtl' === culture.direction ? 'g9-dir-rtl' : 'g9-dir-ltr';
|
|
270
272
|
return <G9CoreContext.Provider value={core}>
|
|
@@ -274,7 +276,7 @@ function G9Provider(props) {
|
|
|
274
276
|
<G9KeyboardContext.Provider value={keyboard}>
|
|
275
277
|
<G9WindowContext.Provider value={windowState}>
|
|
276
278
|
<G9InsetsContext.Provider value={insets}>
|
|
277
|
-
<view id={rootId} className={`g9-provider g9-theme-${initialScheme} ${directionClass}${props.className ? ` ${props.className}` : ''}`} style={rootStyle}>
|
|
279
|
+
<view id={rootId} className={`g9-provider g9-theme-${initialScheme} ${directionClass}${motionOff ? ' g9-motion-off' : ''}${props.className ? ` ${props.className}` : ''}`} style={rootStyle}>
|
|
278
280
|
{props.children}
|
|
279
281
|
</view>
|
|
280
282
|
</G9InsetsContext.Provider>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider/provider.jsx","sources":["../../src/provider/provider.tsx"],"sourcesContent":["import {\n assertRequiredCapabilities,\n createCultureStore,\n createDiagnostics,\n createIconFontRegistry,\n createPreferences,\n createSafeExecutor,\n createStrings,\n createThemeStore,\n type G9Capabilities,\n type G9ColorScheme,\n type G9CssVariables,\n type G9Culture,\n type G9CultureStore,\n type G9Diagnostics,\n type G9SafeInsets,\n type G9ThemeMode,\n type G9ThemeOptions,\n type G9ThemeStore,\n toCssVariables,\n toLayoutCssVariables,\n toMetricCssVariables,\n} from '@g9tm/lynxcontrols-foundation';\nimport { type ReactNode, useEffect, useMemo, useRef, useState, useSyncExternalStore } from '@lynx-js/react';\nimport { useStableCallback } from '../base/use-stable-callback';\nimport { g9Hosts } from '../host/registry';\nimport {\n G9CoreContext,\n G9CultureContext,\n G9DiagnosticsContext,\n G9InsetsContext,\n G9KeyboardContext,\n type G9KeyboardState,\n type G9ProviderCore,\n G9SettingsContext,\n G9WindowContext,\n type G9WindowState,\n} from './contexts';\nimport { addGlobalListener } from './global-events';\nimport { type G9Settings, g9DefaultErrorPresenter, resolveSettings } from './settings';\nimport { applyThemeVariables, changedVariables } from './theme-root';\nimport './provider.css';\nimport './theme.css';\n\n/** Props of {@link G9Provider}. */\nexport interface G9ProviderProps {\n /**\n * The app's platform services (plan/specs/01 §8). `clock`, `preferences` and `host` are required: a missing one\n * throws `G9CapabilityMissingError` naming it when the provider mounts. Pass a stable object.\n */\n readonly services: Partial<G9Capabilities>;\n /**\n * The culture: a store the app drives (`createCultureStore`), or a culture value / locale tag the provider keeps in\n * its own store (a new value switches it). Default `'en'`.\n */\n readonly culture?: G9CultureStore | G9Culture | string;\n /**\n * The theme: a store the app drives (`createThemeStore`), or options for the provider's own store (changes to\n * `mode`, `systemScheme`, `palettes`, `overrides` are applied to it). Default: system mode, stock palettes.\n */\n readonly theme?: G9ThemeStore | G9ThemeOptions;\n /** The platform's current colour scheme (MAUI `RequestedThemeChanged`); followed while the mode is `'system'`. */\n readonly systemScheme?: G9ColorScheme;\n /**\n * Save the theme mode in preferences and restore it at mount (MAUI `G9Theme.ChangeTheme` / `Init`, key\n * `g9controls.theme`, values 0 system, 1 light, 2 dark). Default `true`.\n */\n readonly persistTheme?: boolean;\n /** App-wide settings (plan/specs/03 §6). Validated at mount and on change. */\n readonly settings?: G9Settings;\n /** The diagnostics hub. Default: a hub the provider creates. */\n readonly diagnostics?: G9Diagnostics;\n readonly className?: string;\n readonly children?: ReactNode;\n}\n\nconst THEME_PREFERENCE_KEY = 'theme';\nconst THEME_MODES: readonly G9ThemeMode[] = ['system', 'light', 'dark'];\n\nlet providerSequence = 0;\n\nfunction isCultureStore(value: G9ProviderProps['culture']): value is G9CultureStore {\n return typeof value === 'object' && value !== null && typeof (value as G9CultureStore).getSnapshot === 'function';\n}\n\nfunction isThemeStore(value: G9ProviderProps['theme']): value is G9ThemeStore {\n return typeof value === 'object' && value !== null && typeof (value as G9ThemeStore).getSnapshot === 'function';\n}\n\n/** The logical window size the platform reports at startup (`SystemInfo` is in physical pixels). */\nfunction initialWindow(): G9WindowState {\n const info = (globalThis as { SystemInfo?: { pixelWidth?: number; pixelHeight?: number; pixelRatio?: number } })\n .SystemInfo;\n const ratio = info?.pixelRatio && info.pixelRatio > 0 ? info.pixelRatio : 1;\n return Object.freeze({ width: (info?.pixelWidth ?? 0) / ratio, height: (info?.pixelHeight ?? 0) / ratio });\n}\n\nconst HIDDEN_KEYBOARD: G9KeyboardState = Object.freeze({ visible: false, height: 0, compatHeight: 0 });\n\nfunction finite(value: unknown): number {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : 0;\n}\n\n/**\n * The root every G9 component lives in (plan/specs/01 §5, MAUI `G9Theme`/`G9Culture`/`G9Strings` statics,\n * `G9ServiceProvider`, `G9ScreenHelper`, `G9KeyboardHelper`): culture and strings, the theme as CSS variables on one\n * root `<view>`, settings, services and capabilities, the diagnostics hub, the shared safe executor, keyboard, window\n * and safe-area state, and the dispatch of the system back event to the active `G9Host`. Mount it once per LynxView.\n *\n * - A theme change updates the root's CSS variables with `setProperty`: nothing re-renders except `useG9Theme`\n * readers. A culture change re-renders culture readers.\n * - One `keyboardstatuschanged` and one `onWindowResize` listener for the whole tree.\n * - The back event (`settings.backEventName`, default `g9:back`) goes to the active host's back stack; when nothing\n * handles it, `services.host.exit()` runs (desktop hosts send the same event for Escape).\n * - Unmounting removes every listener, subscription and timer it created.\n */\nexport function G9Provider(props: G9ProviderProps): ReactNode {\n const { services, persistTheme = true } = props;\n assertRequiredCapabilities(services);\n\n const [ownDiagnostics] = useState(createDiagnostics);\n const diagnostics = props.diagnostics ?? ownDiagnostics;\n const [iconFonts] = useState(createIconFontRegistry);\n const settings = useMemo(() => resolveSettings(props.settings, iconFonts), [props.settings, iconFonts]);\n\n // Culture: the app's store, or one the provider keeps in step with the prop.\n const cultureProp = props.culture ?? 'en';\n const [ownCulture] = useState(() => createCultureStore(isCultureStore(cultureProp) ? 'en' : cultureProp));\n const cultureStore = isCultureStore(cultureProp) ? cultureProp : ownCulture;\n useEffect(() => {\n if (!isCultureStore(cultureProp)) ownCulture.setCulture(cultureProp);\n }, [cultureProp, ownCulture]);\n const culture = useSyncExternalStore(cultureStore.subscribe, cultureStore.getSnapshot);\n const strings = useMemo(() => createStrings({ ...settings.strings, culture }), [settings.strings, culture]);\n const cultureValue = useMemo(() => ({ culture, strings, store: cultureStore }), [culture, strings, cultureStore]);\n\n // Theme: the app's store, or one the provider keeps in step with the options.\n const themeProp = props.theme;\n const [ownTheme] = useState(() => createThemeStore(isThemeStore(themeProp) ? {} : (themeProp ?? {})));\n const themeStore = isThemeStore(themeProp) ? themeProp : ownTheme;\n const options = isThemeStore(themeProp) ? undefined : themeProp;\n useEffect(() => {\n if (!options) return;\n ownTheme.beginBatch();\n try {\n if (options.mode !== undefined) ownTheme.setMode(options.mode);\n if (options.systemScheme !== undefined) ownTheme.setSystemScheme(options.systemScheme);\n ownTheme.setPalettes(options.palettes);\n ownTheme.setOverrides(options.overrides);\n } finally {\n ownTheme.endBatch();\n }\n // Field-wise on purpose: an inline `theme={{ … }}` object must not re-apply (and undo a restored mode) per render.\n }, [ownTheme, options?.mode, options?.systemScheme, options?.palettes, options?.overrides]);\n useEffect(() => {\n if (props.systemScheme !== undefined) themeStore.setSystemScheme(props.systemScheme);\n }, [themeStore, props.systemScheme]);\n\n const executorStrings = useRef(strings);\n executorStrings.current = strings;\n const [rootId] = useState(() => {\n providerSequence += 1;\n return `g9-provider-${providerSequence}`;\n });\n\n const core = useMemo<G9ProviderCore>(() => {\n const preferences = createPreferences({\n store: services.preferences,\n onStoreError: (error, failure) =>\n diagnostics.log({\n level: 'warning',\n message: `Preference ${failure.operation} failed for '${failure.key}'.`,\n source: 'G9Provider',\n error,\n }),\n });\n const executorSettings = settings.executor;\n const executor = createSafeExecutor({\n clock: services.clock,\n diagnostics,\n strings: { get: (key) => executorStrings.current.get(key) },\n // No app presenter: the default one (the error popup, registered by `@g9tm/lynxcontrols/popup`) if loaded.\n showError:\n executorSettings.showError ??\n ((request) => {\n const presenter = g9DefaultErrorPresenter.current;\n if (presenter) return presenter(request);\n diagnostics.log({\n level: 'warning',\n message: `No error presenter is configured; not shown: ${request.message}`,\n source: request.source,\n });\n return undefined;\n }),\n ...(executorSettings.diagnosticsHandler ? { diagnosticsHandler: executorSettings.diagnosticsHandler } : {}),\n ...(executorSettings.diagnosticsAvailable ? { diagnosticsAvailable: executorSettings.diagnosticsAvailable } : {}),\n ...(executorSettings.defaults ? { defaults: executorSettings.defaults } : {}),\n });\n return Object.freeze({ services, themeStore, preferences, diagnostics, executor, rootId });\n }, [services, themeStore, diagnostics, settings.executor, rootId]);\n useEffect(() => () => core.executor.dispose(), [core]);\n\n // Theme root. The Lynx engine drops custom properties in an inline style object (page config\n // `enableCSSInlineVariables` is off and not exposed), so the first frame takes the stock palette of the initial\n // scheme and the default metrics from theme.css classes; the inline copy below only serves engines that honour it.\n // At mount every variable is then written with setProperty (custom palettes, overrides, layout), and each later\n // theme change sends only what changed (no re-render).\n const [initialVariables] = useState<G9CssVariables>(() => ({\n ...toMetricCssVariables(),\n ...toLayoutCssVariables(),\n ...toCssVariables(themeStore.getSnapshot()),\n }));\n const [initialScheme] = useState(() => themeStore.getSnapshot().scheme);\n const applied = useRef<G9CssVariables>({});\n const [fallbackVariables, setFallbackVariables] = useState<G9CssVariables | null>(null);\n useEffect(() => {\n const apply = () => {\n const next = { ...initialVariables, ...applied.current, ...toCssVariables(themeStore.getSnapshot()) };\n const diff = changedVariables(applied.current, next);\n applied.current = next;\n if (!diff) return;\n // Without the element API (a host that lacks it), re-render the root's style instead: still no child render.\n if (!applyThemeVariables(rootId, diff)) setFallbackVariables(next);\n };\n apply();\n return themeStore.subscribe(apply);\n }, [themeStore, rootId, initialVariables]);\n\n // Theme persistence (MAUI ChangeTheme wrote the AppTheme number, Init read it back).\n useEffect(() => {\n if (!persistTheme) return;\n let alive = true;\n const save = () => {\n const value = THEME_MODES.indexOf(themeStore.getSnapshot().mode);\n if (core.preferences.getInt(THEME_PREFERENCE_KEY, -1) !== value) {\n void core.preferences.setInt(THEME_PREFERENCE_KEY, value);\n }\n };\n let lastMode = themeStore.getSnapshot().mode;\n const unsubscribe = themeStore.subscribe((theme) => {\n if (theme.mode === lastMode) return;\n lastMode = theme.mode;\n save();\n });\n core.preferences.hydrate().then(\n () => {\n if (!alive) return;\n const stored = THEME_MODES[core.preferences.getInt(THEME_PREFERENCE_KEY, -1)];\n if (stored) themeStore.setMode(stored);\n },\n (error: unknown) =>\n diagnostics.log({ level: 'warning', message: 'Theme restore failed.', source: 'G9Provider', error }),\n );\n return () => {\n alive = false;\n unsubscribe();\n };\n }, [persistTheme, themeStore, core, diagnostics]);\n\n // Keyboard and window: one listener each for the whole tree.\n const [keyboard, setKeyboard] = useState<G9KeyboardState>(HIDDEN_KEYBOARD);\n useEffect(\n () =>\n addGlobalListener(\n 'keyboardstatuschanged',\n (status: unknown, height: unknown, compatHeight: unknown) => {\n setKeyboard(\n status === 'on'\n ? Object.freeze({ visible: true, height: finite(height), compatHeight: finite(compatHeight) })\n : HIDDEN_KEYBOARD,\n );\n },\n // A host without keyboard detection (windowless Lynxtron): the keyboard simply stays hidden.\n (error) =>\n diagnostics.log({\n level: 'warning',\n message: 'Keyboard events are unavailable on this host.',\n source: 'G9Provider',\n error,\n }),\n ),\n [diagnostics],\n );\n const [windowState, setWindowState] = useState<G9WindowState>(initialWindow);\n useEffect(\n () =>\n addGlobalListener('onWindowResize', (width: unknown, height: unknown) => {\n setWindowState((current) => {\n const next = {\n width: typeof width === 'number' && width >= 0 ? width : current.width,\n height: typeof height === 'number' && height >= 0 ? height : current.height,\n };\n return next.width === current.width && next.height === current.height ? current : Object.freeze(next);\n });\n }),\n [],\n );\n\n // Safe-area insets from the host service.\n const [insets, setInsets] = useState<G9SafeInsets>(() => services.host.getSafeInsets());\n useEffect(() => {\n setInsets(services.host.getSafeInsets());\n return services.host.subscribeSafeInsets((next) => setInsets(next));\n }, [services.host]);\n\n // System back: the active host of this provider first, then exit.\n const onBack = useStableCallback(() => {\n const host = g9Hosts.active();\n if (host && host.services === services && host.back.dispatch() === 'handled') return;\n services.host.exit();\n });\n useEffect(() => addGlobalListener(settings.backEventName, onBack), [settings.backEventName, onBack]);\n\n const rootStyle = fallbackVariables ?? initialVariables;\n const directionClass = culture.direction === 'rtl' ? 'g9-dir-rtl' : 'g9-dir-ltr';\n return (\n <G9CoreContext.Provider value={core}>\n <G9DiagnosticsContext.Provider value={diagnostics}>\n <G9SettingsContext.Provider value={settings}>\n <G9CultureContext.Provider value={cultureValue}>\n <G9KeyboardContext.Provider value={keyboard}>\n <G9WindowContext.Provider value={windowState}>\n <G9InsetsContext.Provider value={insets}>\n <view\n id={rootId}\n className={`g9-provider g9-theme-${initialScheme} ${directionClass}${props.className ? ` ${props.className}` : ''}`}\n style={rootStyle}\n >\n {props.children}\n </view>\n </G9InsetsContext.Provider>\n </G9WindowContext.Provider>\n </G9KeyboardContext.Provider>\n </G9CultureContext.Provider>\n </G9SettingsContext.Provider>\n </G9DiagnosticsContext.Provider>\n </G9CoreContext.Provider>\n );\n}\n"],"names":["THEME_PREFERENCE_KEY","THEME_MODES","providerSequence","isCultureStore","value","isThemeStore","initialWindow","info","globalThis","ratio","Object","HIDDEN_KEYBOARD","finite","Number","G9Provider","props","_props_diagnostics","_props_culture","services","persistTheme","assertRequiredCapabilities","ownDiagnostics","useState","createDiagnostics","diagnostics","iconFonts","createIconFontRegistry","settings","useMemo","resolveSettings","cultureProp","ownCulture","createCultureStore","cultureStore","useEffect","culture","useSyncExternalStore","strings","createStrings","cultureValue","themeProp","ownTheme","createThemeStore","themeStore","options","undefined","executorStrings","useRef","rootId","core","_executorSettings_showError","preferences","createPreferences","error","failure","executorSettings","executor","createSafeExecutor","key","request","presenter","g9DefaultErrorPresenter","initialVariables","toMetricCssVariables","toLayoutCssVariables","toCssVariables","initialScheme","applied","fallbackVariables","setFallbackVariables","apply","next","diff","changedVariables","applyThemeVariables","alive","save","lastMode","unsubscribe","theme","stored","keyboard","setKeyboard","addGlobalListener","status","height","compatHeight","windowState","setWindowState","width","current","insets","setInsets","onBack","useStableCallback","host","g9Hosts","rootStyle","directionClass","G9CoreContext","G9DiagnosticsContext","G9SettingsContext","G9CultureContext","G9KeyboardContext","G9WindowContext","G9InsetsContext","view"],"mappings":";;;;;;;;;;AA4EA,MAAMA,uBAAuB;AAC7B,MAAMC,cAAsC;IAAC;IAAU;IAAS;CAAO;AAEvE,IAAIC,mBAAmB;AAEvB,SAASC,eAAeC,KAAiC;IACvD,OAAO,AAAiB,YAAjB,OAAOA,SAAsBA,AAAU,SAAVA,SAAkB,AAAiD,cAAjD,OAAQA,MAAyB,WAAW;AACpG;AAEA,SAASC,aAAaD,KAA+B;IACnD,OAAO,AAAiB,YAAjB,OAAOA,SAAsBA,AAAU,SAAVA,SAAkB,AAA+C,cAA/C,OAAQA,MAAuB,WAAW;AAClG;AAGA,SAASE;;IACP,MAAMC,OAAQC,WACX,UAAU;IACb,MAAMC,QAAQF,AAAAA,CAAAA,QAAAA,OAAAA,KAAAA,IAAAA,KAAM,UAAU,AAAD,KAAKA,KAAK,UAAU,GAAG,IAAIA,KAAK,UAAU,GAAG;IAC1E,OAAOG,OAAO,MAAM,CAAC;QAAE,OAAO,AAAC,SAAD,QAACH,QAAAA,OAAAA,KAAAA,IAAAA,KAAM,UAAU,AAAD,IAAC,OAAI,KAAKE;QAAO,QAAQ,AAAC,SAAD,SAACF,QAAAA,OAAAA,KAAAA,IAAAA,KAAM,WAAW,AAAD,IAAC,QAAI,KAAKE;IAAM;AAC1G;AAEA,MAAME,kBAAmCD,OAAO,MAAM,CAAC;IAAE,SAAS;IAAO,QAAQ;IAAG,cAAc;AAAE;AAEpG,SAASE,OAAOR,KAAc;IAC5B,OAAO,AAAiB,YAAjB,OAAOA,SAAsBS,OAAO,QAAQ,CAACT,UAAUA,QAAQ,IAAIA,QAAQ;AACpF;AAeO,SAASU,WAAWC,KAAsB;QAK3BC,oBAKAC;IATpB,MAAM,EAAEC,QAAQ,EAAEC,eAAe,IAAI,EAAE,GAAGJ;IAC1CK,2BAA2BF;IAE3B,MAAM,CAACG,eAAe,GAAGC,SAASC;IAClC,MAAMC,cAAc,QAAAR,CAAAA,qBAAAA,MAAM,WAAW,AAAD,IAAhBA,qBAAqBK;IACzC,MAAM,CAACI,UAAU,GAAGH,SAASI;IAC7B,MAAMC,WAAWC,QAAQ,IAAMC,gBAAgBd,MAAM,QAAQ,EAAEU,YAAY;QAACV,MAAM,QAAQ;QAAEU;KAAU;IAGtG,MAAMK,cAAc,QAAAb,CAAAA,iBAAAA,MAAM,OAAO,AAAD,IAAZA,iBAAiB;IACrC,MAAM,CAACc,WAAW,GAAGT,SAAS,IAAMU,mBAAmB7B,eAAe2B,eAAe,OAAOA;IAC5F,MAAMG,eAAe9B,eAAe2B,eAAeA,cAAcC;IACjEG,UAAU;QACR,IAAI,CAAC/B,eAAe2B,cAAcC,WAAW,UAAU,CAACD;IAC1D,GAAG;QAACA;QAAaC;KAAW;IAC5B,MAAMI,UAAUC,qBAAqBH,aAAa,SAAS,EAAEA,aAAa,WAAW;IACrF,MAAMI,UAAUT,QAAQ,IAAMU,cAAc;YAAE,GAAGX,SAAS,OAAO;YAAEQ;QAAQ,IAAI;QAACR,SAAS,OAAO;QAAEQ;KAAQ;IAC1G,MAAMI,eAAeX,QAAQ,IAAO;YAAEO;YAASE;YAAS,OAAOJ;QAAa,IAAI;QAACE;QAASE;QAASJ;KAAa;IAGhH,MAAMO,YAAYzB,MAAM,KAAK;IAC7B,MAAM,CAAC0B,SAAS,GAAGnB,SAAS,IAAMoB,iBAAiBrC,aAAamC,aAAa,CAAC,IAAKA,QAAAA,YAAAA,YAAa,CAAC;IACjG,MAAMG,aAAatC,aAAamC,aAAaA,YAAYC;IACzD,MAAMG,UAAUvC,aAAamC,aAAaK,SAAYL;IACtDN,UAAU;QACR,IAAI,CAACU,SAAS;QACdH,SAAS,UAAU;QACnB,IAAI;YACF,IAAIG,AAAiBC,WAAjBD,QAAQ,IAAI,EAAgBH,SAAS,OAAO,CAACG,QAAQ,IAAI;YAC7D,IAAIA,AAAyBC,WAAzBD,QAAQ,YAAY,EAAgBH,SAAS,eAAe,CAACG,QAAQ,YAAY;YACrFH,SAAS,WAAW,CAACG,QAAQ,QAAQ;YACrCH,SAAS,YAAY,CAACG,QAAQ,SAAS;QACzC,SAAU;YACRH,SAAS,QAAQ;QACnB;IAEF,GAAG;QAACA;QAAUG,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,IAAI;QAAEA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,YAAY;QAAEA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,QAAQ;QAAEA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,SAAS;KAAC;IAC1FV,UAAU;QACR,IAAInB,AAAuB8B,WAAvB9B,MAAM,YAAY,EAAgB4B,WAAW,eAAe,CAAC5B,MAAM,YAAY;IACrF,GAAG;QAAC4B;QAAY5B,MAAM,YAAY;KAAC;IAEnC,MAAM+B,kBAAkBC,OAAOV;IAC/BS,gBAAgB,OAAO,GAAGT;IAC1B,MAAM,CAACW,OAAO,GAAG1B,SAAS;QACxBpB,oBAAoB;QACpB,OAAO,CAAC,YAAY,EAAEA,kBAAkB;IAC1C;IAEA,MAAM+C,OAAOrB,QAAwB;YAkB/BsB;QAjBJ,MAAMC,cAAcC,kBAAkB;YACpC,OAAOlC,SAAS,WAAW;YAC3B,cAAc,CAACmC,OAAOC,UACpB9B,YAAY,GAAG,CAAC;oBACd,OAAO;oBACP,SAAS,CAAC,WAAW,EAAE8B,QAAQ,SAAS,CAAC,aAAa,EAAEA,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACvE,QAAQ;oBACRD;gBACF;QACJ;QACA,MAAME,mBAAmB5B,SAAS,QAAQ;QAC1C,MAAM6B,WAAWC,mBAAmB;YAClC,OAAOvC,SAAS,KAAK;YACrBM;YACA,SAAS;gBAAE,KAAK,CAACkC,MAAQZ,gBAAgB,OAAO,CAAC,GAAG,CAACY;YAAK;YAE1D,WAAS,QACPR,CAAAA,8BAAAA,iBAAiB,SAAS,AAAD,IAAzBA,8BACC,CAACS;gBACA,MAAMC,YAAYC,wBAAwB,OAAO;gBACjD,IAAID,WAAW,OAAOA,UAAUD;gBAChCnC,YAAY,GAAG,CAAC;oBACd,OAAO;oBACP,SAAS,CAAC,6CAA6C,EAAEmC,QAAQ,OAAO,EAAE;oBAC1E,QAAQA,QAAQ,MAAM;gBACxB;YAEF;YACF,GAAIJ,iBAAiB,kBAAkB,GAAG;gBAAE,oBAAoBA,iBAAiB,kBAAkB;YAAC,IAAI,CAAC,CAAC;YAC1G,GAAIA,iBAAiB,oBAAoB,GAAG;gBAAE,sBAAsBA,iBAAiB,oBAAoB;YAAC,IAAI,CAAC,CAAC;YAChH,GAAIA,iBAAiB,QAAQ,GAAG;gBAAE,UAAUA,iBAAiB,QAAQ;YAAC,IAAI,CAAC,CAAC;QAC9E;QACA,OAAO7C,OAAO,MAAM,CAAC;YAAEQ;YAAUyB;YAAYQ;YAAa3B;YAAagC;YAAUR;QAAO;IAC1F,GAAG;QAAC9B;QAAUyB;QAAYnB;QAAaG,SAAS,QAAQ;QAAEqB;KAAO;IACjEd,UAAU,IAAM,IAAMe,KAAK,QAAQ,CAAC,OAAO,IAAI;QAACA;KAAK;IAOrD,MAAM,CAACa,iBAAiB,GAAGxC,SAAyB,IAAO;YACzD,GAAGyC,sBAAsB;YACzB,GAAGC,sBAAsB;YACzB,GAAGC,eAAetB,WAAW,WAAW,GAAG;QAC7C;IACA,MAAM,CAACuB,cAAc,GAAG5C,SAAS,IAAMqB,WAAW,WAAW,GAAG,MAAM;IACtE,MAAMwB,UAAUpB,OAAuB,CAAC;IACxC,MAAM,CAACqB,mBAAmBC,qBAAqB,GAAG/C,SAAgC;IAClFY,UAAU;QACR,MAAMoC,QAAQ;YACZ,MAAMC,OAAO;gBAAE,GAAGT,gBAAgB;gBAAE,GAAGK,QAAQ,OAAO;gBAAE,GAAGF,eAAetB,WAAW,WAAW,GAAG;YAAC;YACpG,MAAM6B,OAAOC,iBAAiBN,QAAQ,OAAO,EAAEI;YAC/CJ,QAAQ,OAAO,GAAGI;YAClB,IAAI,CAACC,MAAM;YAEX,IAAI,CAACE,oBAAoB1B,QAAQwB,OAAOH,qBAAqBE;QAC/D;QACAD;QACA,OAAO3B,WAAW,SAAS,CAAC2B;IAC9B,GAAG;QAAC3B;QAAYK;QAAQc;KAAiB;IAGzC5B,UAAU;QACR,IAAI,CAACf,cAAc;QACnB,IAAIwD,QAAQ;QACZ,MAAMC,OAAO;YACX,MAAMxE,QAAQH,YAAY,OAAO,CAAC0C,WAAW,WAAW,GAAG,IAAI;YAC/D,IAAIM,KAAK,WAAW,CAAC,MAAM,CAACjD,sBAAsB,QAAQI,OACnD6C,KAAK,WAAW,CAAC,MAAM,CAACjD,sBAAsBI;QAEvD;QACA,IAAIyE,WAAWlC,WAAW,WAAW,GAAG,IAAI;QAC5C,MAAMmC,cAAcnC,WAAW,SAAS,CAAC,CAACoC;YACxC,IAAIA,MAAM,IAAI,KAAKF,UAAU;YAC7BA,WAAWE,MAAM,IAAI;YACrBH;QACF;QACA3B,KAAK,WAAW,CAAC,OAAO,GAAG,IAAI,CAC7B;YACE,IAAI,CAAC0B,OAAO;YACZ,MAAMK,SAAS/E,WAAW,CAACgD,KAAK,WAAW,CAAC,MAAM,CAACjD,sBAAsB,IAAI;YAC7E,IAAIgF,QAAQrC,WAAW,OAAO,CAACqC;QACjC,GACA,CAAC3B,QACC7B,YAAY,GAAG,CAAC;gBAAE,OAAO;gBAAW,SAAS;gBAAyB,QAAQ;gBAAc6B;YAAM;QAEtG,OAAO;YACLsB,QAAQ;YACRG;QACF;IACF,GAAG;QAAC3D;QAAcwB;QAAYM;QAAMzB;KAAY;IAGhD,MAAM,CAACyD,UAAUC,YAAY,GAAG5D,SAA0BX;IAC1DuB,UACE,IACEiD,kBACE,yBACA,CAACC,QAAiBC,QAAiBC;YACjCJ,YACEE,AAAW,SAAXA,SACI1E,OAAO,MAAM,CAAC;gBAAE,SAAS;gBAAM,QAAQE,OAAOyE;gBAAS,cAAczE,OAAO0E;YAAc,KAC1F3E;QAER,GAEA,CAAC0C,QACC7B,YAAY,GAAG,CAAC;gBACd,OAAO;gBACP,SAAS;gBACT,QAAQ;gBACR6B;YACF,KAEN;QAAC7B;KAAY;IAEf,MAAM,CAAC+D,aAAaC,eAAe,GAAGlE,SAAwBhB;IAC9D4B,UACE,IACEiD,kBAAkB,kBAAkB,CAACM,OAAgBJ;YACnDG,eAAe,CAACE;gBACd,MAAMnB,OAAO;oBACX,OAAO,AAAiB,YAAjB,OAAOkB,SAAsBA,SAAS,IAAIA,QAAQC,QAAQ,KAAK;oBACtE,QAAQ,AAAkB,YAAlB,OAAOL,UAAuBA,UAAU,IAAIA,SAASK,QAAQ,MAAM;gBAC7E;gBACA,OAAOnB,KAAK,KAAK,KAAKmB,QAAQ,KAAK,IAAInB,KAAK,MAAM,KAAKmB,QAAQ,MAAM,GAAGA,UAAUhF,OAAO,MAAM,CAAC6D;YAClG;QACF,IACF,EAAE;IAIJ,MAAM,CAACoB,QAAQC,UAAU,GAAGtE,SAAuB,IAAMJ,SAAS,IAAI,CAAC,aAAa;IACpFgB,UAAU;QACR0D,UAAU1E,SAAS,IAAI,CAAC,aAAa;QACrC,OAAOA,SAAS,IAAI,CAAC,mBAAmB,CAAC,CAACqD,OAASqB,UAAUrB;IAC/D,GAAG;QAACrD,SAAS,IAAI;KAAC;IAGlB,MAAM2E,SAASC,kBAAkB;QAC/B,MAAMC,OAAOC,QAAQ,MAAM;QAC3B,IAAID,QAAQA,KAAK,QAAQ,KAAK7E,YAAY6E,AAAyB,cAAzBA,KAAK,IAAI,CAAC,QAAQ,IAAkB;QAC9E7E,SAAS,IAAI,CAAC,IAAI;IACpB;IACAgB,UAAU,IAAMiD,kBAAkBxD,SAAS,aAAa,EAAEkE,SAAS;QAAClE,SAAS,aAAa;QAAEkE;KAAO;IAEnG,MAAMI,YAAY7B,QAAAA,oBAAAA,oBAAqBN;IACvC,MAAMoC,iBAAiB/D,AAAsB,UAAtBA,QAAQ,SAAS,GAAa,eAAe;IACpE,QACGgE,cAAc,SAAS,OAAOlD,MAAM;MACnC,CAACmD,qBAAqB,SAAS,OAAO5E,aAAa;QACjD,CAAC6E,kBAAkB,SAAS,OAAO1E,UAAU;UAC3C,CAAC2E,iBAAiB,SAAS,OAAO/D,cAAc;YAC9C,CAACgE,kBAAkB,SAAS,OAAOtB,UAAU;cAC3C,CAACuB,gBAAgB,SAAS,OAAOjB,aAAa;gBAC5C,CAACkB,gBAAgB,SAAS,OAAOd,QAAQ;kBACvC,CAACe,KACC,IAAI1D,QACJ,WAAW,CAAC,qBAAqB,EAAEkB,cAAc,CAAC,EAAEgC,iBAAiBnF,MAAM,SAAS,GAAG,CAAC,CAAC,EAAEA,MAAM,SAAS,EAAE,GAAG,IAAI,EACnH,OAAOkF,WACR;oBACC,CAAClF,MAAM,QAAQ,CAAC;kBAClB,EAAE2F,KAAK;gBACT,EAAED,gBAAgB,SAAS;cAC7B,EAAED,gBAAgB,SAAS;YAC7B,EAAED,kBAAkB,SAAS;UAC/B,EAAED,iBAAiB,SAAS;QAC9B,EAAED,kBAAkB,SAAS;MAC/B,EAAED,qBAAqB,SAAS;IAClC,EAAED,cAAc;AAEpB"}
|
|
1
|
+
{"version":3,"file":"provider/provider.jsx","sources":["../../src/provider/provider.tsx"],"sourcesContent":["import {\n assertRequiredCapabilities,\n createCultureStore,\n createDiagnostics,\n createIconFontRegistry,\n createPreferences,\n createSafeExecutor,\n createStrings,\n createThemeStore,\n type G9Capabilities,\n type G9ColorScheme,\n type G9CssVariables,\n type G9Culture,\n type G9CultureStore,\n type G9Diagnostics,\n type G9SafeInsets,\n type G9ThemeMode,\n type G9ThemeOptions,\n type G9ThemeStore,\n g9MotionScale,\n subscribeG9Motion,\n toCssVariables,\n toLayoutCssVariables,\n toMetricCssVariables,\n} from '@g9tm/lynxcontrols-foundation';\nimport { type ReactNode, useEffect, useMemo, useRef, useState, useSyncExternalStore } from '@lynx-js/react';\nimport { useStableCallback } from '../base/use-stable-callback';\nimport { g9Hosts } from '../host/registry';\nimport {\n G9CoreContext,\n G9CultureContext,\n G9DiagnosticsContext,\n G9InsetsContext,\n G9KeyboardContext,\n type G9KeyboardState,\n type G9ProviderCore,\n G9SettingsContext,\n G9WindowContext,\n type G9WindowState,\n} from './contexts';\nimport { addGlobalListener } from './global-events';\nimport { type G9Settings, g9DefaultErrorPresenter, resolveSettings } from './settings';\nimport { applyThemeVariables, changedVariables } from './theme-root';\nimport './provider.css';\nimport './theme.css';\n\n/** Props of {@link G9Provider}. */\nexport interface G9ProviderProps {\n /**\n * The app's platform services (plan/specs/01 §8). `clock`, `preferences` and `host` are required: a missing one\n * throws `G9CapabilityMissingError` naming it when the provider mounts. Pass a stable object.\n */\n readonly services: Partial<G9Capabilities>;\n /**\n * The culture: a store the app drives (`createCultureStore`), or a culture value / locale tag the provider keeps in\n * its own store (a new value switches it). Default `'en'`.\n */\n readonly culture?: G9CultureStore | G9Culture | string;\n /**\n * The theme: a store the app drives (`createThemeStore`), or options for the provider's own store (changes to\n * `mode`, `systemScheme`, `palettes`, `overrides` are applied to it). Default: system mode, stock palettes.\n */\n readonly theme?: G9ThemeStore | G9ThemeOptions;\n /** The platform's current colour scheme (MAUI `RequestedThemeChanged`); followed while the mode is `'system'`. */\n readonly systemScheme?: G9ColorScheme;\n /**\n * Save the theme mode in preferences and restore it at mount (MAUI `G9Theme.ChangeTheme` / `Init`, key\n * `g9controls.theme`, values 0 system, 1 light, 2 dark). Default `true`.\n */\n readonly persistTheme?: boolean;\n /** App-wide settings (plan/specs/03 §6). Validated at mount and on change. */\n readonly settings?: G9Settings;\n /** The diagnostics hub. Default: a hub the provider creates. */\n readonly diagnostics?: G9Diagnostics;\n readonly className?: string;\n readonly children?: ReactNode;\n}\n\nconst THEME_PREFERENCE_KEY = 'theme';\nconst THEME_MODES: readonly G9ThemeMode[] = ['system', 'light', 'dark'];\n\nlet providerSequence = 0;\n\nfunction isCultureStore(value: G9ProviderProps['culture']): value is G9CultureStore {\n return typeof value === 'object' && value !== null && typeof (value as G9CultureStore).getSnapshot === 'function';\n}\n\nfunction isThemeStore(value: G9ProviderProps['theme']): value is G9ThemeStore {\n return typeof value === 'object' && value !== null && typeof (value as G9ThemeStore).getSnapshot === 'function';\n}\n\n/** The logical window size the platform reports at startup (`SystemInfo` is in physical pixels). */\nfunction initialWindow(): G9WindowState {\n const info = (globalThis as { SystemInfo?: { pixelWidth?: number; pixelHeight?: number; pixelRatio?: number } })\n .SystemInfo;\n const ratio = info?.pixelRatio && info.pixelRatio > 0 ? info.pixelRatio : 1;\n return Object.freeze({ width: (info?.pixelWidth ?? 0) / ratio, height: (info?.pixelHeight ?? 0) / ratio });\n}\n\nconst HIDDEN_KEYBOARD: G9KeyboardState = Object.freeze({ visible: false, height: 0, compatHeight: 0 });\n\nfunction finite(value: unknown): number {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : 0;\n}\n\n/**\n * The root every G9 component lives in (plan/specs/01 §5, MAUI `G9Theme`/`G9Culture`/`G9Strings` statics,\n * `G9ServiceProvider`, `G9ScreenHelper`, `G9KeyboardHelper`): culture and strings, the theme as CSS variables on one\n * root `<view>`, settings, services and capabilities, the diagnostics hub, the shared safe executor, keyboard, window\n * and safe-area state, and the dispatch of the system back event to the active `G9Host`. Mount it once per LynxView.\n *\n * - A theme change updates the root's CSS variables with `setProperty`: nothing re-renders except `useG9Theme`\n * readers. A culture change re-renders culture readers.\n * - One `keyboardstatuschanged` and one `onWindowResize` listener for the whole tree.\n * - The back event (`settings.backEventName`, default `g9:back`) goes to the active host's back stack; when nothing\n * handles it, `services.host.exit()` runs (desktop hosts send the same event for Escape).\n * - Unmounting removes every listener, subscription and timer it created.\n */\nexport function G9Provider(props: G9ProviderProps): ReactNode {\n const { services, persistTheme = true } = props;\n assertRequiredCapabilities(services);\n\n const [ownDiagnostics] = useState(createDiagnostics);\n const diagnostics = props.diagnostics ?? ownDiagnostics;\n const [iconFonts] = useState(createIconFontRegistry);\n const settings = useMemo(() => resolveSettings(props.settings, iconFonts), [props.settings, iconFonts]);\n\n // Culture: the app's store, or one the provider keeps in step with the prop.\n const cultureProp = props.culture ?? 'en';\n const [ownCulture] = useState(() => createCultureStore(isCultureStore(cultureProp) ? 'en' : cultureProp));\n const cultureStore = isCultureStore(cultureProp) ? cultureProp : ownCulture;\n useEffect(() => {\n if (!isCultureStore(cultureProp)) ownCulture.setCulture(cultureProp);\n }, [cultureProp, ownCulture]);\n const culture = useSyncExternalStore(cultureStore.subscribe, cultureStore.getSnapshot);\n const strings = useMemo(() => createStrings({ ...settings.strings, culture }), [settings.strings, culture]);\n const cultureValue = useMemo(() => ({ culture, strings, store: cultureStore }), [culture, strings, cultureStore]);\n\n // Theme: the app's store, or one the provider keeps in step with the options.\n const themeProp = props.theme;\n const [ownTheme] = useState(() => createThemeStore(isThemeStore(themeProp) ? {} : (themeProp ?? {})));\n const themeStore = isThemeStore(themeProp) ? themeProp : ownTheme;\n const options = isThemeStore(themeProp) ? undefined : themeProp;\n useEffect(() => {\n if (!options) return;\n ownTheme.beginBatch();\n try {\n if (options.mode !== undefined) ownTheme.setMode(options.mode);\n if (options.systemScheme !== undefined) ownTheme.setSystemScheme(options.systemScheme);\n ownTheme.setPalettes(options.palettes);\n ownTheme.setOverrides(options.overrides);\n } finally {\n ownTheme.endBatch();\n }\n // Field-wise on purpose: an inline `theme={{ … }}` object must not re-apply (and undo a restored mode) per render.\n }, [ownTheme, options?.mode, options?.systemScheme, options?.palettes, options?.overrides]);\n useEffect(() => {\n if (props.systemScheme !== undefined) themeStore.setSystemScheme(props.systemScheme);\n }, [themeStore, props.systemScheme]);\n\n const executorStrings = useRef(strings);\n executorStrings.current = strings;\n const [rootId] = useState(() => {\n providerSequence += 1;\n return `g9-provider-${providerSequence}`;\n });\n\n const core = useMemo<G9ProviderCore>(() => {\n const preferences = createPreferences({\n store: services.preferences,\n onStoreError: (error, failure) =>\n diagnostics.log({\n level: 'warning',\n message: `Preference ${failure.operation} failed for '${failure.key}'.`,\n source: 'G9Provider',\n error,\n }),\n });\n const executorSettings = settings.executor;\n const executor = createSafeExecutor({\n clock: services.clock,\n diagnostics,\n strings: { get: (key) => executorStrings.current.get(key) },\n // No app presenter: the default one (the error popup, registered by `@g9tm/lynxcontrols/popup`) if loaded.\n showError:\n executorSettings.showError ??\n ((request) => {\n const presenter = g9DefaultErrorPresenter.current;\n if (presenter) return presenter(request);\n diagnostics.log({\n level: 'warning',\n message: `No error presenter is configured; not shown: ${request.message}`,\n source: request.source,\n });\n return undefined;\n }),\n ...(executorSettings.diagnosticsHandler ? { diagnosticsHandler: executorSettings.diagnosticsHandler } : {}),\n ...(executorSettings.diagnosticsAvailable ? { diagnosticsAvailable: executorSettings.diagnosticsAvailable } : {}),\n ...(executorSettings.defaults ? { defaults: executorSettings.defaults } : {}),\n });\n return Object.freeze({ services, themeStore, preferences, diagnostics, executor, rootId });\n }, [services, themeStore, diagnostics, settings.executor, rootId]);\n useEffect(() => () => core.executor.dispose(), [core]);\n\n // Theme root. The Lynx engine drops custom properties in an inline style object (page config\n // `enableCSSInlineVariables` is off and not exposed), so the first frame takes the stock palette of the initial\n // scheme and the default metrics from theme.css classes; the inline copy below only serves engines that honour it.\n // At mount every variable is then written with setProperty (custom palettes, overrides, layout), and each later\n // theme change sends only what changed (no re-render).\n const [initialVariables] = useState<G9CssVariables>(() => ({\n ...toMetricCssVariables(),\n ...toLayoutCssVariables(),\n ...toCssVariables(themeStore.getSnapshot()),\n }));\n const [initialScheme] = useState(() => themeStore.getSnapshot().scheme);\n const applied = useRef<G9CssVariables>({});\n const [fallbackVariables, setFallbackVariables] = useState<G9CssVariables | null>(null);\n useEffect(() => {\n const apply = () => {\n const next = { ...initialVariables, ...applied.current, ...toCssVariables(themeStore.getSnapshot()) };\n const diff = changedVariables(applied.current, next);\n applied.current = next;\n if (!diff) return;\n // Without the element API (a host that lacks it), re-render the root's style instead: still no child render.\n if (!applyThemeVariables(rootId, diff)) setFallbackVariables(next);\n };\n apply();\n return themeStore.subscribe(apply);\n }, [themeStore, rootId, initialVariables]);\n\n // Theme persistence (MAUI ChangeTheme wrote the AppTheme number, Init read it back).\n useEffect(() => {\n if (!persistTheme) return;\n let alive = true;\n const save = () => {\n const value = THEME_MODES.indexOf(themeStore.getSnapshot().mode);\n if (core.preferences.getInt(THEME_PREFERENCE_KEY, -1) !== value) {\n void core.preferences.setInt(THEME_PREFERENCE_KEY, value);\n }\n };\n let lastMode = themeStore.getSnapshot().mode;\n const unsubscribe = themeStore.subscribe((theme) => {\n if (theme.mode === lastMode) return;\n lastMode = theme.mode;\n save();\n });\n core.preferences.hydrate().then(\n () => {\n if (!alive) return;\n const stored = THEME_MODES[core.preferences.getInt(THEME_PREFERENCE_KEY, -1)];\n if (stored) themeStore.setMode(stored);\n },\n (error: unknown) =>\n diagnostics.log({ level: 'warning', message: 'Theme restore failed.', source: 'G9Provider', error }),\n );\n return () => {\n alive = false;\n unsubscribe();\n };\n }, [persistTheme, themeStore, core, diagnostics]);\n\n // Keyboard and window: one listener each for the whole tree.\n const [keyboard, setKeyboard] = useState<G9KeyboardState>(HIDDEN_KEYBOARD);\n useEffect(\n () =>\n addGlobalListener(\n 'keyboardstatuschanged',\n (status: unknown, height: unknown, compatHeight: unknown) => {\n setKeyboard(\n status === 'on'\n ? Object.freeze({ visible: true, height: finite(height), compatHeight: finite(compatHeight) })\n : HIDDEN_KEYBOARD,\n );\n },\n // A host without keyboard detection (windowless Lynxtron): the keyboard simply stays hidden.\n (error) =>\n diagnostics.log({\n level: 'warning',\n message: 'Keyboard events are unavailable on this host.',\n source: 'G9Provider',\n error,\n }),\n ),\n [diagnostics],\n );\n const [windowState, setWindowState] = useState<G9WindowState>(initialWindow);\n useEffect(\n () =>\n addGlobalListener('onWindowResize', (width: unknown, height: unknown) => {\n setWindowState((current) => {\n const next = {\n width: typeof width === 'number' && width >= 0 ? width : current.width,\n height: typeof height === 'number' && height >= 0 ? height : current.height,\n };\n return next.width === current.width && next.height === current.height ? current : Object.freeze(next);\n });\n }),\n [],\n );\n\n // Safe-area insets from the host service.\n const [insets, setInsets] = useState<G9SafeInsets>(() => services.host.getSafeInsets());\n useEffect(() => {\n setInsets(services.host.getSafeInsets());\n return services.host.subscribeSafeInsets((next) => setInsets(next));\n }, [services.host]);\n\n // System back: the active host of this provider first, then exit.\n const onBack = useStableCallback(() => {\n const host = g9Hosts.active();\n if (host && host.services === services && host.back.dispatch() === 'handled') return;\n services.host.exit();\n });\n useEffect(() => addGlobalListener(settings.backEventName, onBack), [settings.backEventName, onBack]);\n\n // setG9MotionScale(0) (reduced motion; a screen that holds still for tests): the CSS transitions end at once too — the\n // root carries `g9-motion-off` and theme.css sets their durations to 0 (JS-timed motion already follows g9Ms).\n const [motionOff, setMotionOff] = useState(() => g9MotionScale() === 0);\n useEffect(() => subscribeG9Motion((s) => setMotionOff(s === 0)), []);\n\n const rootStyle = fallbackVariables ?? initialVariables;\n const directionClass = culture.direction === 'rtl' ? 'g9-dir-rtl' : 'g9-dir-ltr';\n return (\n <G9CoreContext.Provider value={core}>\n <G9DiagnosticsContext.Provider value={diagnostics}>\n <G9SettingsContext.Provider value={settings}>\n <G9CultureContext.Provider value={cultureValue}>\n <G9KeyboardContext.Provider value={keyboard}>\n <G9WindowContext.Provider value={windowState}>\n <G9InsetsContext.Provider value={insets}>\n <view\n id={rootId}\n className={`g9-provider g9-theme-${initialScheme} ${directionClass}${motionOff ? ' g9-motion-off' : ''}${props.className ? ` ${props.className}` : ''}`}\n style={rootStyle}\n >\n {props.children}\n </view>\n </G9InsetsContext.Provider>\n </G9WindowContext.Provider>\n </G9KeyboardContext.Provider>\n </G9CultureContext.Provider>\n </G9SettingsContext.Provider>\n </G9DiagnosticsContext.Provider>\n </G9CoreContext.Provider>\n );\n}\n"],"names":["THEME_PREFERENCE_KEY","THEME_MODES","providerSequence","isCultureStore","value","isThemeStore","initialWindow","info","globalThis","ratio","Object","HIDDEN_KEYBOARD","finite","Number","G9Provider","props","_props_diagnostics","_props_culture","services","persistTheme","assertRequiredCapabilities","ownDiagnostics","useState","createDiagnostics","diagnostics","iconFonts","createIconFontRegistry","settings","useMemo","resolveSettings","cultureProp","ownCulture","createCultureStore","cultureStore","useEffect","culture","useSyncExternalStore","strings","createStrings","cultureValue","themeProp","ownTheme","createThemeStore","themeStore","options","undefined","executorStrings","useRef","rootId","core","_executorSettings_showError","preferences","createPreferences","error","failure","executorSettings","executor","createSafeExecutor","key","request","presenter","g9DefaultErrorPresenter","initialVariables","toMetricCssVariables","toLayoutCssVariables","toCssVariables","initialScheme","applied","fallbackVariables","setFallbackVariables","apply","next","diff","changedVariables","applyThemeVariables","alive","save","lastMode","unsubscribe","theme","stored","keyboard","setKeyboard","addGlobalListener","status","height","compatHeight","windowState","setWindowState","width","current","insets","setInsets","onBack","useStableCallback","host","g9Hosts","motionOff","setMotionOff","g9MotionScale","subscribeG9Motion","s","rootStyle","directionClass","G9CoreContext","G9DiagnosticsContext","G9SettingsContext","G9CultureContext","G9KeyboardContext","G9WindowContext","G9InsetsContext","view"],"mappings":"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"}
|
|
@@ -64,6 +64,17 @@ export interface G9Settings {
|
|
|
64
64
|
readonly sheets?: G9SheetSettings;
|
|
65
65
|
/** Popup defaults (MAUI `G9PopupHelper.ConfigureG9PopupDefaults`), merged under per-call settings. */
|
|
66
66
|
readonly popups?: G9PopupSettings;
|
|
67
|
+
/** Toggle defaults (MAUI 1.4.10 `G9Switch.MirrorInRtl`, a static set once at startup). */
|
|
68
|
+
readonly toggles?: G9ToggleSettings;
|
|
69
|
+
}
|
|
70
|
+
/** App-wide toggle settings. */
|
|
71
|
+
export interface G9ToggleSettings {
|
|
72
|
+
/**
|
|
73
|
+
* Whether a right-to-left language mirrors a switch's toggle (on = the thumb on the LEFT). Default `true` (MAUI
|
|
74
|
+
* `G9Switch.MirrorInRtl`). `false` keeps every switch physical in every language — off = left, on = right — as
|
|
75
|
+
* AgriPad's Figma draws all 31 of its toggles; the row (title, switch) still flows with the language.
|
|
76
|
+
*/
|
|
77
|
+
readonly switchMirrorInRtl?: boolean;
|
|
67
78
|
}
|
|
68
79
|
/** App-wide outlined-field settings (MAUI `G9OutlinedFieldSettings`). */
|
|
69
80
|
export interface G9FieldSettings {
|
|
@@ -86,6 +97,7 @@ export interface G9ResolvedSettings {
|
|
|
86
97
|
readonly fields: Required<G9FieldSettings>;
|
|
87
98
|
readonly sheets: Required<G9SheetSettings>;
|
|
88
99
|
readonly popups: G9PopupSettings;
|
|
100
|
+
readonly toggles: Required<G9ToggleSettings>;
|
|
89
101
|
}
|
|
90
102
|
/** MAUI `G9PageBase.PageLoadingDismissDelayMs` default. */
|
|
91
103
|
export declare const g9PageLoadingDismissDelayMs = 369;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/provider/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EAExB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA8B,KAAK,eAAe,EAAsB,MAAM,gBAAgB,CAAC;AACtG,OAAO,EAAE,KAAK,eAAe,EAAwB,MAAM,kBAAkB,CAAC;AAE9E,qGAAqG;AACrG,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,iHAAiH;AACjH,MAAM,WAAW,qBAAqB;IACpC,2GAA2G;IAC3G,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,sFAAsF;IACtF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yGAAyG;IACzG,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;AAEjF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1D,CAAC;AAEtB,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACxF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,iGAAiG;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACrD,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IACxC,gHAAgH;IAChH,QAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC;IACzC,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAC7C,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3E,6GAA6G;IAC7G,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,sGAAsG;IACtG,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/provider/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,8 @@ function nonNegative(name, value, fallback) {
|
|
|
13
13
|
return value;
|
|
14
14
|
}
|
|
15
15
|
function resolveSettings(settings, fallbackIconFonts) {
|
|
16
|
-
var _s_backEventName, _s_pageLoading, _s_strings, _ref, _s_iconFonts, _loading_backgroundColor, _loading_spinnerColor, _s_executor, _ref1;
|
|
17
|
-
var _s_fields;
|
|
16
|
+
var _s_backEventName, _s_pageLoading, _s_strings, _ref, _s_iconFonts, _loading_backgroundColor, _loading_spinnerColor, _s_executor, _ref1, _ref2;
|
|
17
|
+
var _s_fields, _s_toggles;
|
|
18
18
|
const s = null != settings ? settings : {};
|
|
19
19
|
const backEventName = null != (_s_backEventName = s.backEventName) ? _s_backEventName : g9DefaultBackEventName;
|
|
20
20
|
if ('string' != typeof backEventName || '' === backEventName.trim()) throw new G9Error('settings-invalid', 'backEventName must be a non-blank string.');
|
|
@@ -37,7 +37,10 @@ function resolveSettings(settings, fallbackIconFonts) {
|
|
|
37
37
|
highlightFilledValue: null != (_ref1 = null == (_s_fields = s.fields) ? void 0 : _s_fields.highlightFilledValue) ? _ref1 : true
|
|
38
38
|
}),
|
|
39
39
|
sheets: resolveSheetSettings(s.sheets),
|
|
40
|
-
popups: Object.freeze(mergePopupSettings(s.popups, createDefaultPopupSettings()))
|
|
40
|
+
popups: Object.freeze(mergePopupSettings(s.popups, createDefaultPopupSettings())),
|
|
41
|
+
toggles: Object.freeze({
|
|
42
|
+
switchMirrorInRtl: null != (_ref2 = null == (_s_toggles = s.toggles) ? void 0 : _s_toggles.switchMirrorInRtl) ? _ref2 : true
|
|
43
|
+
})
|
|
41
44
|
});
|
|
42
45
|
}
|
|
43
46
|
export { g9DefaultBackEventName, g9DefaultErrorPresenter, g9PageLoadingDismissDelayMs, g9PageLoadingSafetyTimeoutMs, resolveSettings };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider/settings.jsx","sources":["../../src/provider/settings.ts"],"sourcesContent":["import {\n createIconFontRegistry,\n type G9DiagnosticsReport,\n G9Error,\n type G9ErrorPopupRequest,\n type G9GlyphSlotOverrides,\n type G9GlyphSlots,\n type G9IconFontRegistry,\n type G9ImageSource,\n type G9SafeExecutorOptions,\n type G9StringsOptions,\n resolveGlyphSlots,\n} from '@g9tm/lynxcontrols-foundation';\nimport type { ReactNode } from '@lynx-js/react';\nimport { createDefaultPopupSettings, type G9PopupSettings, mergePopupSettings } from '../popup/types';\nimport { type G9SheetSettings, resolveSheetSettings } from '../sheet/options';\n\n/** The global event the native host sends for a system back press (Android back, desktop Escape). */\nexport const g9DefaultBackEventName = 'g9:back';\n\n/** App-wide page-loading cover settings (MAUI `G9PageLoadingOverlay` statics + `G9PageBase` timing defaults). */\nexport interface G9PageLoadingSettings {\n /** Cover colour (MAUI `BackgroundColorOverride`). Default: the theme's `Primary` (`var(--g9-primary)`). */\n readonly backgroundColor?: string;\n /** Spinner colour (MAUI `SpinnerColorOverride`). Default: the theme's `OnPrimary`. */\n readonly spinnerColor?: string;\n /** Delay after \"ready\" before the cover animates out (MAUI `PageLoadingDismissDelayMs`). Default 369. */\n readonly dismissDelayMs?: number;\n /** Hard cap from appearing to dismissal (MAUI `PageLoadingSafetyTimeoutMs`). Default 5000. */\n readonly safetyTimeoutMs?: number;\n}\n\n/**\n * Renders a bitmap icon at a box size (MAUI `G9ImageFactory.Factory`): the seam for a caching image element. The default\n * is a plain Lynx `<image>` (`aspectFill`), or `<svg content>` for an `{ svg }` source.\n */\nexport type G9ImageRenderer = (source: G9ImageSource, size: number) => ReactNode;\n\n/**\n * The error presenter used when the app sets no `executor.showError`: `@g9tm/lynxcontrols/popup` installs the error\n * popup here when it loads (so the provider does not depend on the popup module).\n */\nexport const g9DefaultErrorPresenter: {\n current: ((request: G9ErrorPopupRequest) => void | PromiseLike<void>) | null;\n} = { current: null };\n\n/** Settings of the shared safe executor (MAUI `G9SafeCommand` statics). */\nexport interface G9ExecutorSettings {\n readonly showError?: (request: G9ErrorPopupRequest) => void | PromiseLike<void>;\n readonly diagnosticsHandler?: (report: G9DiagnosticsReport) => void | PromiseLike<void>;\n readonly diagnosticsAvailable?: () => boolean;\n readonly defaults?: G9SafeExecutorOptions;\n}\n\n/**\n * App-wide configuration (plan/specs/03 §6): what MAUI configured through static helpers. Later work packages add\n * their families here (`sheets`, `popups`, `toasts`, `fields`).\n */\nexport interface G9Settings {\n /** String resolution (MAUI `G9Strings.UseProvider` / `Override`): everything but the culture. */\n readonly strings?: Omit<G9StringsOptions, 'culture'>;\n /** Replacements for the controls' own icons (MAUI `G9Glyphs.*` setters). */\n readonly glyphs?: G9GlyphSlotOverrides;\n /** The app's icon fonts (MAUI `G9IconFonts.Register`); default an empty registry. */\n readonly iconFonts?: G9IconFontRegistry;\n /** Bitmap icon renderer (MAUI `G9ImageFactory.Factory`). Default: {@link G9ImageRenderer}'s plain `<image>`. */\n readonly imageRenderer?: G9ImageRenderer;\n /** Name of the global back event (default {@link g9DefaultBackEventName}). */\n readonly backEventName?: string;\n /** Page-loading cover defaults for every `G9Host`. */\n readonly pageLoading?: G9PageLoadingSettings;\n /** The shared safe executor's popup, diagnostics surface and option defaults. */\n readonly executor?: G9ExecutorSettings;\n /**\n * Pauses the app's background work while a view that asks for it is active (MAUI\n * `G9ContentViewBase.BackgroundWorkSuppressionFactory`). Returns the release function, or nothing.\n */\n readonly backgroundWorkSuppression?: () => (() => void) | null | undefined;\n /** Outlined-field defaults (MAUI `G9OutlinedFieldSettings`, set through `G9OutlinedFieldBase.Configure`). */\n readonly fields?: G9FieldSettings;\n /** Bottom-sheet defaults (MAUI `G9BottomSheetHelper.Configure(G9BottomSheetSettings)`). */\n readonly sheets?: G9SheetSettings;\n /** Popup defaults (MAUI `G9PopupHelper.ConfigureG9PopupDefaults`), merged under per-call settings. */\n readonly popups?: G9PopupSettings;\n}\n\n/** App-wide outlined-field settings (MAUI `G9OutlinedFieldSettings`). */\nexport interface G9FieldSettings {\n /**\n * Whether a field holding a value (unfocused, no error) draws its outline and floated label in the primary colour.\n * Default `true` (MAUI `HighlightFilledValue`); a field's own `filledValueHighlight` overrides it (ADR-0025).\n */\n readonly highlightFilledValue?: boolean;\n}\n\n/** {@link G9Settings} with every default filled in. */\nexport interface G9ResolvedSettings {\n readonly strings: Omit<G9StringsOptions, 'culture'>;\n readonly glyphs: G9GlyphSlots;\n readonly iconFonts: G9IconFontRegistry;\n readonly imageRenderer: G9ImageRenderer | undefined;\n readonly backEventName: string;\n readonly pageLoading: Required<G9PageLoadingSettings>;\n readonly executor: G9ExecutorSettings;\n readonly backgroundWorkSuppression: G9Settings['backgroundWorkSuppression'];\n readonly fields: Required<G9FieldSettings>;\n readonly sheets: Required<G9SheetSettings>;\n readonly popups: G9PopupSettings;\n}\n\n/** MAUI `G9PageBase.PageLoadingDismissDelayMs` default. */\nexport const g9PageLoadingDismissDelayMs = 369;\n/** MAUI `G9PageBase.PageLoadingSafetyTimeoutMs` default. */\nexport const g9PageLoadingSafetyTimeoutMs = 5000;\n\nfunction nonNegative(name: string, value: number | undefined, fallback: number): number {\n if (value === undefined) return fallback;\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n throw new G9Error(\n 'settings-invalid',\n `${name} must be a finite number of milliseconds ≥ 0 (got ${String(value)}).`,\n );\n }\n return value;\n}\n\n/**\n * Validates `settings` and fills the defaults. Invalid values throw a `G9Error` (`settings-invalid`, or the\n * foundation code for a malformed glyph slot) at provider mount rather than at first use.\n */\nexport function resolveSettings(\n settings: G9Settings | undefined,\n fallbackIconFonts?: G9IconFontRegistry,\n): G9ResolvedSettings {\n const s = settings ?? {};\n const backEventName = s.backEventName ?? g9DefaultBackEventName;\n if (typeof backEventName !== 'string' || backEventName.trim() === '') {\n throw new G9Error('settings-invalid', 'backEventName must be a non-blank string.');\n }\n const loading = s.pageLoading ?? {};\n return Object.freeze({\n strings: s.strings ?? {},\n glyphs: resolveGlyphSlots(s.glyphs),\n iconFonts: s.iconFonts ?? fallbackIconFonts ?? createIconFontRegistry(),\n imageRenderer: s.imageRenderer,\n backEventName,\n pageLoading: Object.freeze({\n backgroundColor: loading.backgroundColor ?? 'var(--g9-primary)',\n spinnerColor: loading.spinnerColor ?? 'var(--g9-on-primary)',\n dismissDelayMs: nonNegative('pageLoading.dismissDelayMs', loading.dismissDelayMs, g9PageLoadingDismissDelayMs),\n safetyTimeoutMs: nonNegative(\n 'pageLoading.safetyTimeoutMs',\n loading.safetyTimeoutMs,\n g9PageLoadingSafetyTimeoutMs,\n ),\n }),\n executor: s.executor ?? {},\n backgroundWorkSuppression: s.backgroundWorkSuppression,\n fields: Object.freeze({ highlightFilledValue: s.fields?.highlightFilledValue ?? true }),\n sheets: resolveSheetSettings(s.sheets),\n popups: Object.freeze(mergePopupSettings(s.popups, createDefaultPopupSettings())),\n });\n}\n"],"names":["g9DefaultBackEventName","g9DefaultErrorPresenter","g9PageLoadingDismissDelayMs","g9PageLoadingSafetyTimeoutMs","nonNegative","name","value","fallback","undefined","Number","G9Error","String","resolveSettings","settings","fallbackIconFonts","_s_backEventName","_s_pageLoading","_s_strings","_ref","_loading_backgroundColor","_loading_spinnerColor","_s_executor","_s_fields","s","backEventName","loading","Object","resolveGlyphSlots","createIconFontRegistry","resolveSheetSettings","mergePopupSettings","createDefaultPopupSettings"],"mappings":";;;AAkBO,MAAMA,yBAAyB;AAwB/B,MAAMC,0BAET;IAAE,SAAS;AAAK;AAmEb,MAAMC,8BAA8B;AAEpC,MAAMC,+BAA+B;AAE5C,SAASC,YAAYC,IAAY,EAAEC,KAAyB,EAAEC,QAAgB;IAC5E,IAAID,AAAUE,WAAVF,OAAqB,OAAOC;IAChC,IAAI,AAAiB,YAAjB,OAAOD,SAAsB,CAACG,OAAO,QAAQ,CAACH,UAAUA,QAAQ,GAClE,MAAM,IAAII,QACR,oBACA,GAAGL,KAAK,kDAAkD,EAAEM,OAAOL,OAAO,EAAE,CAAC;IAGjF,OAAOA;AACT;AAMO,SAASM,gBACdC,QAAgC,EAChCC,iBAAsC;QAGhBC,kBAINC,gBAELC,YAEEC,MAAAA,cAIQC,0BACHC,uBAQNC,aAAAA;QAEoCC;IAxBhD,MAAMC,IAAIV,QAAAA,WAAAA,WAAY,CAAC;IACvB,MAAMW,gBAAgB,QAAAT,CAAAA,mBAAAA,EAAE,aAAa,AAAD,IAAdA,mBAAmBf;IACzC,IAAI,AAAyB,YAAzB,OAAOwB,iBAA8BA,AAAyB,OAAzBA,cAAc,IAAI,IACzD,MAAM,IAAId,QAAQ,oBAAoB;IAExC,MAAMe,UAAU,QAAAT,CAAAA,iBAAAA,EAAE,WAAW,AAAD,IAAZA,iBAAiB,CAAC;IAClC,OAAOU,OAAO,MAAM,CAAC;QACnB,SAAS,QAAAT,CAAAA,aAAAA,EAAE,OAAO,AAAD,IAARA,aAAa,CAAC;QACvB,QAAQU,kBAAkBJ,EAAE,MAAM;QAClC,WAAW,QAAAL,CAAAA,OAAAA,QAAAA,CAAAA,eAAAA,EAAE,SAAS,AAAD,IAAVA,eAAeJ,iBAAgB,IAA/BI,OAAoCU;QAC/C,eAAeL,EAAE,aAAa;QAC9BC;QACA,aAAaE,OAAO,MAAM,CAAC;YACzB,iBAAiB,QAAAP,CAAAA,2BAAAA,QAAQ,eAAe,AAAD,IAAtBA,2BAA2B;YAC5C,cAAc,QAAAC,CAAAA,wBAAAA,QAAQ,YAAY,AAAD,IAAnBA,wBAAwB;YACtC,gBAAgBhB,YAAY,8BAA8BqB,QAAQ,cAAc,EAAEvB;YAClF,iBAAiBE,YACf,+BACAqB,QAAQ,eAAe,EACvBtB;QAEJ;QACA,UAAU,QAAAkB,CAAAA,cAAAA,EAAE,QAAQ,AAAD,IAATA,cAAc,CAAC;QACzB,2BAA2BE,EAAE,yBAAyB;QACtD,QAAQG,OAAO,MAAM,CAAC;YAAE,sBAAsB,QAAF,iBAAEJ,CAAAA,YAAAA,EAAE,MAAM,AAAD,IAAPA,KAAAA,IAAAA,UAAU,oBAAoB,AAAD,IAAC,QAAI;QAAK;QACrF,QAAQO,qBAAqBN,EAAE,MAAM;QACrC,QAAQG,OAAO,MAAM,CAACI,mBAAmBP,EAAE,MAAM,EAAEQ;IACrD;AACF"}
|
|
1
|
+
{"version":3,"file":"provider/settings.jsx","sources":["../../src/provider/settings.ts"],"sourcesContent":["import {\n createIconFontRegistry,\n type G9DiagnosticsReport,\n G9Error,\n type G9ErrorPopupRequest,\n type G9GlyphSlotOverrides,\n type G9GlyphSlots,\n type G9IconFontRegistry,\n type G9ImageSource,\n type G9SafeExecutorOptions,\n type G9StringsOptions,\n resolveGlyphSlots,\n} from '@g9tm/lynxcontrols-foundation';\nimport type { ReactNode } from '@lynx-js/react';\nimport { createDefaultPopupSettings, type G9PopupSettings, mergePopupSettings } from '../popup/types';\nimport { type G9SheetSettings, resolveSheetSettings } from '../sheet/options';\n\n/** The global event the native host sends for a system back press (Android back, desktop Escape). */\nexport const g9DefaultBackEventName = 'g9:back';\n\n/** App-wide page-loading cover settings (MAUI `G9PageLoadingOverlay` statics + `G9PageBase` timing defaults). */\nexport interface G9PageLoadingSettings {\n /** Cover colour (MAUI `BackgroundColorOverride`). Default: the theme's `Primary` (`var(--g9-primary)`). */\n readonly backgroundColor?: string;\n /** Spinner colour (MAUI `SpinnerColorOverride`). Default: the theme's `OnPrimary`. */\n readonly spinnerColor?: string;\n /** Delay after \"ready\" before the cover animates out (MAUI `PageLoadingDismissDelayMs`). Default 369. */\n readonly dismissDelayMs?: number;\n /** Hard cap from appearing to dismissal (MAUI `PageLoadingSafetyTimeoutMs`). Default 5000. */\n readonly safetyTimeoutMs?: number;\n}\n\n/**\n * Renders a bitmap icon at a box size (MAUI `G9ImageFactory.Factory`): the seam for a caching image element. The default\n * is a plain Lynx `<image>` (`aspectFill`), or `<svg content>` for an `{ svg }` source.\n */\nexport type G9ImageRenderer = (source: G9ImageSource, size: number) => ReactNode;\n\n/**\n * The error presenter used when the app sets no `executor.showError`: `@g9tm/lynxcontrols/popup` installs the error\n * popup here when it loads (so the provider does not depend on the popup module).\n */\nexport const g9DefaultErrorPresenter: {\n current: ((request: G9ErrorPopupRequest) => void | PromiseLike<void>) | null;\n} = { current: null };\n\n/** Settings of the shared safe executor (MAUI `G9SafeCommand` statics). */\nexport interface G9ExecutorSettings {\n readonly showError?: (request: G9ErrorPopupRequest) => void | PromiseLike<void>;\n readonly diagnosticsHandler?: (report: G9DiagnosticsReport) => void | PromiseLike<void>;\n readonly diagnosticsAvailable?: () => boolean;\n readonly defaults?: G9SafeExecutorOptions;\n}\n\n/**\n * App-wide configuration (plan/specs/03 §6): what MAUI configured through static helpers. Later work packages add\n * their families here (`sheets`, `popups`, `toasts`, `fields`).\n */\nexport interface G9Settings {\n /** String resolution (MAUI `G9Strings.UseProvider` / `Override`): everything but the culture. */\n readonly strings?: Omit<G9StringsOptions, 'culture'>;\n /** Replacements for the controls' own icons (MAUI `G9Glyphs.*` setters). */\n readonly glyphs?: G9GlyphSlotOverrides;\n /** The app's icon fonts (MAUI `G9IconFonts.Register`); default an empty registry. */\n readonly iconFonts?: G9IconFontRegistry;\n /** Bitmap icon renderer (MAUI `G9ImageFactory.Factory`). Default: {@link G9ImageRenderer}'s plain `<image>`. */\n readonly imageRenderer?: G9ImageRenderer;\n /** Name of the global back event (default {@link g9DefaultBackEventName}). */\n readonly backEventName?: string;\n /** Page-loading cover defaults for every `G9Host`. */\n readonly pageLoading?: G9PageLoadingSettings;\n /** The shared safe executor's popup, diagnostics surface and option defaults. */\n readonly executor?: G9ExecutorSettings;\n /**\n * Pauses the app's background work while a view that asks for it is active (MAUI\n * `G9ContentViewBase.BackgroundWorkSuppressionFactory`). Returns the release function, or nothing.\n */\n readonly backgroundWorkSuppression?: () => (() => void) | null | undefined;\n /** Outlined-field defaults (MAUI `G9OutlinedFieldSettings`, set through `G9OutlinedFieldBase.Configure`). */\n readonly fields?: G9FieldSettings;\n /** Bottom-sheet defaults (MAUI `G9BottomSheetHelper.Configure(G9BottomSheetSettings)`). */\n readonly sheets?: G9SheetSettings;\n /** Popup defaults (MAUI `G9PopupHelper.ConfigureG9PopupDefaults`), merged under per-call settings. */\n readonly popups?: G9PopupSettings;\n /** Toggle defaults (MAUI 1.4.10 `G9Switch.MirrorInRtl`, a static set once at startup). */\n readonly toggles?: G9ToggleSettings;\n}\n\n/** App-wide toggle settings. */\nexport interface G9ToggleSettings {\n /**\n * Whether a right-to-left language mirrors a switch's toggle (on = the thumb on the LEFT). Default `true` (MAUI\n * `G9Switch.MirrorInRtl`). `false` keeps every switch physical in every language — off = left, on = right — as\n * AgriPad's Figma draws all 31 of its toggles; the row (title, switch) still flows with the language.\n */\n readonly switchMirrorInRtl?: boolean;\n}\n\n/** App-wide outlined-field settings (MAUI `G9OutlinedFieldSettings`). */\nexport interface G9FieldSettings {\n /**\n * Whether a field holding a value (unfocused, no error) draws its outline and floated label in the primary colour.\n * Default `true` (MAUI `HighlightFilledValue`); a field's own `filledValueHighlight` overrides it (ADR-0025).\n */\n readonly highlightFilledValue?: boolean;\n}\n\n/** {@link G9Settings} with every default filled in. */\nexport interface G9ResolvedSettings {\n readonly strings: Omit<G9StringsOptions, 'culture'>;\n readonly glyphs: G9GlyphSlots;\n readonly iconFonts: G9IconFontRegistry;\n readonly imageRenderer: G9ImageRenderer | undefined;\n readonly backEventName: string;\n readonly pageLoading: Required<G9PageLoadingSettings>;\n readonly executor: G9ExecutorSettings;\n readonly backgroundWorkSuppression: G9Settings['backgroundWorkSuppression'];\n readonly fields: Required<G9FieldSettings>;\n readonly sheets: Required<G9SheetSettings>;\n readonly popups: G9PopupSettings;\n readonly toggles: Required<G9ToggleSettings>;\n}\n\n/** MAUI `G9PageBase.PageLoadingDismissDelayMs` default. */\nexport const g9PageLoadingDismissDelayMs = 369;\n/** MAUI `G9PageBase.PageLoadingSafetyTimeoutMs` default. */\nexport const g9PageLoadingSafetyTimeoutMs = 5000;\n\nfunction nonNegative(name: string, value: number | undefined, fallback: number): number {\n if (value === undefined) return fallback;\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n throw new G9Error(\n 'settings-invalid',\n `${name} must be a finite number of milliseconds ≥ 0 (got ${String(value)}).`,\n );\n }\n return value;\n}\n\n/**\n * Validates `settings` and fills the defaults. Invalid values throw a `G9Error` (`settings-invalid`, or the\n * foundation code for a malformed glyph slot) at provider mount rather than at first use.\n */\nexport function resolveSettings(\n settings: G9Settings | undefined,\n fallbackIconFonts?: G9IconFontRegistry,\n): G9ResolvedSettings {\n const s = settings ?? {};\n const backEventName = s.backEventName ?? g9DefaultBackEventName;\n if (typeof backEventName !== 'string' || backEventName.trim() === '') {\n throw new G9Error('settings-invalid', 'backEventName must be a non-blank string.');\n }\n const loading = s.pageLoading ?? {};\n return Object.freeze({\n strings: s.strings ?? {},\n glyphs: resolveGlyphSlots(s.glyphs),\n iconFonts: s.iconFonts ?? fallbackIconFonts ?? createIconFontRegistry(),\n imageRenderer: s.imageRenderer,\n backEventName,\n pageLoading: Object.freeze({\n backgroundColor: loading.backgroundColor ?? 'var(--g9-primary)',\n spinnerColor: loading.spinnerColor ?? 'var(--g9-on-primary)',\n dismissDelayMs: nonNegative('pageLoading.dismissDelayMs', loading.dismissDelayMs, g9PageLoadingDismissDelayMs),\n safetyTimeoutMs: nonNegative(\n 'pageLoading.safetyTimeoutMs',\n loading.safetyTimeoutMs,\n g9PageLoadingSafetyTimeoutMs,\n ),\n }),\n executor: s.executor ?? {},\n backgroundWorkSuppression: s.backgroundWorkSuppression,\n fields: Object.freeze({ highlightFilledValue: s.fields?.highlightFilledValue ?? true }),\n sheets: resolveSheetSettings(s.sheets),\n popups: Object.freeze(mergePopupSettings(s.popups, createDefaultPopupSettings())),\n toggles: Object.freeze({ switchMirrorInRtl: s.toggles?.switchMirrorInRtl ?? true }),\n });\n}\n"],"names":["g9DefaultBackEventName","g9DefaultErrorPresenter","g9PageLoadingDismissDelayMs","g9PageLoadingSafetyTimeoutMs","nonNegative","name","value","fallback","undefined","Number","G9Error","String","resolveSettings","settings","fallbackIconFonts","_s_backEventName","_s_pageLoading","_s_strings","_ref","_loading_backgroundColor","_loading_spinnerColor","_s_executor","_s_fields","_s_toggles","s","backEventName","loading","Object","resolveGlyphSlots","createIconFontRegistry","resolveSheetSettings","mergePopupSettings","createDefaultPopupSettings"],"mappings":";;;AAkBO,MAAMA,yBAAyB;AAwB/B,MAAMC,0BAET;IAAE,SAAS;AAAK;AAgFb,MAAMC,8BAA8B;AAEpC,MAAMC,+BAA+B;AAE5C,SAASC,YAAYC,IAAY,EAAEC,KAAyB,EAAEC,QAAgB;IAC5E,IAAID,AAAUE,WAAVF,OAAqB,OAAOC;IAChC,IAAI,AAAiB,YAAjB,OAAOD,SAAsB,CAACG,OAAO,QAAQ,CAACH,UAAUA,QAAQ,GAClE,MAAM,IAAII,QACR,oBACA,GAAGL,KAAK,kDAAkD,EAAEM,OAAOL,OAAO,EAAE,CAAC;IAGjF,OAAOA;AACT;AAMO,SAASM,gBACdC,QAAgC,EAChCC,iBAAsC;QAGhBC,kBAINC,gBAELC,YAEEC,MAAAA,cAIQC,0BACHC,uBAQNC,aAAAA,OAAAA;QAEoCC,WAGFC;IA3B9C,MAAMC,IAAIX,QAAAA,WAAAA,WAAY,CAAC;IACvB,MAAMY,gBAAgB,QAAAV,CAAAA,mBAAAA,EAAE,aAAa,AAAD,IAAdA,mBAAmBf;IACzC,IAAI,AAAyB,YAAzB,OAAOyB,iBAA8BA,AAAyB,OAAzBA,cAAc,IAAI,IACzD,MAAM,IAAIf,QAAQ,oBAAoB;IAExC,MAAMgB,UAAU,QAAAV,CAAAA,iBAAAA,EAAE,WAAW,AAAD,IAAZA,iBAAiB,CAAC;IAClC,OAAOW,OAAO,MAAM,CAAC;QACnB,SAAS,QAAAV,CAAAA,aAAAA,EAAE,OAAO,AAAD,IAARA,aAAa,CAAC;QACvB,QAAQW,kBAAkBJ,EAAE,MAAM;QAClC,WAAW,QAAAN,CAAAA,OAAAA,QAAAA,CAAAA,eAAAA,EAAE,SAAS,AAAD,IAAVA,eAAeJ,iBAAgB,IAA/BI,OAAoCW;QAC/C,eAAeL,EAAE,aAAa;QAC9BC;QACA,aAAaE,OAAO,MAAM,CAAC;YACzB,iBAAiB,QAAAR,CAAAA,2BAAAA,QAAQ,eAAe,AAAD,IAAtBA,2BAA2B;YAC5C,cAAc,QAAAC,CAAAA,wBAAAA,QAAQ,YAAY,AAAD,IAAnBA,wBAAwB;YACtC,gBAAgBhB,YAAY,8BAA8BsB,QAAQ,cAAc,EAAExB;YAClF,iBAAiBE,YACf,+BACAsB,QAAQ,eAAe,EACvBvB;QAEJ;QACA,UAAU,QAAAkB,CAAAA,cAAAA,EAAE,QAAQ,AAAD,IAATA,cAAc,CAAC;QACzB,2BAA2BG,EAAE,yBAAyB;QACtD,QAAQG,OAAO,MAAM,CAAC;YAAE,sBAAsB,QAAF,iBAAEL,CAAAA,YAAAA,EAAE,MAAM,AAAD,IAAPA,KAAAA,IAAAA,UAAU,oBAAoB,AAAD,IAAC,QAAI;QAAK;QACrF,QAAQQ,qBAAqBN,EAAE,MAAM;QACrC,QAAQG,OAAO,MAAM,CAACI,mBAAmBP,EAAE,MAAM,EAAEQ;QACnD,SAASL,OAAO,MAAM,CAAC;YAAE,mBAAmB,QAAF,iBAAEJ,CAAAA,aAAAA,EAAE,OAAO,AAAD,IAARA,KAAAA,IAAAA,WAAW,iBAAiB,AAAD,IAAC,QAAI;QAAK;IACnF;AACF"}
|
package/dist/provider/theme.css
CHANGED
|
@@ -261,6 +261,9 @@
|
|
|
261
261
|
--g9-metric-chip-height: 36px;
|
|
262
262
|
--g9-metric-chip-horizontal-padding: 14px;
|
|
263
263
|
--g9-metric-chip-font-size: 13px;
|
|
264
|
+
--g9-metric-segment-height: 44px;
|
|
265
|
+
--g9-metric-segment-font-size: 14px;
|
|
266
|
+
--g9-metric-segment-corner-radius: 10px;
|
|
264
267
|
--g9-metric-chip-icon-size: 16px;
|
|
265
268
|
--g9-metric-chip-spacing: 6px;
|
|
266
269
|
--g9-metric-chip-selection-animation-ms: .14s;
|
|
@@ -292,6 +295,7 @@
|
|
|
292
295
|
--g9-metric-selection-min-height: 220px;
|
|
293
296
|
--g9-metric-selection-row-font-size: 14px;
|
|
294
297
|
--g9-metric-selection-icon-size: 18px;
|
|
298
|
+
--g9-metric-selection-avatar-size: 28px;
|
|
295
299
|
--g9-metric-selection-check-box-size: 20px;
|
|
296
300
|
--g9-metric-selection-check-radius: 6px;
|
|
297
301
|
--g9-metric-check-box-size: 20px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/provider/theme.css"],"names":[],"mappings":"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","sourcesContent":["/* Generated by renderThemeStylesheet (src/provider/theme-css.ts); `npm run gen:theme-css` rewrites it. */\n.g9-theme-light {\n --g9-primary: #349D57;\n --g9-on-primary: #FFFFFF;\n --g9-primary-container: #D6F0DF;\n --g9-on-primary-container: #0E3B1E;\n --g9-primary-border: #2D8A4C;\n --g9-primary-hover: #2D8A4C;\n --g9-primary-pressed: #267A42;\n --g9-secondary: #4A7C3F;\n --g9-on-secondary: #FFFFFF;\n --g9-secondary-container: #E3F0DF;\n --g9-on-secondary-container: #16310F;\n --g9-secondary-border: #3C6633;\n --g9-tertiary: #3A7DB5;\n --g9-on-tertiary: #FFFFFF;\n --g9-tertiary-container: #D8EAF7;\n --g9-on-tertiary-container: #0A2A44;\n --g9-tertiary-border: #316596;\n --g9-quaternary: #7B5EA7;\n --g9-on-quaternary: #FFFFFF;\n --g9-quaternary-container: #EAE1F5;\n --g9-on-quaternary-container: #2E1F45;\n --g9-quaternary-border: #6B4F92;\n --g9-error: #C8364B;\n --g9-on-error: #FFFFFF;\n --g9-error-container: #FADCE0;\n --g9-on-error-container: #5A0814;\n --g9-error-border: #A82A3D;\n --g9-warning: #C77A14;\n --g9-on-warning: #FFFFFF;\n --g9-warning-container: #FBEED5;\n --g9-on-warning-container: #4A2E05;\n --g9-warning-border: #A8650F;\n --g9-success: #2F8B4A;\n --g9-on-success: #FFFFFF;\n --g9-success-container: #E2F3E8;\n --g9-on-success-container: #0C3019;\n --g9-success-border: #267A3E;\n --g9-info: #2B6FB3;\n --g9-on-info: #FFFFFF;\n --g9-info-container: #DCE9F7;\n --g9-on-info-container: #0B2D4D;\n --g9-info-border: #245E99;\n --g9-outline: #C3C7C3;\n --g9-outline-variant: #DDE0DD;\n --g9-outline-border: #989E98;\n --g9-background: #F7F8F7;\n --g9-on-background: #181A18;\n --g9-background-secondary: #EEEFEE;\n --g9-surface: #FFFFFF;\n --g9-on-surface: #181A18;\n --g9-surface-variant: #EFF1EF;\n --g9-on-surface-variant: #525852;\n --g9-surface-border: #DDE0DD;\n --g9-inverse-surface: #14181A;\n --g9-inverse-on-surface: #F4F6F4;\n --g9-inverse-primary: #7BD88F;\n --g9-surface-container-highest: #E6E8E6;\n --g9-surface-container-high: #ECEEEC;\n --g9-surface-container: #F1F2F1;\n --g9-surface-container-low: #F7F8F7;\n --g9-surface-container-lowest: #FFFFFF;\n --g9-surface-bright: #FFFFFF;\n --g9-surface-dim: #E4E6E4;\n --g9-scrim: rgba(0, 0, 0, 0.6);\n --g9-scrim-light: rgba(0, 0, 0, 0.4);\n --g9-overlay: rgba(0, 0, 0, 0.078431375);\n --g9-overlay-light: rgba(0, 0, 0, 0.039215688);\n --g9-text-primary: #181A18;\n --g9-text-secondary: #525852;\n --g9-text-tertiary: #6E756E;\n --g9-text-disabled: #C3C7C3;\n --g9-white: #FFFFFF;\n --g9-black: #000000;\n --g9-light: #EEEEEE;\n --g9-dark: #222222;\n --g9-divider: #EEEFEE;\n --g9-divider-strong: #DDE0DD;\n --g9-focus: #349D57;\n --g9-focus-visible: rgba(52, 157, 87, 0.34901962);\n --g9-disabled: #C3C7C3;\n --g9-disabled-container: #EEEFEE;\n --g9-card-background: #FFFFFF;\n --g9-card-border: #DDE0DD;\n --g9-card-elevated: #FFFFFF;\n --g9-default: #EEEFEE;\n --g9-on-default: #181A18;\n --g9-default-container: #DDE0DD;\n --g9-on-default-container: #181A18;\n --g9-default-border: #C3C7C3;\n --g9-default-hover: #DDE0DD;\n --g9-default-pressed: #C3C7C3;\n --g9-input-background: #FFFFFF;\n --g9-input-border: #C3C7C3;\n --g9-input-border-focused: #349D57;\n --g9-input-placeholder: #989E98;\n}\n\n.g9-theme-dark {\n --g9-primary: #45A664;\n --g9-on-primary: #062814;\n --g9-primary-container: #173E25;\n --g9-on-primary-container: #BDE5C9;\n --g9-primary-border: #338E51;\n --g9-primary-hover: #52B271;\n --g9-primary-pressed: #338E51;\n --g9-secondary: #6BBD5A;\n --g9-on-secondary: #0C2207;\n --g9-secondary-container: #1A3016;\n --g9-on-secondary-container: #C8E6BF;\n --g9-secondary-border: #2C4A23;\n --g9-tertiary: #6AAEE0;\n --g9-on-tertiary: #04243F;\n --g9-tertiary-container: #0E2540;\n --g9-on-tertiary-container: #C2E0F7;\n --g9-tertiary-border: #1E456B;\n --g9-quaternary: #A78BD1;\n --g9-on-quaternary: #2A1B40;\n --g9-quaternary-container: #2E2340;\n --g9-on-quaternary-container: #E0D4F0;\n --g9-quaternary-border: #4A3A66;\n --g9-error: #E66478;\n --g9-on-error: #2C0B12;\n --g9-error-container: #461620;\n --g9-on-error-container: #F7CDD4;\n --g9-error-border: #7A2734;\n --g9-warning: #E3A04B;\n --g9-on-warning: #2A1A05;\n --g9-warning-container: #3D2A0E;\n --g9-on-warning-container: #F7DEB5;\n --g9-warning-border: #6B4A1C;\n --g9-success: #4BBD6B;\n --g9-on-success: #062814;\n --g9-success-container: #173E25;\n --g9-on-success-container: #BDE5C9;\n --g9-success-border: #2A7E46;\n --g9-info: #6BA6E0;\n --g9-on-info: #07203A;\n --g9-info-container: #142F4D;\n --g9-on-info-container: #C2DBF7;\n --g9-info-border: #27517D;\n --g9-outline: #3D423D;\n --g9-outline-variant: #272A27;\n --g9-outline-border: #525852;\n --g9-background: #0C0D0C;\n --g9-on-background: #F4F6F4;\n --g9-background-secondary: #15171A;\n --g9-surface: #15171A;\n --g9-on-surface: #F4F6F4;\n --g9-surface-variant: #22262A;\n --g9-on-surface-variant: #C3C7C3;\n --g9-surface-border: #272A27;\n --g9-inverse-surface: #F4F6F4;\n --g9-inverse-on-surface: #14181A;\n --g9-inverse-primary: #349D57;\n --g9-surface-container-highest: #2A2E32;\n --g9-surface-container-high: #22262A;\n --g9-surface-container: #1B1E20;\n --g9-surface-container-low: #15171A;\n --g9-surface-container-lowest: #101113;\n --g9-surface-bright: #2A2E32;\n --g9-surface-dim: #0C0D0C;\n --g9-scrim: rgba(0, 0, 0, 0.8);\n --g9-scrim-light: rgba(0, 0, 0, 0.6);\n --g9-overlay: rgba(0, 0, 0, 0.2);\n --g9-overlay-light: rgba(0, 0, 0, 0.101960786);\n --g9-text-primary: #F4F6F4;\n --g9-text-secondary: #C3C7C3;\n --g9-text-tertiary: #989E98;\n --g9-text-disabled: #525852;\n --g9-white: #FFFFFF;\n --g9-black: #000000;\n --g9-light: #EEEEEE;\n --g9-dark: #222222;\n --g9-divider: #1F2222;\n --g9-divider-strong: #272A27;\n --g9-focus: #45A664;\n --g9-focus-visible: rgba(75, 189, 107, 0.4);\n --g9-disabled: #525852;\n --g9-disabled-container: #1B1E20;\n --g9-card-background: #15171A;\n --g9-card-border: #272A27;\n --g9-card-elevated: #1B1E20;\n --g9-default: #22262A;\n --g9-on-default: #F4F6F4;\n --g9-default-container: #2A2E32;\n --g9-on-default-container: #F4F6F4;\n --g9-default-border: #3D423D;\n --g9-default-hover: #2A2E32;\n --g9-default-pressed: #3D423D;\n --g9-input-background: #15171A;\n --g9-input-border: #3D423D;\n --g9-input-border-focused: #45A664;\n --g9-input-placeholder: #989E98;\n}\n\n.g9-provider {\n --g9-metric-radius-xs: 6px;\n --g9-metric-radius-sm: 8px;\n --g9-metric-radius-md: 12px;\n --g9-metric-radius-lg: 16px;\n --g9-metric-radius-xl: 20px;\n --g9-metric-radius-pill: 999px;\n --g9-metric-control-height: 52px;\n --g9-metric-button-height-small: 36px;\n --g9-metric-button-height-medium: 44px;\n --g9-metric-button-height-large: 48px;\n --g9-metric-button-height-hero: 52px;\n --g9-metric-input-horizontal-padding: 14px;\n --g9-metric-input-icon-size: 20px;\n --g9-metric-leading-icon-outer-margin: 12px;\n --g9-metric-leading-icon-inner-margin: 8px;\n --g9-metric-trailing-icon-outer-margin: 12px;\n --g9-metric-trailing-icon-inner-margin: 8px;\n --g9-metric-leading-icon-slot-width: 40px;\n --g9-metric-trailing-icon-slot-width: 40px;\n --g9-metric-editor-trailing-icon-bottom-inset: 8px;\n --g9-metric-editor-trailing-slot-height: 36px;\n --g9-metric-input-label-leading-icon-offset: 26px;\n --g9-metric-floating-label-floated-extra-x: 8px;\n --g9-metric-outline-notch-text-gap: 8px;\n --g9-metric-floating-label-font-size-float: 11px;\n --g9-metric-floating-label-font-size-rest: 15px;\n --g9-metric-floating-label-height: 22px;\n --g9-metric-floating-label-floated-y: -11px;\n --g9-metric-floating-label-rest-scale: 1;\n --g9-metric-floating-label-floated-scale: 0.78;\n --g9-metric-floating-label-duration-ms: 160ms;\n --g9-metric-floating-label-clearance: 6px;\n --g9-metric-helper-font-size: 11.5px;\n --g9-metric-counter-font-size: 11px;\n --g9-metric-outlined-field-stroke-thickness: 1.5px;\n --g9-metric-outlined-field-emphasis-stroke-thickness: 2.5px;\n --g9-metric-outlined-field-focus-halo-thickness: 6px;\n --g9-metric-focus-ring-opacity: 0.22;\n --g9-metric-button-font-small: 12px;\n --g9-metric-button-font-medium: 14px;\n --g9-metric-button-font-large: 15px;\n --g9-metric-button-font-hero: 16px;\n --g9-metric-switch-width: 56px;\n --g9-metric-switch-height: 32px;\n --g9-metric-switch-thumb: 24px;\n --g9-metric-switch-thumb-pressed: 30px;\n --g9-metric-slider-height: 104px;\n --g9-metric-slider-height-compact: 36px;\n --g9-metric-slider-track-y: 52px;\n --g9-metric-slider-track-height: 8px;\n --g9-metric-slider-thumb-radius: 14px;\n --g9-metric-slider-horizontal-inset: 16px;\n --g9-metric-slider-label-gap: 18px;\n --g9-metric-pin-cell-width: 44px;\n --g9-metric-pin-cell-height: 52px;\n --g9-metric-pin-cell-stroke-thickness: 1.4px;\n --g9-metric-pin-cell-stroke-thickness-focused: 2px;\n --g9-metric-pin-cell-corner-radius: 10px;\n --g9-metric-pin-cell-spacing: 8px;\n --g9-metric-pin-separator-spacing: 6px;\n --g9-metric-pin-cell-font-size: 22px;\n --g9-metric-pin-separator-font-size: 22px;\n --g9-metric-progress-bar-height: 10px;\n --g9-metric-chip-height: 36px;\n --g9-metric-chip-horizontal-padding: 14px;\n --g9-metric-chip-font-size: 13px;\n --g9-metric-chip-icon-size: 16px;\n --g9-metric-chip-spacing: 6px;\n --g9-metric-chip-selection-animation-ms: 140ms;\n --g9-metric-chip-checkmark-animation-ms: 120ms;\n --g9-metric-tab-bar-height: 52px;\n --g9-metric-tab-bar-inner-padding: 4px;\n --g9-metric-tab-bar-radius: 26px;\n --g9-metric-tab-pill-vertical-inset: 2px;\n --g9-metric-tab-pill-radius: 18px;\n --g9-metric-tab-cell-horizontal-padding: 16px;\n --g9-metric-tab-bar-to-content-gap: 8px;\n --g9-metric-tab-font-size: 13px;\n --g9-metric-tab-icon-size: 16px;\n --g9-metric-tab-badge-height: 18px;\n --g9-metric-tab-content-radius: 16px;\n --g9-metric-tab-underline-thickness: 2.5px;\n --g9-metric-tab-bar-edge-line-thickness: 1px;\n --g9-metric-tab-separator-thickness: 1px;\n --g9-metric-tab-separator-vertical-inset: 12px;\n --g9-metric-tab-content-default-padding: 20px;\n --g9-metric-drum-column-height: 220px;\n --g9-metric-drum-row-height: 44px;\n --g9-metric-drum-label-font-size: 10px;\n --g9-metric-drum-selected-font-size: 17px;\n --g9-metric-drum-unselected-font-size: 16px;\n --g9-metric-selection-row-height: 52px;\n --g9-metric-selection-row-horizontal-padding: 16px;\n --g9-metric-selection-max-height: 520px;\n --g9-metric-selection-min-height: 220px;\n --g9-metric-selection-row-font-size: 14px;\n --g9-metric-selection-icon-size: 18px;\n --g9-metric-selection-check-box-size: 20px;\n --g9-metric-selection-check-radius: 6px;\n --g9-metric-check-box-size: 20px;\n --g9-metric-check-box-corner-radius: 6px;\n --g9-metric-check-box-stroke-thickness: 2px;\n --g9-metric-check-box-mark-stroke-thickness: 2px;\n --g9-metric-check-box-halo-diameter: 40px;\n --g9-metric-check-box-label-spacing: 2px;\n --g9-metric-check-box-label-vertical-padding: 12px;\n --g9-metric-check-box-label-font-size: 14px;\n --g9-metric-check-box-toggle-duration-ms: 200ms;\n --g9-metric-check-box-morph-duration-ms: 150ms;\n --g9-metric-nav-card-icon-badge-size: 38px;\n --g9-metric-nav-card-padding-x: 14px;\n --g9-metric-nav-card-padding-y: 12px;\n --g9-metric-nav-card-title-font-size: 14px;\n --g9-metric-nav-card-subtitle-font-size: 11.5px;\n --g9-metric-nav-card-value-font-size: 13px;\n --g9-metric-nav-card-chevron-size: 24px;\n --g9-metric-nav-card-coming-soon-font-size: 10px;\n --g9-metric-nav-card-coming-soon-padding-x: 7px;\n --g9-metric-nav-card-coming-soon-padding-y: 3.5px;\n --g9-metric-nav-card-coming-soon-radius: 11px;\n --g9-metric-separator-title-font-size: 10px;\n --g9-metric-separator-icon-size: 12px;\n --g9-metric-expander-header-height: 48px;\n --g9-metric-expander-title-font-size: 15px;\n --g9-metric-expander-icon-size: 20px;\n --g9-metric-expander-chevron-size: 22px;\n --g9-metric-expander-header-spacing: 10px;\n --g9-metric-expander-content-top-gap: 8px;\n --g9-metric-expander-header-padding-x: 14px;\n --g9-metric-expander-chevron-rotation-ms: 220ms;\n --g9-metric-expander-content-animation-ms: 220ms;\n --g9-metric-cascade-panel-animation-ms: 280ms;\n --g9-metric-cascade-panel-header-height: 48px;\n --g9-metric-cascade-panel-header-font-size: 15px;\n --g9-metric-cascade-panel-back-icon-size: 22px;\n --g9-metric-cascade-panel-header-padding: 8px;\n --g9-metric-cascade-panel-parallax-fraction: 0.18;\n --g9-metric-cascade-panel-underlay-dim-opacity: 0.55;\n --g9-metric-press-duration-ms: 80ms;\n --g9-metric-release-duration-ms: 150ms;\n --g9-metric-hover-duration-ms: 80ms;\n --g9-metric-ripple-duration-ms: 350ms;\n --g9-metric-icon-press-scale-to: 0.92;\n --g9-metric-tab-indicator-duration-ms: 240ms;\n --g9-metric-tab-content-transition-ms: 160ms;\n --g9-metric-switch-toggle-duration-ms: 240ms;\n --g9-metric-progress-value-duration-ms: 300ms;\n --g9-metric-indeterminate-frame-ms: 16ms;\n --g9-metric-indeterminate-step: 0.012;\n --g9-metric-intro-overlay-opacity: 0.52;\n --g9-metric-intro-overlay-top-opacity-ratio: 0.4;\n --g9-metric-intro-startup-cover-fade-duration-ms: 320ms;\n --g9-metric-intro-initial-video-seek-timeout-ms: 900ms;\n --g9-metric-intro-media-fade-in-duration-ms: 420ms;\n --g9-metric-intro-media-fade-out-duration-ms: 420ms;\n --g9-metric-intro-logo-width: 192px;\n --g9-metric-intro-logo-height: 34px;\n --g9-metric-intro-title-font-size: 18px;\n --g9-metric-intro-subtitle-font-size: 14px;\n --g9-metric-intro-nav-font-size: 14px;\n --g9-metric-intro-step-active-width: 28px;\n --g9-metric-intro-step-inactive-width: 20px;\n --g9-metric-intro-step-height: 4px;\n --g9-metric-intro-step-spacing: 6px;\n --g9-metric-intro-chrome-padding: 20px;\n --g9-metric-intro-header-top-padding: 16px;\n --g9-metric-intro-logo-top-margin: 48px;\n --g9-metric-intro-text-bottom-margin: 12px;\n --g9-metric-intro-nav-min-touch-height: 48px;\n --g9-metric-intro-nav-min-touch-width: 72px;\n --g9-metric-intro-content-bottom-padding: 24px;\n --g9-layout-edge-spacing: 10px;\n --g9-layout-control-corner-radius: 9px;\n --g9-layout-toolbar-button-size: 42px;\n --g9-layout-toolbar-icon-size: 24px;\n --g9-layout-fit-content-loading-min-height: 180px;\n --g9-layout-modal-header-icon-button-size: 30px;\n --g9-layout-modal-header-icon-title-spacing: 3px;\n --g9-layout-sheet-header-vertical-gap: 10px;\n --g9-layout-sheet-header-min-height: 64px;\n --g9-layout-sheet-header-title-font-size: 16.2px;\n --g9-layout-modal-inner-icon-size: 39px;\n --g9-layout-modal-sheet-handle-width: 90px;\n --g9-layout-modal-sheet-handle-height: 5px;\n --g9-layout-modal-target-header-height: 64px;\n --g9-layout-modal-target-tab-bar-height: 56px;\n --g9-layout-modal-target-category-row-height: 66px;\n --g9-layout-modal-target-footer-button-height: 52px;\n --g9-layout-spacing-x-small: 2px;\n --g9-layout-spacing-small: 4px;\n --g9-layout-spacing-medium: 8px;\n --g9-layout-spacing-large: 12px;\n --g9-layout-spacing-x-large: 16px;\n --g9-layout-control-cell-height: 52px;\n --g9-layout-min-touch-target: 48px;\n --g9-layout-site-thumbnail-size: 58px;\n --g9-layout-map-chrome-edge-spacing: 12px;\n --g9-layout-control-corner-radius-value-top-start: 9px;\n --g9-layout-control-corner-radius-value-top-end: 9px;\n --g9-layout-control-corner-radius-value-bottom-end: 9px;\n --g9-layout-control-corner-radius-value-bottom-start: 9px;\n --g9-layout-map-chrome-corner-radius-top-start: 24px;\n --g9-layout-map-chrome-corner-radius-top-end: 24px;\n --g9-layout-map-chrome-corner-radius-bottom-end: 24px;\n --g9-layout-map-chrome-corner-radius-bottom-start: 24px;\n --g9-layout-edge-horizontal-thickness-top: 0px;\n --g9-layout-edge-horizontal-thickness-end: 10px;\n --g9-layout-edge-horizontal-thickness-bottom: 0px;\n --g9-layout-edge-horizontal-thickness-start: 10px;\n --g9-layout-body-padding-top: 10px;\n --g9-layout-body-padding-end: 10px;\n --g9-layout-body-padding-bottom: 10px;\n --g9-layout-body-padding-start: 10px;\n --g9-layout-body-element-margin-top: 10px;\n --g9-layout-body-element-margin-end: 10px;\n --g9-layout-body-element-margin-bottom: 0px;\n --g9-layout-body-element-margin-start: 10px;\n --g9-layout-body-element-margin-with-bottom-gap-top: 10px;\n --g9-layout-body-element-margin-with-bottom-gap-end: 10px;\n --g9-layout-body-element-margin-with-bottom-gap-bottom: 10px;\n --g9-layout-body-element-margin-with-bottom-gap-start: 10px;\n --g9-layout-body-top-margin-top: 10px;\n --g9-layout-body-top-margin-end: 0px;\n --g9-layout-body-top-margin-bottom: 0px;\n --g9-layout-body-top-margin-start: 0px;\n --g9-layout-item-bottom-margin-top: 0px;\n --g9-layout-item-bottom-margin-end: 0px;\n --g9-layout-item-bottom-margin-bottom: 10px;\n --g9-layout-item-bottom-margin-start: 0px;\n --g9-layout-modal-base-body-margin-top: 0px;\n --g9-layout-modal-base-body-margin-end: 10px;\n --g9-layout-modal-base-body-margin-bottom: 10px;\n --g9-layout-modal-base-body-margin-start: 10px;\n --g9-layout-search-field-padding-top: 0px;\n --g9-layout-search-field-padding-end: 12px;\n --g9-layout-search-field-padding-bottom: 0px;\n --g9-layout-search-field-padding-start: 14px;\n --g9-layout-card-padding-top: 12px;\n --g9-layout-card-padding-end: 14px;\n --g9-layout-card-padding-bottom: 12px;\n --g9-layout-card-padding-start: 14px;\n --g9-layout-list-card-padding-top: 12px;\n --g9-layout-list-card-padding-end: 12px;\n --g9-layout-list-card-padding-bottom: 12px;\n --g9-layout-list-card-padding-start: 12px;\n --g9-layout-outlined-card-padding-top: 22px;\n --g9-layout-outlined-card-padding-end: 14px;\n --g9-layout-outlined-card-padding-bottom: 14px;\n --g9-layout-outlined-card-padding-start: 14px;\n --g9-layout-outlined-input-top-gap-top: 16px;\n --g9-layout-outlined-input-top-gap-end: 0px;\n --g9-layout-outlined-input-top-gap-bottom: 0px;\n --g9-layout-outlined-input-top-gap-start: 0px;\n --g9-layout-deferred-content-load-delay-ms: 369ms;\n --g9-layout-g9-bottom-sheet-footer-top-border-thickness: 1px;\n --g9-layout-g9-bottom-sheet-footer-max-buttons-per-row: 3;\n --g9-layout-g9-bottom-sheet-drag-handle-touch-height: 30px;\n --g9-layout-g9-bottom-sheet-drag-handle-width: 32px;\n --g9-layout-g9-bottom-sheet-drag-handle-height: 4px;\n --g9-layout-g9-bottom-sheet-backdrop-card-threshold: 0.75;\n --g9-layout-g9-bottom-sheet-backdrop-card-min-scale: 0.93;\n --g9-layout-g9-bottom-sheet-backdrop-card-translation-y: 12px;\n --g9-layout-g9-bottom-sheet-footer-button-height: 52px;\n --g9-layout-g9-bottom-sheet-footer-button-spacing: 10px;\n --g9-layout-g9-bottom-sheet-footer-padding-top: 10px;\n --g9-layout-g9-bottom-sheet-footer-padding-end: 10px;\n --g9-layout-g9-bottom-sheet-footer-padding-bottom: 10px;\n --g9-layout-g9-bottom-sheet-footer-padding-start: 10px;\n --g9-layout-map-bottom-bar-margin-top: 0px;\n --g9-layout-map-bottom-bar-margin-end: 12px;\n --g9-layout-map-bottom-bar-margin-bottom: 12px;\n --g9-layout-map-bottom-bar-margin-start: 12px;\n}\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://./src/provider/theme.css"],"names":[],"mappings":"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","sourcesContent":["/* Generated by renderThemeStylesheet (src/provider/theme-css.ts); `npm run gen:theme-css` rewrites it. */\n.g9-theme-light {\n --g9-primary: #349D57;\n --g9-on-primary: #FFFFFF;\n --g9-primary-container: #D6F0DF;\n --g9-on-primary-container: #0E3B1E;\n --g9-primary-border: #2D8A4C;\n --g9-primary-hover: #2D8A4C;\n --g9-primary-pressed: #267A42;\n --g9-secondary: #4A7C3F;\n --g9-on-secondary: #FFFFFF;\n --g9-secondary-container: #E3F0DF;\n --g9-on-secondary-container: #16310F;\n --g9-secondary-border: #3C6633;\n --g9-tertiary: #3A7DB5;\n --g9-on-tertiary: #FFFFFF;\n --g9-tertiary-container: #D8EAF7;\n --g9-on-tertiary-container: #0A2A44;\n --g9-tertiary-border: #316596;\n --g9-quaternary: #7B5EA7;\n --g9-on-quaternary: #FFFFFF;\n --g9-quaternary-container: #EAE1F5;\n --g9-on-quaternary-container: #2E1F45;\n --g9-quaternary-border: #6B4F92;\n --g9-error: #C8364B;\n --g9-on-error: #FFFFFF;\n --g9-error-container: #FADCE0;\n --g9-on-error-container: #5A0814;\n --g9-error-border: #A82A3D;\n --g9-warning: #C77A14;\n --g9-on-warning: #FFFFFF;\n --g9-warning-container: #FBEED5;\n --g9-on-warning-container: #4A2E05;\n --g9-warning-border: #A8650F;\n --g9-success: #2F8B4A;\n --g9-on-success: #FFFFFF;\n --g9-success-container: #E2F3E8;\n --g9-on-success-container: #0C3019;\n --g9-success-border: #267A3E;\n --g9-info: #2B6FB3;\n --g9-on-info: #FFFFFF;\n --g9-info-container: #DCE9F7;\n --g9-on-info-container: #0B2D4D;\n --g9-info-border: #245E99;\n --g9-outline: #C3C7C3;\n --g9-outline-variant: #DDE0DD;\n --g9-outline-border: #989E98;\n --g9-background: #F7F8F7;\n --g9-on-background: #181A18;\n --g9-background-secondary: #EEEFEE;\n --g9-surface: #FFFFFF;\n --g9-on-surface: #181A18;\n --g9-surface-variant: #EFF1EF;\n --g9-on-surface-variant: #525852;\n --g9-surface-border: #DDE0DD;\n --g9-inverse-surface: #14181A;\n --g9-inverse-on-surface: #F4F6F4;\n --g9-inverse-primary: #7BD88F;\n --g9-surface-container-highest: #E6E8E6;\n --g9-surface-container-high: #ECEEEC;\n --g9-surface-container: #F1F2F1;\n --g9-surface-container-low: #F7F8F7;\n --g9-surface-container-lowest: #FFFFFF;\n --g9-surface-bright: #FFFFFF;\n --g9-surface-dim: #E4E6E4;\n --g9-scrim: rgba(0, 0, 0, 0.6);\n --g9-scrim-light: rgba(0, 0, 0, 0.4);\n --g9-overlay: rgba(0, 0, 0, 0.078431375);\n --g9-overlay-light: rgba(0, 0, 0, 0.039215688);\n --g9-text-primary: #181A18;\n --g9-text-secondary: #525852;\n --g9-text-tertiary: #6E756E;\n --g9-text-disabled: #C3C7C3;\n --g9-white: #FFFFFF;\n --g9-black: #000000;\n --g9-light: #EEEEEE;\n --g9-dark: #222222;\n --g9-divider: #EEEFEE;\n --g9-divider-strong: #DDE0DD;\n --g9-focus: #349D57;\n --g9-focus-visible: rgba(52, 157, 87, 0.34901962);\n --g9-disabled: #C3C7C3;\n --g9-disabled-container: #EEEFEE;\n --g9-card-background: #FFFFFF;\n --g9-card-border: #DDE0DD;\n --g9-card-elevated: #FFFFFF;\n --g9-default: #EEEFEE;\n --g9-on-default: #181A18;\n --g9-default-container: #DDE0DD;\n --g9-on-default-container: #181A18;\n --g9-default-border: #C3C7C3;\n --g9-default-hover: #DDE0DD;\n --g9-default-pressed: #C3C7C3;\n --g9-input-background: #FFFFFF;\n --g9-input-border: #C3C7C3;\n --g9-input-border-focused: #349D57;\n --g9-input-placeholder: #989E98;\n}\n\n.g9-theme-dark {\n --g9-primary: #45A664;\n --g9-on-primary: #062814;\n --g9-primary-container: #173E25;\n --g9-on-primary-container: #BDE5C9;\n --g9-primary-border: #338E51;\n --g9-primary-hover: #52B271;\n --g9-primary-pressed: #338E51;\n --g9-secondary: #6BBD5A;\n --g9-on-secondary: #0C2207;\n --g9-secondary-container: #1A3016;\n --g9-on-secondary-container: #C8E6BF;\n --g9-secondary-border: #2C4A23;\n --g9-tertiary: #6AAEE0;\n --g9-on-tertiary: #04243F;\n --g9-tertiary-container: #0E2540;\n --g9-on-tertiary-container: #C2E0F7;\n --g9-tertiary-border: #1E456B;\n --g9-quaternary: #A78BD1;\n --g9-on-quaternary: #2A1B40;\n --g9-quaternary-container: #2E2340;\n --g9-on-quaternary-container: #E0D4F0;\n --g9-quaternary-border: #4A3A66;\n --g9-error: #E66478;\n --g9-on-error: #2C0B12;\n --g9-error-container: #461620;\n --g9-on-error-container: #F7CDD4;\n --g9-error-border: #7A2734;\n --g9-warning: #E3A04B;\n --g9-on-warning: #2A1A05;\n --g9-warning-container: #3D2A0E;\n --g9-on-warning-container: #F7DEB5;\n --g9-warning-border: #6B4A1C;\n --g9-success: #4BBD6B;\n --g9-on-success: #062814;\n --g9-success-container: #173E25;\n --g9-on-success-container: #BDE5C9;\n --g9-success-border: #2A7E46;\n --g9-info: #6BA6E0;\n --g9-on-info: #07203A;\n --g9-info-container: #142F4D;\n --g9-on-info-container: #C2DBF7;\n --g9-info-border: #27517D;\n --g9-outline: #3D423D;\n --g9-outline-variant: #272A27;\n --g9-outline-border: #525852;\n --g9-background: #0C0D0C;\n --g9-on-background: #F4F6F4;\n --g9-background-secondary: #15171A;\n --g9-surface: #15171A;\n --g9-on-surface: #F4F6F4;\n --g9-surface-variant: #22262A;\n --g9-on-surface-variant: #C3C7C3;\n --g9-surface-border: #272A27;\n --g9-inverse-surface: #F4F6F4;\n --g9-inverse-on-surface: #14181A;\n --g9-inverse-primary: #349D57;\n --g9-surface-container-highest: #2A2E32;\n --g9-surface-container-high: #22262A;\n --g9-surface-container: #1B1E20;\n --g9-surface-container-low: #15171A;\n --g9-surface-container-lowest: #101113;\n --g9-surface-bright: #2A2E32;\n --g9-surface-dim: #0C0D0C;\n --g9-scrim: rgba(0, 0, 0, 0.8);\n --g9-scrim-light: rgba(0, 0, 0, 0.6);\n --g9-overlay: rgba(0, 0, 0, 0.2);\n --g9-overlay-light: rgba(0, 0, 0, 0.101960786);\n --g9-text-primary: #F4F6F4;\n --g9-text-secondary: #C3C7C3;\n --g9-text-tertiary: #989E98;\n --g9-text-disabled: #525852;\n --g9-white: #FFFFFF;\n --g9-black: #000000;\n --g9-light: #EEEEEE;\n --g9-dark: #222222;\n --g9-divider: #1F2222;\n --g9-divider-strong: #272A27;\n --g9-focus: #45A664;\n --g9-focus-visible: rgba(75, 189, 107, 0.4);\n --g9-disabled: #525852;\n --g9-disabled-container: #1B1E20;\n --g9-card-background: #15171A;\n --g9-card-border: #272A27;\n --g9-card-elevated: #1B1E20;\n --g9-default: #22262A;\n --g9-on-default: #F4F6F4;\n --g9-default-container: #2A2E32;\n --g9-on-default-container: #F4F6F4;\n --g9-default-border: #3D423D;\n --g9-default-hover: #2A2E32;\n --g9-default-pressed: #3D423D;\n --g9-input-background: #15171A;\n --g9-input-border: #3D423D;\n --g9-input-border-focused: #45A664;\n --g9-input-placeholder: #989E98;\n}\n\n.g9-provider {\n --g9-metric-radius-xs: 6px;\n --g9-metric-radius-sm: 8px;\n --g9-metric-radius-md: 12px;\n --g9-metric-radius-lg: 16px;\n --g9-metric-radius-xl: 20px;\n --g9-metric-radius-pill: 999px;\n --g9-metric-control-height: 52px;\n --g9-metric-button-height-small: 36px;\n --g9-metric-button-height-medium: 44px;\n --g9-metric-button-height-large: 48px;\n --g9-metric-button-height-hero: 52px;\n --g9-metric-input-horizontal-padding: 14px;\n --g9-metric-input-icon-size: 20px;\n --g9-metric-leading-icon-outer-margin: 12px;\n --g9-metric-leading-icon-inner-margin: 8px;\n --g9-metric-trailing-icon-outer-margin: 12px;\n --g9-metric-trailing-icon-inner-margin: 8px;\n --g9-metric-leading-icon-slot-width: 40px;\n --g9-metric-trailing-icon-slot-width: 40px;\n --g9-metric-editor-trailing-icon-bottom-inset: 8px;\n --g9-metric-editor-trailing-slot-height: 36px;\n --g9-metric-input-label-leading-icon-offset: 26px;\n --g9-metric-floating-label-floated-extra-x: 8px;\n --g9-metric-outline-notch-text-gap: 8px;\n --g9-metric-floating-label-font-size-float: 11px;\n --g9-metric-floating-label-font-size-rest: 15px;\n --g9-metric-floating-label-height: 22px;\n --g9-metric-floating-label-floated-y: -11px;\n --g9-metric-floating-label-rest-scale: 1;\n --g9-metric-floating-label-floated-scale: 0.78;\n --g9-metric-floating-label-duration-ms: 160ms;\n --g9-metric-floating-label-clearance: 6px;\n --g9-metric-helper-font-size: 11.5px;\n --g9-metric-counter-font-size: 11px;\n --g9-metric-outlined-field-stroke-thickness: 1.5px;\n --g9-metric-outlined-field-emphasis-stroke-thickness: 2.5px;\n --g9-metric-outlined-field-focus-halo-thickness: 6px;\n --g9-metric-focus-ring-opacity: 0.22;\n --g9-metric-button-font-small: 12px;\n --g9-metric-button-font-medium: 14px;\n --g9-metric-button-font-large: 15px;\n --g9-metric-button-font-hero: 16px;\n --g9-metric-switch-width: 56px;\n --g9-metric-switch-height: 32px;\n --g9-metric-switch-thumb: 24px;\n --g9-metric-switch-thumb-pressed: 30px;\n --g9-metric-slider-height: 104px;\n --g9-metric-slider-height-compact: 36px;\n --g9-metric-slider-track-y: 52px;\n --g9-metric-slider-track-height: 8px;\n --g9-metric-slider-thumb-radius: 14px;\n --g9-metric-slider-horizontal-inset: 16px;\n --g9-metric-slider-label-gap: 18px;\n --g9-metric-pin-cell-width: 44px;\n --g9-metric-pin-cell-height: 52px;\n --g9-metric-pin-cell-stroke-thickness: 1.4px;\n --g9-metric-pin-cell-stroke-thickness-focused: 2px;\n --g9-metric-pin-cell-corner-radius: 10px;\n --g9-metric-pin-cell-spacing: 8px;\n --g9-metric-pin-separator-spacing: 6px;\n --g9-metric-pin-cell-font-size: 22px;\n --g9-metric-pin-separator-font-size: 22px;\n --g9-metric-progress-bar-height: 10px;\n --g9-metric-chip-height: 36px;\n --g9-metric-chip-horizontal-padding: 14px;\n --g9-metric-chip-font-size: 13px;\n --g9-metric-segment-height: 44px;\n --g9-metric-segment-font-size: 14px;\n --g9-metric-segment-corner-radius: 10px;\n --g9-metric-chip-icon-size: 16px;\n --g9-metric-chip-spacing: 6px;\n --g9-metric-chip-selection-animation-ms: 140ms;\n --g9-metric-chip-checkmark-animation-ms: 120ms;\n --g9-metric-tab-bar-height: 52px;\n --g9-metric-tab-bar-inner-padding: 4px;\n --g9-metric-tab-bar-radius: 26px;\n --g9-metric-tab-pill-vertical-inset: 2px;\n --g9-metric-tab-pill-radius: 18px;\n --g9-metric-tab-cell-horizontal-padding: 16px;\n --g9-metric-tab-bar-to-content-gap: 8px;\n --g9-metric-tab-font-size: 13px;\n --g9-metric-tab-icon-size: 16px;\n --g9-metric-tab-badge-height: 18px;\n --g9-metric-tab-content-radius: 16px;\n --g9-metric-tab-underline-thickness: 2.5px;\n --g9-metric-tab-bar-edge-line-thickness: 1px;\n --g9-metric-tab-separator-thickness: 1px;\n --g9-metric-tab-separator-vertical-inset: 12px;\n --g9-metric-tab-content-default-padding: 20px;\n --g9-metric-drum-column-height: 220px;\n --g9-metric-drum-row-height: 44px;\n --g9-metric-drum-label-font-size: 10px;\n --g9-metric-drum-selected-font-size: 17px;\n --g9-metric-drum-unselected-font-size: 16px;\n --g9-metric-selection-row-height: 52px;\n --g9-metric-selection-row-horizontal-padding: 16px;\n --g9-metric-selection-max-height: 520px;\n --g9-metric-selection-min-height: 220px;\n --g9-metric-selection-row-font-size: 14px;\n --g9-metric-selection-icon-size: 18px;\n --g9-metric-selection-avatar-size: 28px;\n --g9-metric-selection-check-box-size: 20px;\n --g9-metric-selection-check-radius: 6px;\n --g9-metric-check-box-size: 20px;\n --g9-metric-check-box-corner-radius: 6px;\n --g9-metric-check-box-stroke-thickness: 2px;\n --g9-metric-check-box-mark-stroke-thickness: 2px;\n --g9-metric-check-box-halo-diameter: 40px;\n --g9-metric-check-box-label-spacing: 2px;\n --g9-metric-check-box-label-vertical-padding: 12px;\n --g9-metric-check-box-label-font-size: 14px;\n --g9-metric-check-box-toggle-duration-ms: 200ms;\n --g9-metric-check-box-morph-duration-ms: 150ms;\n --g9-metric-nav-card-icon-badge-size: 38px;\n --g9-metric-nav-card-padding-x: 14px;\n --g9-metric-nav-card-padding-y: 12px;\n --g9-metric-nav-card-title-font-size: 14px;\n --g9-metric-nav-card-subtitle-font-size: 11.5px;\n --g9-metric-nav-card-value-font-size: 13px;\n --g9-metric-nav-card-chevron-size: 24px;\n --g9-metric-nav-card-coming-soon-font-size: 10px;\n --g9-metric-nav-card-coming-soon-padding-x: 7px;\n --g9-metric-nav-card-coming-soon-padding-y: 3.5px;\n --g9-metric-nav-card-coming-soon-radius: 11px;\n --g9-metric-separator-title-font-size: 10px;\n --g9-metric-separator-icon-size: 12px;\n --g9-metric-expander-header-height: 48px;\n --g9-metric-expander-title-font-size: 15px;\n --g9-metric-expander-icon-size: 20px;\n --g9-metric-expander-chevron-size: 22px;\n --g9-metric-expander-header-spacing: 10px;\n --g9-metric-expander-content-top-gap: 8px;\n --g9-metric-expander-header-padding-x: 14px;\n --g9-metric-expander-chevron-rotation-ms: 220ms;\n --g9-metric-expander-content-animation-ms: 220ms;\n --g9-metric-cascade-panel-animation-ms: 280ms;\n --g9-metric-cascade-panel-header-height: 48px;\n --g9-metric-cascade-panel-header-font-size: 15px;\n --g9-metric-cascade-panel-back-icon-size: 22px;\n --g9-metric-cascade-panel-header-padding: 8px;\n --g9-metric-cascade-panel-parallax-fraction: 0.18;\n --g9-metric-cascade-panel-underlay-dim-opacity: 0.55;\n --g9-metric-press-duration-ms: 80ms;\n --g9-metric-release-duration-ms: 150ms;\n --g9-metric-hover-duration-ms: 80ms;\n --g9-metric-ripple-duration-ms: 350ms;\n --g9-metric-icon-press-scale-to: 0.92;\n --g9-metric-tab-indicator-duration-ms: 240ms;\n --g9-metric-tab-content-transition-ms: 160ms;\n --g9-metric-switch-toggle-duration-ms: 240ms;\n --g9-metric-progress-value-duration-ms: 300ms;\n --g9-metric-indeterminate-frame-ms: 16ms;\n --g9-metric-indeterminate-step: 0.012;\n --g9-metric-intro-overlay-opacity: 0.52;\n --g9-metric-intro-overlay-top-opacity-ratio: 0.4;\n --g9-metric-intro-startup-cover-fade-duration-ms: 320ms;\n --g9-metric-intro-initial-video-seek-timeout-ms: 900ms;\n --g9-metric-intro-media-fade-in-duration-ms: 420ms;\n --g9-metric-intro-media-fade-out-duration-ms: 420ms;\n --g9-metric-intro-logo-width: 192px;\n --g9-metric-intro-logo-height: 34px;\n --g9-metric-intro-title-font-size: 18px;\n --g9-metric-intro-subtitle-font-size: 14px;\n --g9-metric-intro-nav-font-size: 14px;\n --g9-metric-intro-step-active-width: 28px;\n --g9-metric-intro-step-inactive-width: 20px;\n --g9-metric-intro-step-height: 4px;\n --g9-metric-intro-step-spacing: 6px;\n --g9-metric-intro-chrome-padding: 20px;\n --g9-metric-intro-header-top-padding: 16px;\n --g9-metric-intro-logo-top-margin: 48px;\n --g9-metric-intro-text-bottom-margin: 12px;\n --g9-metric-intro-nav-min-touch-height: 48px;\n --g9-metric-intro-nav-min-touch-width: 72px;\n --g9-metric-intro-content-bottom-padding: 24px;\n --g9-layout-edge-spacing: 10px;\n --g9-layout-control-corner-radius: 9px;\n --g9-layout-toolbar-button-size: 42px;\n --g9-layout-toolbar-icon-size: 24px;\n --g9-layout-fit-content-loading-min-height: 180px;\n --g9-layout-modal-header-icon-button-size: 30px;\n --g9-layout-modal-header-icon-title-spacing: 3px;\n --g9-layout-sheet-header-vertical-gap: 10px;\n --g9-layout-sheet-header-min-height: 64px;\n --g9-layout-sheet-header-title-font-size: 16.2px;\n --g9-layout-modal-inner-icon-size: 39px;\n --g9-layout-modal-sheet-handle-width: 90px;\n --g9-layout-modal-sheet-handle-height: 5px;\n --g9-layout-modal-target-header-height: 64px;\n --g9-layout-modal-target-tab-bar-height: 56px;\n --g9-layout-modal-target-category-row-height: 66px;\n --g9-layout-modal-target-footer-button-height: 52px;\n --g9-layout-spacing-x-small: 2px;\n --g9-layout-spacing-small: 4px;\n --g9-layout-spacing-medium: 8px;\n --g9-layout-spacing-large: 12px;\n --g9-layout-spacing-x-large: 16px;\n --g9-layout-control-cell-height: 52px;\n --g9-layout-min-touch-target: 48px;\n --g9-layout-site-thumbnail-size: 58px;\n --g9-layout-map-chrome-edge-spacing: 12px;\n --g9-layout-control-corner-radius-value-top-start: 9px;\n --g9-layout-control-corner-radius-value-top-end: 9px;\n --g9-layout-control-corner-radius-value-bottom-end: 9px;\n --g9-layout-control-corner-radius-value-bottom-start: 9px;\n --g9-layout-map-chrome-corner-radius-top-start: 24px;\n --g9-layout-map-chrome-corner-radius-top-end: 24px;\n --g9-layout-map-chrome-corner-radius-bottom-end: 24px;\n --g9-layout-map-chrome-corner-radius-bottom-start: 24px;\n --g9-layout-edge-horizontal-thickness-top: 0px;\n --g9-layout-edge-horizontal-thickness-end: 10px;\n --g9-layout-edge-horizontal-thickness-bottom: 0px;\n --g9-layout-edge-horizontal-thickness-start: 10px;\n --g9-layout-body-padding-top: 10px;\n --g9-layout-body-padding-end: 10px;\n --g9-layout-body-padding-bottom: 10px;\n --g9-layout-body-padding-start: 10px;\n --g9-layout-body-element-margin-top: 10px;\n --g9-layout-body-element-margin-end: 10px;\n --g9-layout-body-element-margin-bottom: 0px;\n --g9-layout-body-element-margin-start: 10px;\n --g9-layout-body-element-margin-with-bottom-gap-top: 10px;\n --g9-layout-body-element-margin-with-bottom-gap-end: 10px;\n --g9-layout-body-element-margin-with-bottom-gap-bottom: 10px;\n --g9-layout-body-element-margin-with-bottom-gap-start: 10px;\n --g9-layout-body-top-margin-top: 10px;\n --g9-layout-body-top-margin-end: 0px;\n --g9-layout-body-top-margin-bottom: 0px;\n --g9-layout-body-top-margin-start: 0px;\n --g9-layout-item-bottom-margin-top: 0px;\n --g9-layout-item-bottom-margin-end: 0px;\n --g9-layout-item-bottom-margin-bottom: 10px;\n --g9-layout-item-bottom-margin-start: 0px;\n --g9-layout-modal-base-body-margin-top: 0px;\n --g9-layout-modal-base-body-margin-end: 10px;\n --g9-layout-modal-base-body-margin-bottom: 10px;\n --g9-layout-modal-base-body-margin-start: 10px;\n --g9-layout-search-field-padding-top: 0px;\n --g9-layout-search-field-padding-end: 12px;\n --g9-layout-search-field-padding-bottom: 0px;\n --g9-layout-search-field-padding-start: 14px;\n --g9-layout-card-padding-top: 12px;\n --g9-layout-card-padding-end: 14px;\n --g9-layout-card-padding-bottom: 12px;\n --g9-layout-card-padding-start: 14px;\n --g9-layout-list-card-padding-top: 12px;\n --g9-layout-list-card-padding-end: 12px;\n --g9-layout-list-card-padding-bottom: 12px;\n --g9-layout-list-card-padding-start: 12px;\n --g9-layout-outlined-card-padding-top: 22px;\n --g9-layout-outlined-card-padding-end: 14px;\n --g9-layout-outlined-card-padding-bottom: 14px;\n --g9-layout-outlined-card-padding-start: 14px;\n --g9-layout-outlined-input-top-gap-top: 16px;\n --g9-layout-outlined-input-top-gap-end: 0px;\n --g9-layout-outlined-input-top-gap-bottom: 0px;\n --g9-layout-outlined-input-top-gap-start: 0px;\n --g9-layout-deferred-content-load-delay-ms: 369ms;\n --g9-layout-g9-bottom-sheet-footer-top-border-thickness: 1px;\n --g9-layout-g9-bottom-sheet-footer-max-buttons-per-row: 3;\n --g9-layout-g9-bottom-sheet-drag-handle-touch-height: 30px;\n --g9-layout-g9-bottom-sheet-drag-handle-width: 32px;\n --g9-layout-g9-bottom-sheet-drag-handle-height: 4px;\n --g9-layout-g9-bottom-sheet-backdrop-card-threshold: 0.75;\n --g9-layout-g9-bottom-sheet-backdrop-card-min-scale: 0.93;\n --g9-layout-g9-bottom-sheet-backdrop-card-translation-y: 12px;\n --g9-layout-g9-bottom-sheet-footer-button-height: 52px;\n --g9-layout-g9-bottom-sheet-footer-button-spacing: 10px;\n --g9-layout-g9-bottom-sheet-footer-padding-top: 10px;\n --g9-layout-g9-bottom-sheet-footer-padding-end: 10px;\n --g9-layout-g9-bottom-sheet-footer-padding-bottom: 10px;\n --g9-layout-g9-bottom-sheet-footer-padding-start: 10px;\n --g9-layout-map-bottom-bar-margin-top: 0px;\n --g9-layout-map-bottom-bar-margin-end: 12px;\n --g9-layout-map-bottom-bar-margin-bottom: 12px;\n --g9-layout-map-bottom-bar-margin-start: 12px;\n}\n"],"sourceRoot":""}
|
|
@@ -10,10 +10,20 @@ export declare function roundHalfEven(v: number): number;
|
|
|
10
10
|
export declare function snapSliderValue(value: number, min: number, max: number, step: number): number;
|
|
11
11
|
/** A range clamped, snapped and ordered (MAUI `CoerceRange`: start > end swaps). */
|
|
12
12
|
export declare function coerceSliderRange(start: number, end: number, min: number, max: number, step: number): readonly [number, number];
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Whether a track really is logarithmic (MAUI 1.4.9 `Logarithmic`): only with `minimum > 0` (and a real range); otherwise
|
|
15
|
+
* it stays linear, as MAUI's.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isLogTrack(logarithmic: boolean | undefined, min: number, max: number): boolean;
|
|
18
|
+
/** Value → lynx-ui's normalized `[0, 1]`; by ratio on a logarithmic track (equal distances = equal ratios). */
|
|
19
|
+
export declare function sliderRatio(value: number, min: number, max: number, logarithmic?: boolean): number;
|
|
20
|
+
/** lynx-ui's normalized `[0, 1]` → value; `exp` of the log-span on a logarithmic track. */
|
|
21
|
+
export declare function sliderValueAt(ratio: number, min: number, max: number, logarithmic?: boolean): number;
|
|
22
|
+
/**
|
|
23
|
+
* The value a logarithmic track snaps to (MAUI 1.4.9): two significant figures — a fixed step would swallow the low end
|
|
24
|
+
* (787 … 56,475 ha: a step of 100 turns every small site into the same value). Clamped to the bounds.
|
|
25
|
+
*/
|
|
26
|
+
export declare function snapLogValue(value: number, min: number, max: number): number;
|
|
17
27
|
/**
|
|
18
28
|
* Formats a value with a .NET custom numeric format subset (MAUI `ValueFormat`, default `"0"`): one number pattern of
|
|
19
29
|
* `0`, `#`, `,` (grouping) and `.` (fraction digits: `0` = always, `#` = when needed), with any literal text around it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/range-slider/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAK7E,oHAAoH;AACpH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAEnF;AAID,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,kIAAkI;AAClI,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM7F;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAI3B;AAED,
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/range-slider/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAK7E,oHAAoH;AACpH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAEnF;AAID,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,kIAAkI;AAClI,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM7F;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAI3B;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9F;AAED,+GAA+G;AAC/G,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,MAAM,CAMhG;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,MAAM,CAKlG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,MAAM,CAqB9G"}
|
|
@@ -34,13 +34,25 @@ function coerceSliderRange(start, end, min, max, step) {
|
|
|
34
34
|
a
|
|
35
35
|
];
|
|
36
36
|
}
|
|
37
|
-
function
|
|
37
|
+
function isLogTrack(logarithmic, min, max) {
|
|
38
|
+
return true === logarithmic && min > 0 && max > min;
|
|
39
|
+
}
|
|
40
|
+
function sliderRatio(value, min, max, logarithmic = false) {
|
|
38
41
|
const b = sliderBounds(min, max);
|
|
42
|
+
if (isLogTrack(logarithmic, b.min, b.max) && value > 0) return Math.min(1, Math.max(0, (Math.log(value) - Math.log(b.min)) / (Math.log(b.max) - Math.log(b.min))));
|
|
39
43
|
return Math.min(1, Math.max(0, (value - b.min) / (b.max - b.min)));
|
|
40
44
|
}
|
|
41
|
-
function sliderValueAt(ratio, min, max) {
|
|
45
|
+
function sliderValueAt(ratio, min, max, logarithmic = false) {
|
|
46
|
+
const b = sliderBounds(min, max);
|
|
47
|
+
const r = Math.min(1, Math.max(0, ratio));
|
|
48
|
+
if (isLogTrack(logarithmic, b.min, b.max)) return Math.exp(Math.log(b.min) + r * (Math.log(b.max) - Math.log(b.min)));
|
|
49
|
+
return b.min + r * (b.max - b.min);
|
|
50
|
+
}
|
|
51
|
+
function snapLogValue(value, min, max) {
|
|
42
52
|
const b = sliderBounds(min, max);
|
|
43
|
-
|
|
53
|
+
const magnitude = value > 0 ? 10 ** (Math.floor(Math.log10(value)) - 1) : 0;
|
|
54
|
+
const snapped = magnitude > 0 ? roundHalfEven(value / magnitude) * magnitude : value;
|
|
55
|
+
return tidy(Math.min(b.max, Math.max(b.min, snapped)));
|
|
44
56
|
}
|
|
45
57
|
function formatSliderValue(value, format, culture) {
|
|
46
58
|
var _frac_match;
|
|
@@ -66,6 +78,6 @@ function formatSliderValue(value, format, culture) {
|
|
|
66
78
|
});
|
|
67
79
|
return unquote(pattern.slice(0, start)) + text + unquote(pattern.slice(start + body.length));
|
|
68
80
|
}
|
|
69
|
-
export { coerceSliderRange, formatSliderValue, roundHalfEven, sliderBounds, sliderRatio, sliderValueAt, snapSliderValue };
|
|
81
|
+
export { coerceSliderRange, formatSliderValue, isLogTrack, roundHalfEven, sliderBounds, sliderRatio, sliderValueAt, snapLogValue, snapSliderValue };
|
|
70
82
|
|
|
71
83
|
//# sourceMappingURL=math.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range-slider/math.jsx","sources":["../../src/range-slider/math.ts"],"sourcesContent":["import { formatNumber, type G9Culture } from '@g9tm/lynxcontrols-foundation';\n\n// Value rules of the range slider (MAUI `G9RangeSlider` `EffectiveBounds`, `Snap`, `CoerceValue`, `CoerceRange`) and\n// its `ValueFormat` subset.\n\n/** The bounds every calculation uses: an empty or inverted range counts as `min … min + 1` (never written back). */\nexport function sliderBounds(min: number, max: number): { min: number; max: number } {\n return max > min ? { min, max } : { min, max: min + 1 };\n}\n\nconst tidy = (v: number) => Number(v.toFixed(10)) + 0;\n\n/** .NET `Math.Round(double)`: halves go to the even neighbour (2.5 → 2, 3.5 → 4). */\nexport function roundHalfEven(v: number): number {\n const floor = Math.floor(v);\n const diff = v - floor;\n if (diff > 0.5) return floor + 1;\n if (diff < 0.5) return floor;\n return floor % 2 === 0 ? floor : floor + 1;\n}\n\n/** Snaps to `min + k × step` (MAUI `Snap`, rounded half-to-even like .NET `Math.Round`) and clamps; `step <= 0` is continuous. */\nexport function snapSliderValue(value: number, min: number, max: number, step: number): number {\n const b = sliderBounds(min, max);\n const clamped = Math.min(b.max, Math.max(b.min, value));\n if (!(step > 0)) return tidy(clamped);\n const snapped = b.min + roundHalfEven((clamped - b.min) / step) * step;\n return tidy(Math.min(b.max, Math.max(b.min, snapped)));\n}\n\n/** A range clamped, snapped and ordered (MAUI `CoerceRange`: start > end swaps). */\nexport function coerceSliderRange(\n start: number,\n end: number,\n min: number,\n max: number,\n step: number,\n): readonly [number, number] {\n const a = snapSliderValue(start, min, max, step);\n const b = snapSliderValue(end, min, max, step);\n return a <= b ? [a, b] : [b, a];\n}\n\n/** Value → lynx-ui's normalized `[0, 1]
|
|
1
|
+
{"version":3,"file":"range-slider/math.jsx","sources":["../../src/range-slider/math.ts"],"sourcesContent":["import { formatNumber, type G9Culture } from '@g9tm/lynxcontrols-foundation';\n\n// Value rules of the range slider (MAUI `G9RangeSlider` `EffectiveBounds`, `Snap`, `CoerceValue`, `CoerceRange`) and\n// its `ValueFormat` subset.\n\n/** The bounds every calculation uses: an empty or inverted range counts as `min … min + 1` (never written back). */\nexport function sliderBounds(min: number, max: number): { min: number; max: number } {\n return max > min ? { min, max } : { min, max: min + 1 };\n}\n\nconst tidy = (v: number) => Number(v.toFixed(10)) + 0;\n\n/** .NET `Math.Round(double)`: halves go to the even neighbour (2.5 → 2, 3.5 → 4). */\nexport function roundHalfEven(v: number): number {\n const floor = Math.floor(v);\n const diff = v - floor;\n if (diff > 0.5) return floor + 1;\n if (diff < 0.5) return floor;\n return floor % 2 === 0 ? floor : floor + 1;\n}\n\n/** Snaps to `min + k × step` (MAUI `Snap`, rounded half-to-even like .NET `Math.Round`) and clamps; `step <= 0` is continuous. */\nexport function snapSliderValue(value: number, min: number, max: number, step: number): number {\n const b = sliderBounds(min, max);\n const clamped = Math.min(b.max, Math.max(b.min, value));\n if (!(step > 0)) return tidy(clamped);\n const snapped = b.min + roundHalfEven((clamped - b.min) / step) * step;\n return tidy(Math.min(b.max, Math.max(b.min, snapped)));\n}\n\n/** A range clamped, snapped and ordered (MAUI `CoerceRange`: start > end swaps). */\nexport function coerceSliderRange(\n start: number,\n end: number,\n min: number,\n max: number,\n step: number,\n): readonly [number, number] {\n const a = snapSliderValue(start, min, max, step);\n const b = snapSliderValue(end, min, max, step);\n return a <= b ? [a, b] : [b, a];\n}\n\n/**\n * Whether a track really is logarithmic (MAUI 1.4.9 `Logarithmic`): only with `minimum > 0` (and a real range); otherwise\n * it stays linear, as MAUI's.\n */\nexport function isLogTrack(logarithmic: boolean | undefined, min: number, max: number): boolean {\n return logarithmic === true && min > 0 && max > min;\n}\n\n/** Value → lynx-ui's normalized `[0, 1]`; by ratio on a logarithmic track (equal distances = equal ratios). */\nexport function sliderRatio(value: number, min: number, max: number, logarithmic = false): number {\n const b = sliderBounds(min, max);\n if (isLogTrack(logarithmic, b.min, b.max) && value > 0) {\n return Math.min(1, Math.max(0, (Math.log(value) - Math.log(b.min)) / (Math.log(b.max) - Math.log(b.min))));\n }\n return Math.min(1, Math.max(0, (value - b.min) / (b.max - b.min)));\n}\n\n/** lynx-ui's normalized `[0, 1]` → value; `exp` of the log-span on a logarithmic track. */\nexport function sliderValueAt(ratio: number, min: number, max: number, logarithmic = false): number {\n const b = sliderBounds(min, max);\n const r = Math.min(1, Math.max(0, ratio));\n if (isLogTrack(logarithmic, b.min, b.max)) return Math.exp(Math.log(b.min) + r * (Math.log(b.max) - Math.log(b.min)));\n return b.min + r * (b.max - b.min);\n}\n\n/**\n * The value a logarithmic track snaps to (MAUI 1.4.9): two significant figures — a fixed step would swallow the low end\n * (787 … 56,475 ha: a step of 100 turns every small site into the same value). Clamped to the bounds.\n */\nexport function snapLogValue(value: number, min: number, max: number): number {\n // MAUI's order: snap the raw value, then clamp (a value below the minimum lands ON the minimum, not on its snap).\n const b = sliderBounds(min, max);\n const magnitude = value > 0 ? 10 ** (Math.floor(Math.log10(value)) - 1) : 0;\n const snapped = magnitude > 0 ? roundHalfEven(value / magnitude) * magnitude : value;\n return tidy(Math.min(b.max, Math.max(b.min, snapped)));\n}\n\n/**\n * Formats a value with a .NET custom numeric format subset (MAUI `ValueFormat`, default `\"0\"`): one number pattern of\n * `0`, `#`, `,` (grouping) and `.` (fraction digits: `0` = always, `#` = when needed), with any literal text around it\n * (`\"0°\"`, `\"0.0 kg\"`, `'$'0`); `%` multiplies by 100. Digits follow the culture.\n */\nexport function formatSliderValue(value: number, format: string | null | undefined, culture: G9Culture): string {\n const pattern = format && format.trim() !== '' ? format : '0';\n // Quoted text is literal: mask it before looking for the first numeric run.\n const masked = pattern.replace(/'[^']*'|\"[^\"]*\"/g, (q) => ' '.repeat(q.length));\n const m = /[#0,]+(?:\\.[#0]+)?|\\.[#0]+/.exec(masked);\n const start = m ? m.index : 0;\n const body = m ? m[0] : '';\n const unquote = (s: string) =>\n s.replace(/'([^']*)'|\"([^\"]*)\"/g, (_q, a: string | undefined, b: string | undefined) => a ?? b ?? '');\n const percent = masked.includes('%');\n if (body === '') return unquote(pattern);\n const [intPart = '', frac = ''] = body.split('.');\n const minFraction = (frac.match(/0/g) ?? []).length;\n const maxFraction = frac.length;\n const text = formatNumber(percent ? value * 100 : value, {\n numberingSystem: culture.numberingSystem,\n minimumFractionDigits: minFraction,\n maximumFractionDigits: maxFraction,\n useGrouping: intPart.includes(','),\n });\n return unquote(pattern.slice(0, start)) + text + unquote(pattern.slice(start + body.length));\n}\n"],"names":["sliderBounds","min","max","tidy","v","Number","roundHalfEven","floor","Math","diff","snapSliderValue","value","step","b","clamped","snapped","coerceSliderRange","start","end","a","isLogTrack","logarithmic","sliderRatio","sliderValueAt","ratio","r","snapLogValue","magnitude","formatSliderValue","format","culture","_frac_match","pattern","masked","q","m","body","unquote","s","_q","_ref","percent","intPart","frac","minFraction","maxFraction","text","formatNumber"],"mappings":"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"}
|
|
@@ -79,6 +79,23 @@
|
|
|
79
79
|
font-size: 12px;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
+
.g9-slider__thumb-value {
|
|
83
|
+
justify-content: center;
|
|
84
|
+
align-items: flex-end;
|
|
85
|
+
width: 100px;
|
|
86
|
+
height: 18px;
|
|
87
|
+
margin-left: -50px;
|
|
88
|
+
display: flex;
|
|
89
|
+
position: absolute;
|
|
90
|
+
top: 2px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.g9-slider__thumb-value-text {
|
|
94
|
+
text-align: center;
|
|
95
|
+
color: var(--g9-text-secondary);
|
|
96
|
+
font-size: 12px;
|
|
97
|
+
}
|
|
98
|
+
|
|
82
99
|
.g9-slider__labels {
|
|
83
100
|
flex-direction: row;
|
|
84
101
|
justify-content: space-between;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/range-slider/range-slider.css"],"names":[],"mappings":"AAAA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,kBAAkB;EAClB,mBAAmB;EACnB,aAAa;EACb,kBAAkB;AACpB;;AAKA;EAFE,2BAA2B;EAC3B,iBAAiB;AACnB;;AAKA;EAFE,YAAY;AACd;;AAKA;EAFE,uBAAuB;EACvB,YAAY;EACZ,aAAa;AACf;;AAOA;EAJE,2CAA2C;EAC3C,kBAAkB;EAClB,OAAO;EACP,WAAW;EACX,kBAAkB;AACpB;;AAOA;EAJE,mCAAmC;EACnC,kBAAkB;EAClB,WAAW;EACX,kBAAkB;EAClB,SAAS;EACT,OAAO;EACP,QAAQ;AACV;;AAQA;EALE,WAAW;EACX,YAAY;AACd;;AAQA;EALE,mBAAmB;EACnB,mBAAmB;EACnB,+BAA+B;EAC/B,mCAAmC;EACnC,mBAAmB;EACnB,WAAW;EACX,YAAY;AACd;;AAQA;EALE,iBAAiB;AACnB;;AAQA;EALE,2CAA2C;EAC3C,mBAAmB;EACnB,uBAAuB;EACvB,mBAAmB;EACnB,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,iBAAiB;EACjB,kBAAkB;EAClB,aAAa;EACb,kBAAkB;EAClB,QAAQ;AACV;;AAQA;EALE,mCAAmC;EACnC,eAAe;AACjB;;
|
|
1
|
+
{"version":3,"sources":["webpack://./src/range-slider/range-slider.css"],"names":[],"mappings":"AAAA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,kBAAkB;EAClB,mBAAmB;EACnB,aAAa;EACb,kBAAkB;AACpB;;AAKA;EAFE,2BAA2B;EAC3B,iBAAiB;AACnB;;AAKA;EAFE,YAAY;AACd;;AAKA;EAFE,uBAAuB;EACvB,YAAY;EACZ,aAAa;AACf;;AAOA;EAJE,2CAA2C;EAC3C,kBAAkB;EAClB,OAAO;EACP,WAAW;EACX,kBAAkB;AACpB;;AAOA;EAJE,mCAAmC;EACnC,kBAAkB;EAClB,WAAW;EACX,kBAAkB;EAClB,SAAS;EACT,OAAO;EACP,QAAQ;AACV;;AAQA;EALE,WAAW;EACX,YAAY;AACd;;AAQA;EALE,mBAAmB;EACnB,mBAAmB;EACnB,+BAA+B;EAC/B,mCAAmC;EACnC,mBAAmB;EACnB,WAAW;EACX,YAAY;AACd;;AAQA;EALE,iBAAiB;AACnB;;AAQA;EALE,2CAA2C;EAC3C,mBAAmB;EACnB,uBAAuB;EACvB,mBAAmB;EACnB,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,iBAAiB;EACjB,kBAAkB;EAClB,aAAa;EACb,kBAAkB;EAClB,QAAQ;AACV;;AAQA;EALE,mCAAmC;EACnC,eAAe;AACjB;;AAUA;EAPE,uBAAuB;EACvB,qBAAqB;EACrB,YAAY;EACZ,YAAY;EACZ,kBAAkB;EAClB,aAAa;EACb,kBAAkB;EAClB,QAAQ;AACV;;AAUA;EAPE,kBAAkB;EAClB,+BAA+B;EAC/B,eAAe;AACjB;;AAUA;EAPE,mBAAmB;EACnB,8BAA8B;EAC9B,gBAAgB;EAChB,aAAa;AACf;;AAUA;EAPE,+BAA+B;EAC/B,eAAe;AACjB","sourcesContent":[".g9-slider {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding-left: 16px;\n padding-right: 16px;\n}\n\n/* MAUI G9RangeSliderDrawable with labels: the track's centre at SliderTrackY (52) of the 104 dp canvas — the room above\n is the drag tooltip's — and the end labels SliderLabelGap (18) under the thumb. Centring the column put the track at\n ~34 dp, 18 dp higher than MAUI's. */\n.g9-slider--labels {\n justify-content: flex-start;\n padding-top: 38px;\n}\n\n.g9-slider--disabled {\n opacity: 0.38;\n}\n\n.g9-slider__root {\n height: 28px;\n display: flex;\n justify-content: center;\n}\n\n/* lynx-ui SliderTrack: a 28 px flex row holding this view (the visible track) next to the fill and the thumbs, which\n position against the 28 px row. The track takes the row's width; the fill is the 8 px band at its centre. */\n.g9-slider__track {\n position: relative;\n flex: 1;\n height: 8px;\n border-radius: 4px;\n background-color: var(--g9-surface-variant);\n}\n\n.g9-slider__fill {\n position: absolute;\n top: 10px;\n left: 0px;\n right: 0px;\n height: 8px;\n border-radius: 4px;\n background-color: var(--g9-primary);\n}\n\n/* lynx-ui SliderThumb centres this view on the value (top 50 %, translate -50 %). */\n.g9-slider__thumb {\n width: 28px;\n height: 28px;\n}\n\n.g9-slider__thumb-dot {\n width: 28px;\n height: 28px;\n border-radius: 14px;\n border-width: 2.5px;\n border-style: solid;\n border-color: var(--g9-primary);\n background-color: var(--g9-surface);\n}\n\n.g9-slider__thumb-dot--active {\n border-width: 3px;\n}\n\n.g9-slider__tooltip {\n position: absolute;\n top: 4px;\n height: 26px;\n margin-left: -21px;\n min-width: 42px;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 13px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--g9-inverse-surface);\n}\n\n.g9-slider__tooltip-text {\n font-size: 12px;\n color: var(--g9-inverse-on-surface);\n}\n\n/* MAUI 1.4.9 ShowThumbValues: each value above its thumb, always — a 100 px box centred on the thumb, its text at the\n box's bottom 18 px above the thumb (track 52 − radius 14 − gap 18 − 18 = 2 from the top), 12 px TextSecondary. */\n.g9-slider__thumb-value {\n position: absolute;\n top: 2px;\n width: 100px;\n height: 18px;\n margin-left: -50px;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n}\n\n.g9-slider__thumb-value-text {\n font-size: 12px;\n text-align: center;\n color: var(--g9-text-secondary);\n}\n\n.g9-slider__labels {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin-top: 18px;\n}\n\n.g9-slider__label {\n font-size: 12px;\n color: var(--g9-text-secondary);\n}\n"],"sourceRoot":""}
|