@openfin/core 43.100.104 → 43.100.106

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/out/stub.d.ts CHANGED
@@ -94,6 +94,34 @@ declare type AnalyticsProtocolMap = {
94
94
  [k in AnalyticsOnlyCalls]: VoidCall;
95
95
  };
96
96
 
97
+ /**
98
+ * Represents an anchor configuration consisting of a bounding rectangle
99
+ * and an anchor point describing which part of that rectangle should be
100
+ * used as the reference for positioning the download bubble.
101
+ * @interface
102
+ */
103
+ declare type Anchor = {
104
+ /**
105
+ * The DOM or screen-space rectangle that defines the anchor area.
106
+ */
107
+ bounds: Rectangle;
108
+ /**
109
+ * The location within the rectangle that should act as the anchor
110
+ * (e.g., `topRight`, `bottomLeft`, `center`, etc.).
111
+ * For example, `topRight` means the rectangle's top-right corner is used
112
+ * as the anchoring reference point.
113
+ */
114
+ location: AnchorLocation;
115
+ };
116
+
117
+ /**
118
+ * Defines the point within the rectangle that should be used as the anchor
119
+ * when positioning UI elements relative to another surface.
120
+ *
121
+ * @interface
122
+ */
123
+ declare type AnchorLocation = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'rightTop' | 'leftBottom' | 'rightBottom' | 'topCenter' | 'bottomCenter' | 'leftCenter' | 'rightCenter' | 'none' | 'float';
124
+
97
125
  declare type AnchorType = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
98
126
 
99
127
  declare type AnyStrategy = ChannelStrategy<any>;
@@ -1398,6 +1426,56 @@ declare type ApplicationWindowInfo = {
1398
1426
  uuid: string;
1399
1427
  };
1400
1428
 
1429
+ /**
1430
+ * `appLogLevel` allows the verbosity of app logs that are collected for a Window or View to be controlled when the app logging feature is enabled for its application.
1431
+ *
1432
+ * Please note, `enableAppLogging` must be specified in the application manifest's `platform` or `startup_app` key for this feature to be activated.
1433
+ *
1434
+ * If not specified, and `enableAppLogging` is true for the application, the default level will be 'silent'.
1435
+ *
1436
+ * This setting can also be specified in a Domain Setting Rule, allowing per url exceptions to the default behavior to be made. Please note, when a domain setting is actively
1437
+ * controlling a url's appLogLevel, its options will be ignored.
1438
+ *
1439
+ * @default 'debug'
1440
+ *
1441
+ * @example Controlling App Logs With DefaultViewOptions + Domain Settings
1442
+ *
1443
+ * In this example manifest, we use `defaultViewOptions to set the default verbosity to 'warn'.
1444
+ *
1445
+ * We also use domain settings to suppress logs entirely for an example URL, and to lower verbosity to 'debug' for another.
1446
+ *
1447
+ * ```ts
1448
+ * {
1449
+ * <rest of settings>
1450
+ * "platform": {
1451
+ * <rest of settings>
1452
+ * "enableAppLogging": "true",
1453
+ * "defaultViewOptions": {
1454
+ * "appLogLevel": "warn"
1455
+ * },
1456
+ * "domainSettings": {
1457
+ * "default": { <rest of settings> }
1458
+ * "rules": [
1459
+ * <rest of rules>
1460
+ * {
1461
+ * "match": ["*://*?app-logging-level=silent"],
1462
+ * "options": {
1463
+ * "appLogLevel": "silent"
1464
+ * }
1465
+ * },
1466
+ * {
1467
+ * "match": ["*://*?app-logging-level=debug"],
1468
+ * "options": {
1469
+ * "appLogLevel": "debug"
1470
+ * }
1471
+ * },
1472
+ * ]
1473
+ * }
1474
+ * }
1475
+ * }
1476
+ */
1477
+ declare type AppLogLevel = 'silent' | 'debug' | 'info' | 'warn' | 'error';
1478
+
1401
1479
  /**
1402
1480
  * @interface
1403
1481
  */
@@ -3926,6 +4004,10 @@ declare type ConstWindowOptions = {
3926
4004
  * Controls whether frameless window should have rounded corners. Default is false for Windows and true for MacOS. Setting this property to false will prevent the window from being fullscreenable on macOS. On Windows versions older than Windows 11 Build 22000 this property has no effect, and frameless windows will not have rounded corners.
3927
4005
  */
3928
4006
  roundedCorners: boolean;
4007
+ /**
4008
+ * Configuration for download bubble UI.
4009
+ */
4010
+ downloadBubble?: DownloadBubbleOptions;
3929
4011
  };
3930
4012
 
3931
4013
  /**
@@ -4678,6 +4760,50 @@ declare type DomainSettingsRule = {
4678
4760
  matchOptions?: RuleMatchOptions;
4679
4761
  };
4680
4762
 
4763
+ /**
4764
+ * Configuration options for enabling and positioning the download bubble UI.
4765
+ * @interface
4766
+ */
4767
+ declare type DownloadBubbleOptions = {
4768
+ /**
4769
+ * Whether the download bubble feature is enabled.
4770
+ */
4771
+ enabled: boolean;
4772
+ /**
4773
+ * Anchor configuration describing where the download bubble should attach.
4774
+ */
4775
+ anchor: Anchor;
4776
+ };
4777
+
4778
+ /**
4779
+ * Generated when the download button icon needs to be updated. Only raised if the download bubble feature is enabled.
4780
+ *
4781
+ * @interface
4782
+ */
4783
+ declare type DownloadButtonIconUpdatedEvent = BaseEvent_5 & {
4784
+ type: 'download-button-icon-updated';
4785
+ disabled: boolean;
4786
+ active: boolean;
4787
+ touchMode: boolean;
4788
+ progressIndicatorState: 'idle' | 'scanning' | 'downloading' | 'dormant';
4789
+ progressDownloadCount: number;
4790
+ progressPercentage: number;
4791
+ buttonTooltip: string;
4792
+ };
4793
+
4794
+ /**
4795
+ * Generated when the visibility of the window's download button changes. Only raised if the download bubble feature is enabled.
4796
+ *
4797
+ * @interface
4798
+ */
4799
+ declare type DownloadButtonVisibilityChangedEvent = BaseEvent_5 & {
4800
+ type: 'download-button-visibility-changed';
4801
+ /**
4802
+ * True if the download button should be displayed, false if it should be hidden.
4803
+ */
4804
+ visible: boolean;
4805
+ };
4806
+
4681
4807
  /**
4682
4808
  * Metadata returned from a preload script download request.
4683
4809
  *
@@ -4737,6 +4863,7 @@ declare type DownloadRule = {
4737
4863
  *
4738
4864
  * @remarks This will control the styling for the download shelf regardless of whether its display was
4739
4865
  * triggered by the window itself, or a view targeting the window.
4866
+ * @deprecated Use the DownloadBubble API instead.
4740
4867
  */
4741
4868
  declare type DownloadShelfOptions = {
4742
4869
  /**
@@ -4772,6 +4899,7 @@ declare type DownloadShelfOptions = {
4772
4899
  * Generated when the visibility of the window's download shelf changes.
4773
4900
  *
4774
4901
  * @interface
4902
+ * @deprecated use DownloadBubble API instead
4775
4903
  */
4776
4904
  declare type DownloadShelfVisibilityChangedEvent = BaseEvent_5 & {
4777
4905
  type: 'download-shelf-visibility-changed';
@@ -5043,7 +5171,7 @@ declare type Event_10 = ApplicationEvents.Event | ApiReadyEvent | SnapshotApplie
5043
5171
  * under the {@link OpenFin.SystemEvents} namespace (payloads inherited from propagated events are defined in the namespace
5044
5172
  * from which they propagate).
5045
5173
  */
5046
- declare type Event_11 = ExcludeRequested<WindowEvents.PropagatedEvent<'system'>> | ExcludeRequested<ViewEvents.PropagatedEvent<'system'>> | ExcludeRequested<ApplicationEvents.PropagatedEvent<'system'>> | ApplicationCreatedEvent | DesktopIconClickedEvent | IdleStateChangedEvent | MonitorInfoChangedEvent | SessionChangedEvent | AppVersionEventWithId | SystemShutdownEvent | ExtensionsEnabledEvent | ExtensionsDisabledEvent | ExtensionsExcludedEvent | ExtensionsInstalledEvent | ExtensionInstalledEvent | ExtensionsInstallFailedEvent | ExtensionInstallFailedEvent | ExtensionsInitializationFailedEvent;
5174
+ declare type Event_11 = ExcludeRequested<WindowEvents.PropagatedEvent<'system'>> | ExcludeRequested<ViewEvents.PropagatedEvent<'system'>> | ExcludeRequested<ApplicationEvents.PropagatedEvent<'system'>> | ApplicationCreatedEvent | DesktopIconClickedEvent | IdleStateChangedEvent | MonitorInfoChangedEvent | SessionChangedEvent | AppVersionEventWithId | SystemShutdownEvent | ExtensionsEnabledEvent | ExtensionsDisabledEvent | ExtensionsExcludedEvent | ExtensionsInstalledEvent | ExtensionInstalledEvent | ExtensionsInstallFailedEvent | ExtensionInstallFailedEvent | ExtensionsInitializationFailedEvent | ThemePaletteChangedEvent | NativeThemeUpdatedEvent;
5047
5175
 
5048
5176
  /**
5049
5177
  * [Union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) containing every possible event that can be emitted by the HTMLElement Layout container.
@@ -8724,7 +8852,7 @@ declare abstract class LayoutNode {
8724
8852
  * Known Issue: If the number of views to add overflows the tab-container, the added views will be set as active
8725
8853
  * during each render, and then placed at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
8726
8854
  * This means the views you pass to createAdjacentStack() may not render in the order given by the array.
8727
- * Until fixed, this problem can be avoided only if your window is wide enough to fit creating all the views in the tabstack.
8855
+ * Note: This issue does not occur when using `tabOverflowBehavior: 'scroll'` in the layout configuration.
8728
8856
  *
8729
8857
  * @param views The views that will populate the new TabStack.
8730
8858
  * @param options Additional options that control new TabStack creation.
@@ -8899,6 +9027,42 @@ declare type LayoutOptions = {
8899
9027
  * @defaultValue false
8900
9028
  */
8901
9029
  disableTabOverflowDropdown?: boolean;
9030
+ /**
9031
+ * When set to 'scroll', enables horizontal scrolling of tabs when they overflow the stack width.
9032
+ * When set to 'dropdown', the default behavior occurs, in which excess tabs appear in a menu.
9033
+ *
9034
+ * Setting this to `scroll` might break styles written for the default dropdown behavior, as it significantly changes the DOM structure and CSS of tabs.
9035
+ *
9036
+ * The DOM structure is modified in this way:
9037
+ * - `lm_tabs` is wrapped in a div with class `lm_scroll_shadow`. This div is revealed by a mask on the tabs when they are overflowing.
9038
+ * - the `.newTabButton` (if enabled) is a direct child of `.lm_header`
9039
+ *
9040
+ * **The following CSS variables are available to customize tab appearance:**
9041
+ *
9042
+ * - `--layout-tab-width`: The default (max) width of the tabs. Using this enables using `lm_tab` as a queryable CSS container (must be an absolute value to use container queries). Default: `fit-content`
9043
+ * - `--layout-tab-min-width`: The minimum width of the tabs before they start overflowing. Set this to enable tab shrinking. Defaults to the same value as `--layout-tab-width` (no shrinking).
9044
+ * - `--layout-tab-overflow-fade-size`: The width of the scroll shadows when tabs are overflowing. Default: `20px`
9045
+ * - `--layout-tab-overflow-shadow-color`: The color of the scroll shadows when tabs are overflowing. Enabling a contrasting shadow color may require setting the background color on `.lm_tabs` if it was not previously set via `--tabs-background-color`. Default is transparent so overlowing tabs fade into the background.
9046
+ *
9047
+ * **CSS Variables for advanced customization (dynamically updated and set on `lm_tabs`):**
9048
+ *
9049
+ * - `--layout-tab-overflow-fade-left`: The strength of the left fade when tabs are overflowing. This is a number between 0 and 1 where 0 means no fade and 1 means a full fade.
9050
+ * - `--layout-tab-overflow-fade-right`: The strength of the right fade when tabs are overflowing. This is a number between 0 and 1 where 0 means no fade and 1 means a full fade.
9051
+ * - `--layout-tabs-overflowing`: A [CSS space toggle](https://css-tricks.com/the-css-custom-property-toggle-trick/) that is empty when tabs are overflowing and `initial` otherwise. If you are targeting only Chrome 137 or greater, you might want to use the `if()` function with left/right fade instead of this toggle.
9052
+ *
9053
+ * @example
9054
+ * ```css
9055
+ * .lm_tabs {
9056
+ * --layout-tab-width: 200px;
9057
+ * --layout-tab-min-width: 100px;
9058
+ * --layout-tab-overflow-fade-size: 20px;
9059
+ * --layout-tab-overflow-shadow-color: rgba(0, 0, 0, 0.3);
9060
+ * }
9061
+ * ```
9062
+ *
9063
+ * @defaultValue 'dropdown'
9064
+ */
9065
+ tabOverflowBehavior?: 'dropdown' | 'scroll';
8902
9066
  };
8903
9067
  /**
8904
9068
  * Content of the layout. There can only be one top-level LayoutItem in the content array.
@@ -9006,6 +9170,12 @@ declare type LogInfo = {
9006
9170
  */
9007
9171
  declare type LogLevel = 'verbose' | 'info' | 'warning' | 'error' | 'fatal';
9008
9172
 
9173
+ declare type LogPath = 'debug.log' | 'app.log';
9174
+
9175
+ declare type LogTarget = {
9176
+ type: LogPath;
9177
+ };
9178
+
9009
9179
  /**
9010
9180
  * Log types
9011
9181
  *
@@ -9151,6 +9321,7 @@ declare type Manifest = {
9151
9321
  policies?: {
9152
9322
  CloudAPAuthEnabled?: 'enabled' | 'disabled';
9153
9323
  };
9324
+ themePalette?: Array<ThemePalette>;
9154
9325
  };
9155
9326
  services?: string[];
9156
9327
  shortcut?: {
@@ -9528,6 +9699,10 @@ declare type MutableViewOptions = {
9528
9699
  * {@inheritDoc ChromiumPolicies}
9529
9700
  */
9530
9701
  chromiumPolicies: ChromiumPolicies;
9702
+ /**
9703
+ * Specifies the AppLogLevel for the specified View. See {@link AppLogLevel} for more information.
9704
+ */
9705
+ appLogLevel?: AppLogLevel;
9531
9706
  };
9532
9707
 
9533
9708
  /**
@@ -9810,6 +9985,10 @@ declare type MutableWindowOptions = {
9810
9985
  * {@inheritDoc ChromiumPolicies}
9811
9986
  */
9812
9987
  chromiumPolicies: ChromiumPolicies;
9988
+ /**
9989
+ * Specifies the AppLogLevel for the Window. See {@link AppLogLevel} for more information.
9990
+ */
9991
+ appLogLevel?: AppLogLevel;
9813
9992
  };
9814
9993
 
9815
9994
  declare type NackHandler = (payloadOrMessage: RuntimeErrorPayload | string) => void;
@@ -9822,6 +10001,78 @@ declare type NamedEvent = IdentityEvent & {
9822
10001
  name: string;
9823
10002
  };
9824
10003
 
10004
+ /**
10005
+ * @interface
10006
+ *
10007
+ * Represents the native theme of the operating system.
10008
+ * This is used to determine how the application should render its UI based on the system's theme settings.
10009
+ * Defer to CSS properties whenever possible.
10010
+ *
10011
+ * Re-exported from Electron's `NativeTheme` type.
10012
+ */
10013
+ declare type NativeTheme = {
10014
+ /**
10015
+ * A `boolean` indicating whether Chromium is in forced colors mode, controlled by
10016
+ * system accessibility settings. Currently, Windows high contrast is the only
10017
+ * system setting that triggers forced colors mode.
10018
+ *
10019
+ * @platform win32
10020
+ */
10021
+ inForcedColorsMode: boolean;
10022
+ /**
10023
+ * A `boolean` that indicates the whether the user has chosen via system
10024
+ * accessibility settings to reduce transparency at the OS level.
10025
+ *
10026
+ */
10027
+ prefersReducedTransparency: boolean;
10028
+ /**
10029
+ * A `boolean` for if the OS / Chromium currently has a dark mode enabled or is
10030
+ * being instructed to show a dark-style UI. If you want to modify this value you
10031
+ * should use `themeSource` below.
10032
+ *
10033
+ */
10034
+ shouldUseDarkColors: boolean;
10035
+ /**
10036
+ * A `boolean` property indicating whether or not the system theme has been set to
10037
+ * dark or light.
10038
+ *
10039
+ * On Windows this property distinguishes between system and app light/dark theme,
10040
+ * returning `true` if the system theme is set to dark theme and `false` otherwise.
10041
+ * On macOS the return value will be the same as `nativeTheme.shouldUseDarkColors`.
10042
+ *
10043
+ * @platform darwin,win32
10044
+ */
10045
+ shouldUseDarkColorsForSystemIntegratedUI: boolean;
10046
+ /**
10047
+ * A `boolean` for if the OS / Chromium currently has high-contrast mode enabled or
10048
+ * is being instructed to show a high-contrast UI.
10049
+ *
10050
+ * @platform darwin,win32
10051
+ */
10052
+ shouldUseHighContrastColors: boolean;
10053
+ /**
10054
+ * A `boolean` for if the OS / Chromium currently has an inverted color scheme or
10055
+ * is being instructed to use an inverted color scheme.
10056
+ *
10057
+ * @platform darwin,win32
10058
+ */
10059
+ shouldUseInvertedColorScheme: boolean;
10060
+ /**
10061
+ * A `string` property that can be `system`, `light` or `dark`. It is used (via `setTheme) to
10062
+ * override and supersede the value that Chromium has chosen to use internally.
10063
+ */
10064
+ themeSource: 'system' | 'light' | 'dark';
10065
+ };
10066
+
10067
+ /**
10068
+ * Generated when the operating system's theme preferences change.
10069
+ * Occurs when dark mode, high contrast mode, or inverted color scheme settings are modified.
10070
+ */
10071
+ declare type NativeThemeUpdatedEvent = BaseEvent_9 & {
10072
+ type: 'native-theme-updated';
10073
+ theme: OpenFin_2.NativeTheme;
10074
+ };
10075
+
9825
10076
  /**
9826
10077
  * @interface
9827
10078
  */
@@ -10120,6 +10371,9 @@ declare namespace OpenFin_2 {
10120
10371
  CustomProtocolOptions,
10121
10372
  InteropBrokerOptions,
10122
10373
  ContextGroupInfo,
10374
+ AnchorLocation,
10375
+ Anchor,
10376
+ DownloadBubbleOptions,
10123
10377
  DisplayMetadata,
10124
10378
  LegacyWinOptionsInAppOptions,
10125
10379
  Snapshot,
@@ -10146,6 +10400,9 @@ declare namespace OpenFin_2 {
10146
10400
  InheritableOptions,
10147
10401
  PolicyOptions,
10148
10402
  ChromiumPolicies,
10403
+ AppLogLevel,
10404
+ LogPath,
10405
+ LogTarget,
10149
10406
  MutableWindowOptions,
10150
10407
  WorkspacePlatformOptions,
10151
10408
  WebRequestHeader,
@@ -10223,9 +10480,14 @@ declare namespace OpenFin_2 {
10223
10480
  LogUploaderUIOptions,
10224
10481
  LogTypes,
10225
10482
  LogUploadOptions,
10483
+ ThemeColorsMap,
10484
+ ThemeColorId,
10485
+ ThemePalette,
10226
10486
  Manifest,
10227
10487
  LayoutContent,
10228
10488
  LayoutItemConfig,
10489
+ ThemePreferences,
10490
+ NativeTheme,
10229
10491
  LayoutRow,
10230
10492
  LayoutColumn,
10231
10493
  LayoutComponent,
@@ -10445,6 +10707,7 @@ declare namespace OpenFin_2 {
10445
10707
  ChannelProviderDisconnectionListener,
10446
10708
  RoutingInfo,
10447
10709
  DownloadShelfOptions,
10710
+ SnapZoneOptions,
10448
10711
  ViewShowAtOptions,
10449
10712
  WebNotificationProperties,
10450
10713
  WebNotificationInfo,
@@ -10721,6 +10984,11 @@ declare type PerDomainSettings = {
10721
10984
  */
10722
10985
  drag?: 'allow' | 'block';
10723
10986
  };
10987
+ /**
10988
+ * Allows the app log level of any matching content to be overriden.
10989
+ * See also {@link AppLogLevel} for more information.
10990
+ */
10991
+ appLogLevel?: AppLogLevel;
10724
10992
  };
10725
10993
 
10726
10994
  /**
@@ -12441,7 +12709,7 @@ declare type PositioningOptions = {
12441
12709
  /**
12442
12710
  * Context menu item with an implementation provided by OpenFin.
12443
12711
  */
12444
- declare type PrebuiltContextMenuItem = 'separator' | 'undo' | 'redo' | 'cut' | 'copy' | 'copyImage' | 'paste' | 'selectAll' | 'spellCheck' | 'inspect' | 'reload' | 'navigateForward' | 'navigateBack' | 'print';
12712
+ declare type PrebuiltContextMenuItem = 'separator' | 'undo' | 'redo' | 'cut' | 'copy' | 'copyImage' | 'paste' | 'selectAll' | 'spellCheck' | 'inspect' | 'reload' | 'navigateForward' | 'navigateBack' | 'print' | 'snapToTop' | 'snapToBottom';
12445
12713
 
12446
12714
  /**
12447
12715
  * A script that is run before page load.
@@ -13139,6 +13407,12 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13139
13407
  'create-window': VoidCall;
13140
13408
  'get-current-window': VoidCall;
13141
13409
  'get-current-window-sync': VoidCall;
13410
+ 'show-download-bubble': IdentityCall<{
13411
+ anchor?: OpenFin_2.Anchor;
13412
+ }, void>;
13413
+ 'update-download-bubble-anchor': IdentityCall<{
13414
+ anchor: OpenFin_2.Anchor;
13415
+ }, void>;
13142
13416
  'get-external-application-info': ApiCall<OpenFin_2.ApplicationIdentity, OpenFin_2.ExternalApplicationInfo>;
13143
13417
  'external-application-wrap': VoidCall;
13144
13418
  'external-application-wrap-sync': VoidCall;
@@ -13235,6 +13509,10 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13235
13509
  request: any;
13236
13510
  response: any;
13237
13511
  };
13512
+ 'set-theme-preferences': ApiCall<{
13513
+ preferences: OpenFin_2.ThemePreferences;
13514
+ }, OpenFin_2.NativeTheme>;
13515
+ 'get-theme-preferences': GetterCall<OpenFin_2.NativeTheme>;
13238
13516
  'get-version': GetterCall<string>;
13239
13517
  'clear-cache': ApiCall<OpenFin_2.ClearCacheOption, void>;
13240
13518
  'delete-cache-request': VoidCall;
@@ -13322,6 +13600,9 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13322
13600
  'write-to-log': ApiCall<{
13323
13601
  level: string;
13324
13602
  message: string;
13603
+ target?: {
13604
+ type?: 'app.log' | 'debug.log';
13605
+ };
13325
13606
  }, void>;
13326
13607
  'open-url-with-browser': ApiCall<{
13327
13608
  url: string;
@@ -13485,6 +13766,15 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13485
13766
  request: void;
13486
13767
  response: OpenFin_2.ExtensionInfo[];
13487
13768
  };
13769
+ 'set-theme-palette': ApiCall<{
13770
+ themePalette: Array<OpenFin_2.ThemePalette>;
13771
+ }, void> & {
13772
+ themePalette: Array<OpenFin_2.ThemePalette>;
13773
+ };
13774
+ 'get-theme-palette': ApiCall<void, Array<OpenFin_2.ThemePalette>> & {
13775
+ request: void;
13776
+ response: Array<OpenFin_2.ThemePalette>;
13777
+ };
13488
13778
  'fdc3-add-context-listener': VoidCall;
13489
13779
  'fdc3-add-intent-listener': VoidCall;
13490
13780
  'fdc3-raise-intent': VoidCall;
@@ -14560,6 +14850,15 @@ declare type Size = TransitionBase & {
14560
14850
  height: number;
14561
14851
  };
14562
14852
 
14853
+ /**
14854
+ * Generated when a window is snapped to a screen edge.
14855
+ * @interface
14856
+ */
14857
+ declare type SnappedEvent = BoundsEvent & {
14858
+ type: 'snapped';
14859
+ snapLocation: 'top' | 'bottom';
14860
+ };
14861
+
14563
14862
  /**
14564
14863
  * @interface
14565
14864
  */
@@ -14707,6 +15006,52 @@ declare class SnapshotSourceModule extends Base {
14707
15006
  wrap(identity: OpenFin_2.ApplicationIdentity): Promise<SnapshotSource>;
14708
15007
  }
14709
15008
 
15009
+ /**
15010
+ * Generated when a window enters or exits a snap zone during drag.
15011
+ * This event fires whenever the snap zone state changes (entry or exit).
15012
+ * @interface
15013
+ */
15014
+ declare type SnapZoneChangedEvent = BaseEvent_5 & {
15015
+ type: 'snap-zone-changed';
15016
+ /**
15017
+ * Array of locations that the window is currently in snap zones for.
15018
+ * Empty array indicates the window is not in any snap zone.
15019
+ * Can contain multiple locations if the window is in multiple zones simultaneously.
15020
+ */
15021
+ locations: Array<'top' | 'bottom'>;
15022
+ };
15023
+
15024
+ /**
15025
+ * @interface
15026
+ *
15027
+ * Configures snap zone behavior for a window. When enabled, the window will automatically snap to screen edges
15028
+ * when dragged near them during user drag interactions.
15029
+ */
15030
+ declare type SnapZoneOptions = {
15031
+ /**
15032
+ * Whether snap zone functionality is enabled for this window.
15033
+ *
15034
+ * @default false
15035
+ */
15036
+ enabled: boolean;
15037
+ /**
15038
+ * The distance in pixels from the screen edge that triggers the snap zone.
15039
+ * When the window is dragged within this threshold of the top or bottom edge,
15040
+ * it will be considered in a snap zone.
15041
+ *
15042
+ * @default 50
15043
+ */
15044
+ threshold?: number;
15045
+ /**
15046
+ * Ordered array of edge preferences when the window is in multiple snap zones simultaneously.
15047
+ * The first edge in the array that the window is in will be used for snapping.
15048
+ * If not provided, defaults to ['top', 'bottom'] (preferring top over bottom).
15049
+ *
15050
+ * @default ['top', 'bottom']
15051
+ */
15052
+ locationPreference?: Array<'top' | 'bottom'>;
15053
+ };
15054
+
14710
15055
  /**
14711
15056
  * Generated when an application has started.
14712
15057
  * @interface
@@ -15487,13 +15832,14 @@ declare class System extends EmitterBase<OpenFin_2.SystemEvent> {
15487
15832
  * Writes the passed message into both the log file and the console.
15488
15833
  * @param level The log level for the entry. Can be either "info", "warning" or "error"
15489
15834
  * @param message The log message text
15835
+ * @param target The log stream this message will be sent to, defaults to 'debug.log'. Specify 'app.log' to log to the app log of the sending View / Window. Note, when using `app.log`, it will always log to app.log irrespective of the `enableAppLogging` setting for the sender. This is particularly useful if you wish to log certain things from a View / Window but ignore generic console logs.
15490
15836
  *
15491
15837
  * @example
15492
15838
  * ```js
15493
- * fin.System.log("info", "An example log message").then(() => console.log('Log info message')).catch(err => console.log(err));
15839
+ * fin.System.log("info", "An example log message", { type: 'debug.log' }).then(() => console.log('Log info message')).catch(err => console.log(err));
15494
15840
  * ```
15495
15841
  */
15496
- log(level: string, message: string): Promise<void>;
15842
+ log(level: string, message: string, target?: OpenFin_2.LogTarget): Promise<void>;
15497
15843
  /**
15498
15844
  * Opens the passed URL in the default web browser.
15499
15845
  *
@@ -16232,11 +16578,123 @@ declare class System extends EmitterBase<OpenFin_2.SystemEvent> {
16232
16578
  * Not indended for general use, will be used by the `@openfin/workspace-platform` package.
16233
16579
  */
16234
16580
  serveAsset(options: OpenFin_2.ServeAssetOptions): Promise<OpenFin_2.ServedAssetInfo>;
16581
+ /**
16582
+ * Get's the native theme preferences for the current runtime.
16583
+ * Prefer css media-queries wherever possible, but this can be useful to see if the system setting has been overridden.
16584
+ * See @link OpenFin.NativeTheme for more information.
16585
+ * @example Theme selector menu
16586
+ * ```ts
16587
+ async function handleThemeMenu(e: React.MouseEvent<HTMLDivElement>) {
16588
+ const currentTheme = await fin.System.getThemePreferences();
16589
+ const result = await (fin.me as OpenFin.Window).showPopupMenu({
16590
+ x: e.clientX,
16591
+ y: e.clientY,
16592
+ template: [
16593
+ {
16594
+ label: 'Light',
16595
+ type: 'checkbox',
16596
+ checked: currentTheme.themeSource === 'light',
16597
+ data: { themeSource: 'light' } as const
16598
+ },
16599
+ {
16600
+ label: 'Dark',
16601
+ type: 'checkbox',
16602
+ checked: currentTheme.themeSource === 'dark',
16603
+ data: { themeSource: 'dark' } as const
16604
+ },
16605
+ {
16606
+ label: 'System',
16607
+ type: 'checkbox',
16608
+ checked: currentTheme.themeSource === 'system',
16609
+ data: { themeSource: 'system' } as const
16610
+ }
16611
+ ]
16612
+ });
16613
+ if (result.result === 'clicked') {
16614
+ await fin.System.setThemePreferences(result.data);
16615
+ }
16616
+ }
16617
+ ```
16618
+ */
16619
+ getThemePreferences(): Promise<OpenFin_2.NativeTheme>;
16620
+ /**
16621
+ * Sets the native theme preferences for the current runtime.
16622
+ * Can be used to force runtime-wide light or dark mode.
16623
+ * @important Due to this impacting all applications on a runtime, this method is only usable if a security realm has been set.
16624
+ * @example Theme selector menu
16625
+ * ```ts
16626
+ async function handleThemeMenu(e: React.MouseEvent<HTMLDivElement>) {
16627
+ const currentTheme = await fin.System.getThemePreferences();
16628
+ const result = await (fin.me as OpenFin.Window).showPopupMenu({
16629
+ x: e.clientX,
16630
+ y: e.clientY,
16631
+ template: [
16632
+ {
16633
+ label: 'Light',
16634
+ type: 'checkbox',
16635
+ checked: currentTheme.themeSource === 'light',
16636
+ data: { themeSource: 'light' } as const
16637
+ },
16638
+ {
16639
+ label: 'Dark',
16640
+ type: 'checkbox',
16641
+ checked: currentTheme.themeSource === 'dark',
16642
+ data: { themeSource: 'dark' } as const
16643
+ },
16644
+ {
16645
+ label: 'System',
16646
+ type: 'checkbox',
16647
+ checked: currentTheme.themeSource === 'system',
16648
+ data: { themeSource: 'system' } as const
16649
+ }
16650
+ ]
16651
+ });
16652
+ if (result.result === 'clicked') {
16653
+ await fin.System.setThemePreferences(result.data);
16654
+ }
16655
+ }
16656
+ ```
16657
+ */
16658
+ setThemePreferences(preferences: OpenFin_2.ThemePreferences): Promise<OpenFin_2.ThemePreferences>;
16235
16659
  /**
16236
16660
  * Launches the Log Uploader. Full documentation can be found [here](https://resources.here.io/docs/core/develop/debug/log-uploader/).
16237
16661
  * @experimental
16238
16662
  */
16239
16663
  launchLogUploader(options: OpenFin_2.LogUploaderOptions): Promise<void>;
16664
+ /**
16665
+ * Overrides original Chromium theme color providers matching key (currently except high contrast ones). Only colors passed in the map will be overridden.
16666
+ * @param overrides - Array of ColorProviderOverrides objects
16667
+ * @example
16668
+ * ```ts
16669
+ * await fin.System.setThemePalette([
16670
+ * {
16671
+ * colorProviderKey: { colorMode: 'light' },
16672
+ * colorsMap: {
16673
+ * kColorLabelForeground: 4278190080,
16674
+ * kColorBubbleBackground: 4293980400
16675
+ * }
16676
+ * },
16677
+ * {
16678
+ * colorProviderKey: { colorMode: 'dark' },
16679
+ * colorsMap: {
16680
+ * kColorLabelForeground: 4293980400,
16681
+ * kColorBubbleBackground: 4293980400
16682
+ * }
16683
+ * }
16684
+ * ]);
16685
+ * ```
16686
+ */
16687
+ setThemePalette(themePalette: Array<OpenFin_2.ThemePalette>): Promise<void>;
16688
+ /**
16689
+ * Retrieves currently used color overrides
16690
+ * @returns Array of ColorProviderOverrides objects
16691
+ * @example
16692
+ * ```ts
16693
+ * const themePalette = await fin.System.getThemePalette();
16694
+ * console.log(themePalette);
16695
+ * ```
16696
+ */
16697
+ getThemePalette(): Promise<Array<OpenFin_2.ThemePalette>>;
16240
16698
  }
16241
16699
 
16242
16700
  /**
@@ -16275,6 +16733,8 @@ declare namespace SystemEvents {
16275
16733
  ExtensionsInstallFailedEvent,
16276
16734
  ExtensionInstallFailedEvent,
16277
16735
  ExtensionsInitializationFailedEvent,
16736
+ ThemePaletteChangedEvent,
16737
+ NativeThemeUpdatedEvent,
16278
16738
  Event_11 as Event,
16279
16739
  SystemEvent,
16280
16740
  EventType_8 as EventType,
@@ -16405,6 +16865,7 @@ declare class TabStack extends LayoutNode {
16405
16865
  * and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
16406
16866
  * If that happens and then getViews() is called, it will return the identities in a different order than
16407
16867
  * than the currently rendered tab order.
16868
+ * Note: This issue does not occur when using `tabOverflowBehavior: 'scroll'` in the layout configuration.
16408
16869
  *
16409
16870
  *
16410
16871
  * @throws If the {@link TabStack} has been destroyed.
@@ -16429,6 +16890,7 @@ declare class TabStack extends LayoutNode {
16429
16890
  *
16430
16891
  * @remarks Known Issue: If adding a view overflows the tab-container, the added view will be set as active
16431
16892
  * and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
16893
+ * Note: This issue does not occur when using `tabOverflowBehavior: 'scroll'` in the layout configuration.
16432
16894
  *
16433
16895
  * @param view The identity of an existing view to add, or options to create a view.
16434
16896
  * @param options Optional view options: index number used to insert the view into the stack at that index. Defaults to 0 (front of the stack)
@@ -16550,6 +17012,109 @@ declare type TerminateExternalRequestType = {
16550
17012
  killTree: boolean;
16551
17013
  };
16552
17014
 
17015
+ /**
17016
+ * String literal type of all supported theme color IDs.
17017
+ * Useful wherever you need to refer to a color slot by name.
17018
+ * @interface
17019
+ */
17020
+ declare type ThemeColorId = keyof ThemeColorsMap;
17021
+
17022
+ /**
17023
+ * All supported color slots for the Download Bubble and related UI.
17024
+ * @interface
17025
+ */
17026
+ declare interface ThemeColorsMap {
17027
+ /**
17028
+ * Enterprise/Window/Background – bubble header and footer background.
17029
+ */
17030
+ kColorBubbleBackground?: number;
17031
+ /**
17032
+ * Windows only – Enterprise/Window/Border.
17033
+ */
17034
+ kColorBubbleBorder?: number;
17035
+ /**
17036
+ * Windows only – Enterprise/Window/Border (large shadow).
17037
+ */
17038
+ kColorBubbleBorderShadowLarge?: number;
17039
+ /**
17040
+ * Windows only – Enterprise/Window/Border (small shadow).
17041
+ */
17042
+ kColorBubbleBorderShadowSmall?: number;
17043
+ /**
17044
+ * Enterprise/Window/Background – downloaded item row background.
17045
+ */
17046
+ kColorDialogBackground?: number;
17047
+ /**
17048
+ * Enterprise/Search Result/Background/Hover – download item row hover.
17049
+ */
17050
+ kColorDownloadBubbleRowHover?: number;
17051
+ /**
17052
+ * Enterprise/Window/Icon – “Show all downloads” icon color.
17053
+ */
17054
+ kColorDownloadBubbleShowAllDownloadsIcon?: number;
17055
+ /**
17056
+ * Enterprise/Search Result/Background/Hover – full download history
17057
+ * button (full row) hover background.
17058
+ */
17059
+ kColorHoverButtonBackgroundHovered?: number;
17060
+ /**
17061
+ * Shared/Icon Button/Subtle/Icon/Default – SVG icon color
17062
+ * (except full download history button).
17063
+ */
17064
+ kColorIcon?: number;
17065
+ /**
17066
+ * Enterprise/Window/Text/Base – main label text color.
17067
+ * May be post-processed to increase readability on kColorDialogBackground
17068
+ * (can be disabled via transparent kColorLabelBackground).
17069
+ */
17070
+ kColorLabelForeground?: number;
17071
+ /**
17072
+ * Label background used for readability adjustment.
17073
+ * Set to transparent (0) to disable Chromium’s readability alignment logic.
17074
+ */
17075
+ kColorLabelBackground?: number;
17076
+ /**
17077
+ * Enterprise/Window/Text/Soft – secondary text color.
17078
+ * May be post-processed to increase readability on kColorDialogBackground
17079
+ * (can be disabled via transparent kColorLabelBackground).
17080
+ */
17081
+ kColorSecondaryForeground?: number;
17082
+ }
17083
+
17084
+ /**
17085
+ * Defines a set of color overrides for Chromium UI surfaces based on a theme
17086
+ * provider (e.g., light or dark mode).
17087
+ * @interface
17088
+ */
17089
+ declare type ThemePalette = {
17090
+ /**
17091
+ * Identifies the color provider mode that the palette applies to.
17092
+ */
17093
+ colorProviderKey: {
17094
+ /**
17095
+ * The UI color mode that this palette is intended to style.
17096
+ */
17097
+ colorMode: 'light' | 'dark';
17098
+ };
17099
+ /**
17100
+ * A mapping of known Chromium color IDs to ARGB values (0xAARRGGBB).
17101
+ */
17102
+ colorsMap: ThemeColorsMap;
17103
+ };
17104
+
17105
+ /**
17106
+ * An event that fires when the system theme palette is changed.
17107
+ */
17108
+ declare type ThemePaletteChangedEvent = BaseEvent_9 & {
17109
+ type: 'theme-palette-changed';
17110
+ themePalette: OpenFin_2.ThemePalette;
17111
+ };
17112
+
17113
+ /**
17114
+ * Settable options for the native theme of the operating system.
17115
+ */
17116
+ declare type ThemePreferences = Pick<NativeTheme, 'themeSource'>;
17117
+
16553
17118
  /**
16554
17119
  * @interface
16555
17120
  */
@@ -19777,6 +20342,62 @@ declare class _Window extends WebContents<OpenFin_2.WindowEvent> {
19777
20342
  * To print the views embedded in their page context, set `content` to `screenshot`.
19778
20343
  */
19779
20344
  print(options?: OpenFin_2.WindowPrintOptions): Promise<void>;
20345
+ /**
20346
+ * Displays the download bubble UI. If an anchor is provided, the bubble
20347
+ * will be positioned according to the specified rectangle and anchor point.
20348
+ *
20349
+ * @param {OpenFin.Anchor} options
20350
+ * Anchor configuration used to position the download bubble. This includes
20351
+ * the bounding rectangle and the anchor location within that rectangle.
20352
+ *
20353
+ * @returns {Promise<void>}
20354
+ * A promise that resolves once the request to show the download bubble
20355
+ * has been processed.
20356
+ * @example
20357
+ * ```js
20358
+ * const w = fin.Window.getCurrentSync();
20359
+ * const el = document.getElementById("download-bubble-button");
20360
+ * const rect = el.getBoundingClientRect();
20361
+ * const anchor = {
20362
+ * bounds: rect,
20363
+ * location: "topRight"
20364
+ * };
20365
+ * w.showDownloadBubble(anchor);
20366
+ * ```
20367
+ */
20368
+ showDownloadBubble(anchor?: OpenFin_2.Anchor): Promise<void>;
20369
+ /**
20370
+ * Updates the anchor used for positioning the download bubble. This allows
20371
+ * moving the bubble reactively—for example, in response to window resizes,
20372
+ * layout changes, or DOM element repositioning.
20373
+ *
20374
+ * @param {OpenFin.Anchor} options
20375
+ * New anchor configuration describing the updated position and anchor
20376
+ * location for the download bubble.
20377
+ *
20378
+ * @returns {Promise<void>}
20379
+ * A promise that resolves once the anchor update has been applied.
20380
+ * @example
20381
+ * ```js
20382
+ * var w = fin.Window.getCurrentSync();
20383
+ * w.on('download-button-visibility-changed', (evt) => {
20384
+ * if (evt.visible) {
20385
+ * const el = document.getElementById("download-bubble-button");
20386
+ * //We show our button and get it's bounding rect
20387
+ * el.classList.remove("hidden");
20388
+ * const rect = el.getBoundingClientRect();
20389
+ * const anchor = {
20390
+ * bounds: rect,
20391
+ * location: "topRight"
20392
+ * }
20393
+ * w.updateDownloadBubbleAnchor(anchor);
20394
+ * } else {
20395
+ * //We hide our button
20396
+ * document.getElementById("download-bubble-button")?.classList.add("hidden");
20397
+ * }
20398
+ });
20399
+ */
20400
+ updateDownloadBubbleAnchor(anchor: OpenFin_2.Anchor): Promise<void>;
19780
20401
  }
19781
20402
 
19782
20403
  /**
@@ -19931,6 +20552,8 @@ declare namespace WindowEvents {
19931
20552
  BoundsChangingEvent,
19932
20553
  DisabledMovementBoundsChangedEvent,
19933
20554
  DisabledMovementBoundsChangingEvent,
20555
+ SnappedEvent,
20556
+ SnapZoneChangedEvent,
19934
20557
  UserBoundsChangeEvent,
19935
20558
  BeginUserBoundsChangingEvent,
19936
20559
  EndUserBoundsChangingEvent,
@@ -19970,6 +20593,8 @@ declare namespace WindowEvents {
19970
20593
  NonPropagatedWindowEvent,
19971
20594
  ShowAllDownloadsEvent,
19972
20595
  DownloadShelfVisibilityChangedEvent,
20596
+ DownloadButtonVisibilityChangedEvent,
20597
+ DownloadButtonIconUpdatedEvent,
19973
20598
  WindowSourcedEvent,
19974
20599
  WillPropagateWindowEvent,
19975
20600
  Event_6 as Event,
@@ -20173,7 +20798,7 @@ declare type WindowShowRequestedEvent = ShowRequestedEvent;
20173
20798
  * A union of all events that emit natively on the `Window` topic, i.e. excluding those that propagate
20174
20799
  * from {@link OpenFin.ViewEvents}.
20175
20800
  */
20176
- declare type WindowSourcedEvent = WebContentsEvents.Event<'window'> | WindowViewEvent | AuthRequestedEvent | BeginUserBoundsChangingEvent | BoundsChangedEvent | BoundsChangingEvent | ContextChangedEvent | CloseRequestedEvent | ClosedEvent_2 | ClosingEvent | DisabledMovementBoundsChangedEvent | DisabledMovementBoundsChangingEvent | EmbeddedEvent | EndUserBoundsChangingEvent | ExternalProcessExitedEvent | ExternalProcessStartedEvent | HiddenEvent_2 | HotkeyEvent_2 | InitializedEvent_2 | LayoutInitializedEvent | LayoutReadyEvent | LayoutCreatedEvent | LayoutDestroyedEvent | LayoutSnapshotAppliedEvent | MaximizedEvent | MinimizedEvent | OptionsChangedEvent | PerformanceReportEvent | PreloadScriptsStateChangedEvent | PreloadScriptsStateChangingEvent | ReloadedEvent | RestoredEvent | ShowRequestedEvent | ShownEvent_2 | UserMovementDisabledEvent | UserMovementEnabledEvent | WillMoveEvent | WillResizeEvent | ShowAllDownloadsEvent | DownloadShelfVisibilityChangedEvent;
20801
+ declare type WindowSourcedEvent = WebContentsEvents.Event<'window'> | WindowViewEvent | AuthRequestedEvent | BeginUserBoundsChangingEvent | BoundsChangedEvent | BoundsChangingEvent | ContextChangedEvent | CloseRequestedEvent | ClosedEvent_2 | ClosingEvent | DisabledMovementBoundsChangedEvent | DisabledMovementBoundsChangingEvent | EmbeddedEvent | EndUserBoundsChangingEvent | ExternalProcessExitedEvent | ExternalProcessStartedEvent | HiddenEvent_2 | HotkeyEvent_2 | InitializedEvent_2 | LayoutInitializedEvent | LayoutReadyEvent | LayoutCreatedEvent | LayoutDestroyedEvent | LayoutSnapshotAppliedEvent | MaximizedEvent | MinimizedEvent | OptionsChangedEvent | PerformanceReportEvent | PreloadScriptsStateChangedEvent | PreloadScriptsStateChangingEvent | ReloadedEvent | RestoredEvent | ShowRequestedEvent | ShownEvent_2 | UserMovementDisabledEvent | UserMovementEnabledEvent | WillMoveEvent | WillResizeEvent | ShowAllDownloadsEvent | DownloadShelfVisibilityChangedEvent | DownloadButtonVisibilityChangedEvent | DownloadButtonIconUpdatedEvent | SnappedEvent | SnapZoneChangedEvent;
20177
20802
 
20178
20803
  /**
20179
20804
  * Generated when a child window starts loading.