@openfin/fdc3-api 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.
@@ -91,6 +91,34 @@ declare type AnalyticsProtocolMap = {
91
91
  [k in AnalyticsOnlyCalls]: VoidCall;
92
92
  };
93
93
 
94
+ /**
95
+ * Represents an anchor configuration consisting of a bounding rectangle
96
+ * and an anchor point describing which part of that rectangle should be
97
+ * used as the reference for positioning the download bubble.
98
+ * @interface
99
+ */
100
+ declare type Anchor = {
101
+ /**
102
+ * The DOM or screen-space rectangle that defines the anchor area.
103
+ */
104
+ bounds: Rectangle;
105
+ /**
106
+ * The location within the rectangle that should act as the anchor
107
+ * (e.g., `topRight`, `bottomLeft`, `center`, etc.).
108
+ * For example, `topRight` means the rectangle's top-right corner is used
109
+ * as the anchoring reference point.
110
+ */
111
+ location: AnchorLocation;
112
+ };
113
+
114
+ /**
115
+ * Defines the point within the rectangle that should be used as the anchor
116
+ * when positioning UI elements relative to another surface.
117
+ *
118
+ * @interface
119
+ */
120
+ declare type AnchorLocation = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'rightTop' | 'leftBottom' | 'rightBottom' | 'topCenter' | 'bottomCenter' | 'leftCenter' | 'rightCenter' | 'none' | 'float';
121
+
94
122
  declare type AnchorType = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
95
123
 
96
124
  declare type AnyStrategy = ChannelStrategy<any>;
@@ -1389,6 +1417,56 @@ declare type ApplicationWindowInfo = {
1389
1417
  uuid: string;
1390
1418
  };
1391
1419
 
1420
+ /**
1421
+ * `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.
1422
+ *
1423
+ * Please note, `enableAppLogging` must be specified in the application manifest's `platform` or `startup_app` key for this feature to be activated.
1424
+ *
1425
+ * If not specified, and `enableAppLogging` is true for the application, the default level will be 'silent'.
1426
+ *
1427
+ * 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
1428
+ * controlling a url's appLogLevel, its options will be ignored.
1429
+ *
1430
+ * @default 'debug'
1431
+ *
1432
+ * @example Controlling App Logs With DefaultViewOptions + Domain Settings
1433
+ *
1434
+ * In this example manifest, we use `defaultViewOptions to set the default verbosity to 'warn'.
1435
+ *
1436
+ * We also use domain settings to suppress logs entirely for an example URL, and to lower verbosity to 'debug' for another.
1437
+ *
1438
+ * ```ts
1439
+ * {
1440
+ * <rest of settings>
1441
+ * "platform": {
1442
+ * <rest of settings>
1443
+ * "enableAppLogging": "true",
1444
+ * "defaultViewOptions": {
1445
+ * "appLogLevel": "warn"
1446
+ * },
1447
+ * "domainSettings": {
1448
+ * "default": { <rest of settings> }
1449
+ * "rules": [
1450
+ * <rest of rules>
1451
+ * {
1452
+ * "match": ["*://*?app-logging-level=silent"],
1453
+ * "options": {
1454
+ * "appLogLevel": "silent"
1455
+ * }
1456
+ * },
1457
+ * {
1458
+ * "match": ["*://*?app-logging-level=debug"],
1459
+ * "options": {
1460
+ * "appLogLevel": "debug"
1461
+ * }
1462
+ * },
1463
+ * ]
1464
+ * }
1465
+ * }
1466
+ * }
1467
+ */
1468
+ declare type AppLogLevel = 'silent' | 'debug' | 'info' | 'warn' | 'error';
1469
+
1392
1470
  /**
1393
1471
  * @interface
1394
1472
  */
@@ -3864,6 +3942,10 @@ declare type ConstWindowOptions = {
3864
3942
  * 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.
3865
3943
  */
3866
3944
  roundedCorners: boolean;
3945
+ /**
3946
+ * Configuration for download bubble UI.
3947
+ */
3948
+ downloadBubble?: DownloadBubbleOptions;
3867
3949
  };
3868
3950
 
3869
3951
  /**
@@ -4616,6 +4698,50 @@ declare type DomainSettingsRule = {
4616
4698
  matchOptions?: RuleMatchOptions;
4617
4699
  };
4618
4700
 
4701
+ /**
4702
+ * Configuration options for enabling and positioning the download bubble UI.
4703
+ * @interface
4704
+ */
4705
+ declare type DownloadBubbleOptions = {
4706
+ /**
4707
+ * Whether the download bubble feature is enabled.
4708
+ */
4709
+ enabled: boolean;
4710
+ /**
4711
+ * Anchor configuration describing where the download bubble should attach.
4712
+ */
4713
+ anchor: Anchor;
4714
+ };
4715
+
4716
+ /**
4717
+ * Generated when the download button icon needs to be updated. Only raised if the download bubble feature is enabled.
4718
+ *
4719
+ * @interface
4720
+ */
4721
+ declare type DownloadButtonIconUpdatedEvent = BaseEvent_5 & {
4722
+ type: 'download-button-icon-updated';
4723
+ disabled: boolean;
4724
+ active: boolean;
4725
+ touchMode: boolean;
4726
+ progressIndicatorState: 'idle' | 'scanning' | 'downloading' | 'dormant';
4727
+ progressDownloadCount: number;
4728
+ progressPercentage: number;
4729
+ buttonTooltip: string;
4730
+ };
4731
+
4732
+ /**
4733
+ * Generated when the visibility of the window's download button changes. Only raised if the download bubble feature is enabled.
4734
+ *
4735
+ * @interface
4736
+ */
4737
+ declare type DownloadButtonVisibilityChangedEvent = BaseEvent_5 & {
4738
+ type: 'download-button-visibility-changed';
4739
+ /**
4740
+ * True if the download button should be displayed, false if it should be hidden.
4741
+ */
4742
+ visible: boolean;
4743
+ };
4744
+
4619
4745
  /**
4620
4746
  * Metadata returned from a preload script download request.
4621
4747
  *
@@ -4675,6 +4801,7 @@ declare type DownloadRule = {
4675
4801
  *
4676
4802
  * @remarks This will control the styling for the download shelf regardless of whether its display was
4677
4803
  * triggered by the window itself, or a view targeting the window.
4804
+ * @deprecated Use the DownloadBubble API instead.
4678
4805
  */
4679
4806
  declare type DownloadShelfOptions = {
4680
4807
  /**
@@ -4710,6 +4837,7 @@ declare type DownloadShelfOptions = {
4710
4837
  * Generated when the visibility of the window's download shelf changes.
4711
4838
  *
4712
4839
  * @interface
4840
+ * @deprecated use DownloadBubble API instead
4713
4841
  */
4714
4842
  declare type DownloadShelfVisibilityChangedEvent = BaseEvent_5 & {
4715
4843
  type: 'download-shelf-visibility-changed';
@@ -4976,7 +5104,7 @@ declare type Event_10 = ApplicationEvents.Event | ApiReadyEvent | SnapshotApplie
4976
5104
  * under the {@link OpenFin.SystemEvents} namespace (payloads inherited from propagated events are defined in the namespace
4977
5105
  * from which they propagate).
4978
5106
  */
4979
- 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;
5107
+ 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;
4980
5108
 
4981
5109
  /**
4982
5110
  * [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.
@@ -8932,6 +9060,42 @@ declare type LayoutOptions = {
8932
9060
  */
8933
9061
  preventDragIn?: boolean;
8934
9062
  /* Excluded from this release type: disableTabOverflowDropdown */
9063
+ /**
9064
+ * When set to 'scroll', enables horizontal scrolling of tabs when they overflow the stack width.
9065
+ * When set to 'dropdown', the default behavior occurs, in which excess tabs appear in a menu.
9066
+ *
9067
+ * Setting this to `scroll` might break styles written for the default dropdown behavior, as it significantly changes the DOM structure and CSS of tabs.
9068
+ *
9069
+ * The DOM structure is modified in this way:
9070
+ * - `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.
9071
+ * - the `.newTabButton` (if enabled) is a direct child of `.lm_header`
9072
+ *
9073
+ * **The following CSS variables are available to customize tab appearance:**
9074
+ *
9075
+ * - `--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`
9076
+ * - `--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).
9077
+ * - `--layout-tab-overflow-fade-size`: The width of the scroll shadows when tabs are overflowing. Default: `20px`
9078
+ * - `--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.
9079
+ *
9080
+ * **CSS Variables for advanced customization (dynamically updated and set on `lm_tabs`):**
9081
+ *
9082
+ * - `--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.
9083
+ * - `--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.
9084
+ * - `--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.
9085
+ *
9086
+ * @example
9087
+ * ```css
9088
+ * .lm_tabs {
9089
+ * --layout-tab-width: 200px;
9090
+ * --layout-tab-min-width: 100px;
9091
+ * --layout-tab-overflow-fade-size: 20px;
9092
+ * --layout-tab-overflow-shadow-color: rgba(0, 0, 0, 0.3);
9093
+ * }
9094
+ * ```
9095
+ *
9096
+ * @defaultValue 'dropdown'
9097
+ */
9098
+ tabOverflowBehavior?: 'dropdown' | 'scroll';
8935
9099
  };
8936
9100
  /**
8937
9101
  * Content of the layout. There can only be one top-level LayoutItem in the content array.
@@ -9039,6 +9203,12 @@ declare type LogInfo = {
9039
9203
  */
9040
9204
  declare type LogLevel = 'verbose' | 'info' | 'warning' | 'error' | 'fatal';
9041
9205
 
9206
+ declare type LogPath = 'debug.log' | 'app.log';
9207
+
9208
+ declare type LogTarget = {
9209
+ type: LogPath;
9210
+ };
9211
+
9042
9212
  /**
9043
9213
  * Log types
9044
9214
  *
@@ -9184,6 +9354,7 @@ declare type Manifest = {
9184
9354
  policies?: {
9185
9355
  CloudAPAuthEnabled?: 'enabled' | 'disabled';
9186
9356
  };
9357
+ themePalette?: Array<ThemePalette>;
9187
9358
  };
9188
9359
  services?: string[];
9189
9360
  shortcut?: {
@@ -9557,6 +9728,10 @@ declare type MutableViewOptions = {
9557
9728
  * {@inheritDoc ChromiumPolicies}
9558
9729
  */
9559
9730
  chromiumPolicies: ChromiumPolicies;
9731
+ /**
9732
+ * Specifies the AppLogLevel for the specified View. See {@link AppLogLevel} for more information.
9733
+ */
9734
+ appLogLevel?: AppLogLevel;
9560
9735
  };
9561
9736
 
9562
9737
  /**
@@ -9831,6 +10006,10 @@ declare type MutableWindowOptions = {
9831
10006
  * {@inheritDoc ChromiumPolicies}
9832
10007
  */
9833
10008
  chromiumPolicies: ChromiumPolicies;
10009
+ /**
10010
+ * Specifies the AppLogLevel for the Window. See {@link AppLogLevel} for more information.
10011
+ */
10012
+ appLogLevel?: AppLogLevel;
9834
10013
  };
9835
10014
 
9836
10015
  declare type NackHandler = (payloadOrMessage: RuntimeErrorPayload | string) => void;
@@ -9843,6 +10022,78 @@ declare type NamedEvent = IdentityEvent & {
9843
10022
  name: string;
9844
10023
  };
9845
10024
 
10025
+ /**
10026
+ * @interface
10027
+ *
10028
+ * Represents the native theme of the operating system.
10029
+ * This is used to determine how the application should render its UI based on the system's theme settings.
10030
+ * Defer to CSS properties whenever possible.
10031
+ *
10032
+ * Re-exported from Electron's `NativeTheme` type.
10033
+ */
10034
+ declare type NativeTheme = {
10035
+ /**
10036
+ * A `boolean` indicating whether Chromium is in forced colors mode, controlled by
10037
+ * system accessibility settings. Currently, Windows high contrast is the only
10038
+ * system setting that triggers forced colors mode.
10039
+ *
10040
+ * @platform win32
10041
+ */
10042
+ inForcedColorsMode: boolean;
10043
+ /**
10044
+ * A `boolean` that indicates the whether the user has chosen via system
10045
+ * accessibility settings to reduce transparency at the OS level.
10046
+ *
10047
+ */
10048
+ prefersReducedTransparency: boolean;
10049
+ /**
10050
+ * A `boolean` for if the OS / Chromium currently has a dark mode enabled or is
10051
+ * being instructed to show a dark-style UI. If you want to modify this value you
10052
+ * should use `themeSource` below.
10053
+ *
10054
+ */
10055
+ shouldUseDarkColors: boolean;
10056
+ /**
10057
+ * A `boolean` property indicating whether or not the system theme has been set to
10058
+ * dark or light.
10059
+ *
10060
+ * On Windows this property distinguishes between system and app light/dark theme,
10061
+ * returning `true` if the system theme is set to dark theme and `false` otherwise.
10062
+ * On macOS the return value will be the same as `nativeTheme.shouldUseDarkColors`.
10063
+ *
10064
+ * @platform darwin,win32
10065
+ */
10066
+ shouldUseDarkColorsForSystemIntegratedUI: boolean;
10067
+ /**
10068
+ * A `boolean` for if the OS / Chromium currently has high-contrast mode enabled or
10069
+ * is being instructed to show a high-contrast UI.
10070
+ *
10071
+ * @platform darwin,win32
10072
+ */
10073
+ shouldUseHighContrastColors: boolean;
10074
+ /**
10075
+ * A `boolean` for if the OS / Chromium currently has an inverted color scheme or
10076
+ * is being instructed to use an inverted color scheme.
10077
+ *
10078
+ * @platform darwin,win32
10079
+ */
10080
+ shouldUseInvertedColorScheme: boolean;
10081
+ /**
10082
+ * A `string` property that can be `system`, `light` or `dark`. It is used (via `setTheme) to
10083
+ * override and supersede the value that Chromium has chosen to use internally.
10084
+ */
10085
+ themeSource: 'system' | 'light' | 'dark';
10086
+ };
10087
+
10088
+ /**
10089
+ * Generated when the operating system's theme preferences change.
10090
+ * Occurs when dark mode, high contrast mode, or inverted color scheme settings are modified.
10091
+ */
10092
+ declare type NativeThemeUpdatedEvent = BaseEvent_9 & {
10093
+ type: 'native-theme-updated';
10094
+ theme: OpenFin.NativeTheme;
10095
+ };
10096
+
9846
10097
  /**
9847
10098
  * @interface
9848
10099
  */
@@ -10128,6 +10379,9 @@ declare namespace OpenFin {
10128
10379
  CustomProtocolOptions,
10129
10380
  InteropBrokerOptions,
10130
10381
  ContextGroupInfo,
10382
+ AnchorLocation,
10383
+ Anchor,
10384
+ DownloadBubbleOptions,
10131
10385
  DisplayMetadata,
10132
10386
  LegacyWinOptionsInAppOptions,
10133
10387
  Snapshot,
@@ -10154,6 +10408,9 @@ declare namespace OpenFin {
10154
10408
  InheritableOptions,
10155
10409
  PolicyOptions,
10156
10410
  ChromiumPolicies,
10411
+ AppLogLevel,
10412
+ LogPath,
10413
+ LogTarget,
10157
10414
  MutableWindowOptions,
10158
10415
  WorkspacePlatformOptions,
10159
10416
  WebRequestHeader,
@@ -10231,9 +10488,14 @@ declare namespace OpenFin {
10231
10488
  LogUploaderUIOptions,
10232
10489
  LogTypes,
10233
10490
  LogUploadOptions,
10491
+ ThemeColorsMap,
10492
+ ThemeColorId,
10493
+ ThemePalette,
10234
10494
  Manifest,
10235
10495
  LayoutContent,
10236
10496
  LayoutItemConfig,
10497
+ ThemePreferences,
10498
+ NativeTheme,
10237
10499
  LayoutRow,
10238
10500
  LayoutColumn,
10239
10501
  LayoutComponent,
@@ -10453,6 +10715,7 @@ declare namespace OpenFin {
10453
10715
  ChannelProviderDisconnectionListener,
10454
10716
  RoutingInfo,
10455
10717
  DownloadShelfOptions,
10718
+ SnapZoneOptions,
10456
10719
  ViewShowAtOptions,
10457
10720
  WebNotificationProperties,
10458
10721
  WebNotificationInfo,
@@ -10727,6 +10990,11 @@ declare type PerDomainSettings = {
10727
10990
  */
10728
10991
  drag?: 'allow' | 'block';
10729
10992
  };
10993
+ /**
10994
+ * Allows the app log level of any matching content to be overriden.
10995
+ * See also {@link AppLogLevel} for more information.
10996
+ */
10997
+ appLogLevel?: AppLogLevel;
10730
10998
  };
10731
10999
 
10732
11000
  /**
@@ -12364,7 +12632,7 @@ declare type PositioningOptions = {
12364
12632
  /**
12365
12633
  * Context menu item with an implementation provided by OpenFin.
12366
12634
  */
12367
- declare type PrebuiltContextMenuItem = 'separator' | 'undo' | 'redo' | 'cut' | 'copy' | 'copyImage' | 'paste' | 'selectAll' | 'spellCheck' | 'inspect' | 'reload' | 'navigateForward' | 'navigateBack' | 'print';
12635
+ declare type PrebuiltContextMenuItem = 'separator' | 'undo' | 'redo' | 'cut' | 'copy' | 'copyImage' | 'paste' | 'selectAll' | 'spellCheck' | 'inspect' | 'reload' | 'navigateForward' | 'navigateBack' | 'print' | 'snapToTop' | 'snapToBottom';
12368
12636
 
12369
12637
  /**
12370
12638
  * A script that is run before page load.
@@ -13062,6 +13330,12 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13062
13330
  'create-window': VoidCall;
13063
13331
  'get-current-window': VoidCall;
13064
13332
  'get-current-window-sync': VoidCall;
13333
+ 'show-download-bubble': IdentityCall<{
13334
+ anchor?: OpenFin.Anchor;
13335
+ }, void>;
13336
+ 'update-download-bubble-anchor': IdentityCall<{
13337
+ anchor: OpenFin.Anchor;
13338
+ }, void>;
13065
13339
  'get-external-application-info': ApiCall<OpenFin.ApplicationIdentity, OpenFin.ExternalApplicationInfo>;
13066
13340
  'external-application-wrap': VoidCall;
13067
13341
  'external-application-wrap-sync': VoidCall;
@@ -13158,6 +13432,10 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13158
13432
  request: any;
13159
13433
  response: any;
13160
13434
  };
13435
+ 'set-theme-preferences': ApiCall<{
13436
+ preferences: OpenFin.ThemePreferences;
13437
+ }, OpenFin.NativeTheme>;
13438
+ 'get-theme-preferences': GetterCall<OpenFin.NativeTheme>;
13161
13439
  'get-version': GetterCall<string>;
13162
13440
  'clear-cache': ApiCall<OpenFin.ClearCacheOption, void>;
13163
13441
  'delete-cache-request': VoidCall;
@@ -13245,6 +13523,9 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13245
13523
  'write-to-log': ApiCall<{
13246
13524
  level: string;
13247
13525
  message: string;
13526
+ target?: {
13527
+ type?: 'app.log' | 'debug.log';
13528
+ };
13248
13529
  }, void>;
13249
13530
  'open-url-with-browser': ApiCall<{
13250
13531
  url: string;
@@ -13408,6 +13689,15 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13408
13689
  request: void;
13409
13690
  response: OpenFin.ExtensionInfo[];
13410
13691
  };
13692
+ 'set-theme-palette': ApiCall<{
13693
+ themePalette: Array<OpenFin.ThemePalette>;
13694
+ }, void> & {
13695
+ themePalette: Array<OpenFin.ThemePalette>;
13696
+ };
13697
+ 'get-theme-palette': ApiCall<void, Array<OpenFin.ThemePalette>> & {
13698
+ request: void;
13699
+ response: Array<OpenFin.ThemePalette>;
13700
+ };
13411
13701
  'fdc3-add-context-listener': VoidCall;
13412
13702
  'fdc3-add-intent-listener': VoidCall;
13413
13703
  'fdc3-raise-intent': VoidCall;
@@ -14483,6 +14773,15 @@ declare type Size = TransitionBase & {
14483
14773
  height: number;
14484
14774
  };
14485
14775
 
14776
+ /**
14777
+ * Generated when a window is snapped to a screen edge.
14778
+ * @interface
14779
+ */
14780
+ declare type SnappedEvent = BoundsEvent & {
14781
+ type: 'snapped';
14782
+ snapLocation: 'top' | 'bottom';
14783
+ };
14784
+
14486
14785
  /**
14487
14786
  * @interface
14488
14787
  */
@@ -14627,6 +14926,52 @@ declare class SnapshotSourceModule extends Base {
14627
14926
  wrap(identity: OpenFin.ApplicationIdentity): Promise<SnapshotSource>;
14628
14927
  }
14629
14928
 
14929
+ /**
14930
+ * Generated when a window enters or exits a snap zone during drag.
14931
+ * This event fires whenever the snap zone state changes (entry or exit).
14932
+ * @interface
14933
+ */
14934
+ declare type SnapZoneChangedEvent = BaseEvent_5 & {
14935
+ type: 'snap-zone-changed';
14936
+ /**
14937
+ * Array of locations that the window is currently in snap zones for.
14938
+ * Empty array indicates the window is not in any snap zone.
14939
+ * Can contain multiple locations if the window is in multiple zones simultaneously.
14940
+ */
14941
+ locations: Array<'top' | 'bottom'>;
14942
+ };
14943
+
14944
+ /**
14945
+ * @interface
14946
+ *
14947
+ * Configures snap zone behavior for a window. When enabled, the window will automatically snap to screen edges
14948
+ * when dragged near them during user drag interactions.
14949
+ */
14950
+ declare type SnapZoneOptions = {
14951
+ /**
14952
+ * Whether snap zone functionality is enabled for this window.
14953
+ *
14954
+ * @default false
14955
+ */
14956
+ enabled: boolean;
14957
+ /**
14958
+ * The distance in pixels from the screen edge that triggers the snap zone.
14959
+ * When the window is dragged within this threshold of the top or bottom edge,
14960
+ * it will be considered in a snap zone.
14961
+ *
14962
+ * @default 50
14963
+ */
14964
+ threshold?: number;
14965
+ /**
14966
+ * Ordered array of edge preferences when the window is in multiple snap zones simultaneously.
14967
+ * The first edge in the array that the window is in will be used for snapping.
14968
+ * If not provided, defaults to ['top', 'bottom'] (preferring top over bottom).
14969
+ *
14970
+ * @default ['top', 'bottom']
14971
+ */
14972
+ locationPreference?: Array<'top' | 'bottom'>;
14973
+ };
14974
+
14630
14975
  /**
14631
14976
  * Generated when an application has started.
14632
14977
  * @interface
@@ -15404,13 +15749,14 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
15404
15749
  * Writes the passed message into both the log file and the console.
15405
15750
  * @param level The log level for the entry. Can be either "info", "warning" or "error"
15406
15751
  * @param message The log message text
15752
+ * @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.
15407
15753
  *
15408
15754
  * @example
15409
15755
  * ```js
15410
- * fin.System.log("info", "An example log message").then(() => console.log('Log info message')).catch(err => console.log(err));
15756
+ * fin.System.log("info", "An example log message", { type: 'debug.log' }).then(() => console.log('Log info message')).catch(err => console.log(err));
15411
15757
  * ```
15412
15758
  */
15413
- log(level: string, message: string): Promise<void>;
15759
+ log(level: string, message: string, target?: OpenFin.LogTarget): Promise<void>;
15414
15760
  /**
15415
15761
  * Opens the passed URL in the default web browser.
15416
15762
  *
@@ -16149,11 +16495,123 @@ declare class System extends EmitterBase<OpenFin.SystemEvent> {
16149
16495
  * Not indended for general use, will be used by the `@openfin/workspace-platform` package.
16150
16496
  */
16151
16497
  serveAsset(options: OpenFin.ServeAssetOptions): Promise<OpenFin.ServedAssetInfo>;
16498
+ /**
16499
+ * Get's the native theme preferences for the current runtime.
16500
+ * Prefer css media-queries wherever possible, but this can be useful to see if the system setting has been overridden.
16501
+ * See @link OpenFin.NativeTheme for more information.
16502
+ * @example Theme selector menu
16503
+ * ```ts
16504
+ async function handleThemeMenu(e: React.MouseEvent<HTMLDivElement>) {
16505
+ const currentTheme = await fin.System.getThemePreferences();
16506
+ const result = await (fin.me as OpenFin.Window).showPopupMenu({
16507
+ x: e.clientX,
16508
+ y: e.clientY,
16509
+ template: [
16510
+ {
16511
+ label: 'Light',
16512
+ type: 'checkbox',
16513
+ checked: currentTheme.themeSource === 'light',
16514
+ data: { themeSource: 'light' } as const
16515
+ },
16516
+ {
16517
+ label: 'Dark',
16518
+ type: 'checkbox',
16519
+ checked: currentTheme.themeSource === 'dark',
16520
+ data: { themeSource: 'dark' } as const
16521
+ },
16522
+ {
16523
+ label: 'System',
16524
+ type: 'checkbox',
16525
+ checked: currentTheme.themeSource === 'system',
16526
+ data: { themeSource: 'system' } as const
16527
+ }
16528
+ ]
16529
+ });
16530
+ if (result.result === 'clicked') {
16531
+ await fin.System.setThemePreferences(result.data);
16532
+ }
16533
+ }
16534
+ ```
16535
+ */
16536
+ getThemePreferences(): Promise<OpenFin.NativeTheme>;
16537
+ /**
16538
+ * Sets the native theme preferences for the current runtime.
16539
+ * Can be used to force runtime-wide light or dark mode.
16540
+ * @important Due to this impacting all applications on a runtime, this method is only usable if a security realm has been set.
16541
+ * @example Theme selector menu
16542
+ * ```ts
16543
+ async function handleThemeMenu(e: React.MouseEvent<HTMLDivElement>) {
16544
+ const currentTheme = await fin.System.getThemePreferences();
16545
+ const result = await (fin.me as OpenFin.Window).showPopupMenu({
16546
+ x: e.clientX,
16547
+ y: e.clientY,
16548
+ template: [
16549
+ {
16550
+ label: 'Light',
16551
+ type: 'checkbox',
16552
+ checked: currentTheme.themeSource === 'light',
16553
+ data: { themeSource: 'light' } as const
16554
+ },
16555
+ {
16556
+ label: 'Dark',
16557
+ type: 'checkbox',
16558
+ checked: currentTheme.themeSource === 'dark',
16559
+ data: { themeSource: 'dark' } as const
16560
+ },
16561
+ {
16562
+ label: 'System',
16563
+ type: 'checkbox',
16564
+ checked: currentTheme.themeSource === 'system',
16565
+ data: { themeSource: 'system' } as const
16566
+ }
16567
+ ]
16568
+ });
16569
+ if (result.result === 'clicked') {
16570
+ await fin.System.setThemePreferences(result.data);
16571
+ }
16572
+ }
16573
+ ```
16574
+ */
16575
+ setThemePreferences(preferences: OpenFin.ThemePreferences): Promise<OpenFin.ThemePreferences>;
16152
16576
  /**
16153
16577
  * Launches the Log Uploader. Full documentation can be found [here](https://resources.here.io/docs/core/develop/debug/log-uploader/).
16154
16578
  * @experimental
16155
16579
  */
16156
16580
  launchLogUploader(options: OpenFin.LogUploaderOptions): Promise<void>;
16581
+ /**
16582
+ * Overrides original Chromium theme color providers matching key (currently except high contrast ones). Only colors passed in the map will be overridden.
16583
+ * @param overrides - Array of ColorProviderOverrides objects
16584
+ * @example
16585
+ * ```ts
16586
+ * await fin.System.setThemePalette([
16587
+ * {
16588
+ * colorProviderKey: { colorMode: 'light' },
16589
+ * colorsMap: {
16590
+ * kColorLabelForeground: 4278190080,
16591
+ * kColorBubbleBackground: 4293980400
16592
+ * }
16593
+ * },
16594
+ * {
16595
+ * colorProviderKey: { colorMode: 'dark' },
16596
+ * colorsMap: {
16597
+ * kColorLabelForeground: 4293980400,
16598
+ * kColorBubbleBackground: 4293980400
16599
+ * }
16600
+ * }
16601
+ * ]);
16602
+ * ```
16603
+ */
16604
+ setThemePalette(themePalette: Array<OpenFin.ThemePalette>): Promise<void>;
16605
+ /**
16606
+ * Retrieves currently used color overrides
16607
+ * @returns Array of ColorProviderOverrides objects
16608
+ * @example
16609
+ * ```ts
16610
+ * const themePalette = await fin.System.getThemePalette();
16611
+ * console.log(themePalette);
16612
+ * ```
16613
+ */
16614
+ getThemePalette(): Promise<Array<OpenFin.ThemePalette>>;
16157
16615
  }
16158
16616
 
16159
16617
  /**
@@ -16192,6 +16650,8 @@ declare namespace SystemEvents {
16192
16650
  ExtensionsInstallFailedEvent,
16193
16651
  ExtensionInstallFailedEvent,
16194
16652
  ExtensionsInitializationFailedEvent,
16653
+ ThemePaletteChangedEvent,
16654
+ NativeThemeUpdatedEvent,
16195
16655
  Event_11 as Event,
16196
16656
  SystemEvent,
16197
16657
  EventType_8 as EventType,
@@ -16315,6 +16775,7 @@ declare class TabStack extends LayoutNode {
16315
16775
  * and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
16316
16776
  * If that happens and then getViews() is called, it will return the identities in a different order than
16317
16777
  * than the currently rendered tab order.
16778
+ * Note: This issue does not occur when using `tabOverflowBehavior: 'scroll'` in the layout configuration.
16318
16779
  *
16319
16780
  *
16320
16781
  * @throws If the {@link TabStack} has been destroyed.
@@ -16339,6 +16800,7 @@ declare class TabStack extends LayoutNode {
16339
16800
  *
16340
16801
  * @remarks Known Issue: If adding a view overflows the tab-container, the added view will be set as active
16341
16802
  * and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
16803
+ * Note: This issue does not occur when using `tabOverflowBehavior: 'scroll'` in the layout configuration.
16342
16804
  *
16343
16805
  * @param view The identity of an existing view to add, or options to create a view.
16344
16806
  * @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)
@@ -16460,6 +16922,109 @@ declare type TerminateExternalRequestType = {
16460
16922
  killTree: boolean;
16461
16923
  };
16462
16924
 
16925
+ /**
16926
+ * String literal type of all supported theme color IDs.
16927
+ * Useful wherever you need to refer to a color slot by name.
16928
+ * @interface
16929
+ */
16930
+ declare type ThemeColorId = keyof ThemeColorsMap;
16931
+
16932
+ /**
16933
+ * All supported color slots for the Download Bubble and related UI.
16934
+ * @interface
16935
+ */
16936
+ declare interface ThemeColorsMap {
16937
+ /**
16938
+ * Enterprise/Window/Background – bubble header and footer background.
16939
+ */
16940
+ kColorBubbleBackground?: number;
16941
+ /**
16942
+ * Windows only – Enterprise/Window/Border.
16943
+ */
16944
+ kColorBubbleBorder?: number;
16945
+ /**
16946
+ * Windows only – Enterprise/Window/Border (large shadow).
16947
+ */
16948
+ kColorBubbleBorderShadowLarge?: number;
16949
+ /**
16950
+ * Windows only – Enterprise/Window/Border (small shadow).
16951
+ */
16952
+ kColorBubbleBorderShadowSmall?: number;
16953
+ /**
16954
+ * Enterprise/Window/Background – downloaded item row background.
16955
+ */
16956
+ kColorDialogBackground?: number;
16957
+ /**
16958
+ * Enterprise/Search Result/Background/Hover – download item row hover.
16959
+ */
16960
+ kColorDownloadBubbleRowHover?: number;
16961
+ /**
16962
+ * Enterprise/Window/Icon – “Show all downloads” icon color.
16963
+ */
16964
+ kColorDownloadBubbleShowAllDownloadsIcon?: number;
16965
+ /**
16966
+ * Enterprise/Search Result/Background/Hover – full download history
16967
+ * button (full row) hover background.
16968
+ */
16969
+ kColorHoverButtonBackgroundHovered?: number;
16970
+ /**
16971
+ * Shared/Icon Button/Subtle/Icon/Default – SVG icon color
16972
+ * (except full download history button).
16973
+ */
16974
+ kColorIcon?: number;
16975
+ /**
16976
+ * Enterprise/Window/Text/Base – main label text color.
16977
+ * May be post-processed to increase readability on kColorDialogBackground
16978
+ * (can be disabled via transparent kColorLabelBackground).
16979
+ */
16980
+ kColorLabelForeground?: number;
16981
+ /**
16982
+ * Label background used for readability adjustment.
16983
+ * Set to transparent (0) to disable Chromium’s readability alignment logic.
16984
+ */
16985
+ kColorLabelBackground?: number;
16986
+ /**
16987
+ * Enterprise/Window/Text/Soft – secondary text color.
16988
+ * May be post-processed to increase readability on kColorDialogBackground
16989
+ * (can be disabled via transparent kColorLabelBackground).
16990
+ */
16991
+ kColorSecondaryForeground?: number;
16992
+ }
16993
+
16994
+ /**
16995
+ * Defines a set of color overrides for Chromium UI surfaces based on a theme
16996
+ * provider (e.g., light or dark mode).
16997
+ * @interface
16998
+ */
16999
+ declare type ThemePalette = {
17000
+ /**
17001
+ * Identifies the color provider mode that the palette applies to.
17002
+ */
17003
+ colorProviderKey: {
17004
+ /**
17005
+ * The UI color mode that this palette is intended to style.
17006
+ */
17007
+ colorMode: 'light' | 'dark';
17008
+ };
17009
+ /**
17010
+ * A mapping of known Chromium color IDs to ARGB values (0xAARRGGBB).
17011
+ */
17012
+ colorsMap: ThemeColorsMap;
17013
+ };
17014
+
17015
+ /**
17016
+ * An event that fires when the system theme palette is changed.
17017
+ */
17018
+ declare type ThemePaletteChangedEvent = BaseEvent_9 & {
17019
+ type: 'theme-palette-changed';
17020
+ themePalette: OpenFin.ThemePalette;
17021
+ };
17022
+
17023
+ /**
17024
+ * Settable options for the native theme of the operating system.
17025
+ */
17026
+ declare type ThemePreferences = Pick<NativeTheme, 'themeSource'>;
17027
+
16463
17028
  /**
16464
17029
  * @interface
16465
17030
  */
@@ -19753,6 +20318,62 @@ declare class _Window extends WebContents<OpenFin.WindowEvent> {
19753
20318
  * To print the views embedded in their page context, set `content` to `screenshot`.
19754
20319
  */
19755
20320
  print(options?: OpenFin.WindowPrintOptions): Promise<void>;
20321
+ /**
20322
+ * Displays the download bubble UI. If an anchor is provided, the bubble
20323
+ * will be positioned according to the specified rectangle and anchor point.
20324
+ *
20325
+ * @param {OpenFin.Anchor} options
20326
+ * Anchor configuration used to position the download bubble. This includes
20327
+ * the bounding rectangle and the anchor location within that rectangle.
20328
+ *
20329
+ * @returns {Promise<void>}
20330
+ * A promise that resolves once the request to show the download bubble
20331
+ * has been processed.
20332
+ * @example
20333
+ * ```js
20334
+ * const w = fin.Window.getCurrentSync();
20335
+ * const el = document.getElementById("download-bubble-button");
20336
+ * const rect = el.getBoundingClientRect();
20337
+ * const anchor = {
20338
+ * bounds: rect,
20339
+ * location: "topRight"
20340
+ * };
20341
+ * w.showDownloadBubble(anchor);
20342
+ * ```
20343
+ */
20344
+ showDownloadBubble(anchor?: OpenFin.Anchor): Promise<void>;
20345
+ /**
20346
+ * Updates the anchor used for positioning the download bubble. This allows
20347
+ * moving the bubble reactively—for example, in response to window resizes,
20348
+ * layout changes, or DOM element repositioning.
20349
+ *
20350
+ * @param {OpenFin.Anchor} options
20351
+ * New anchor configuration describing the updated position and anchor
20352
+ * location for the download bubble.
20353
+ *
20354
+ * @returns {Promise<void>}
20355
+ * A promise that resolves once the anchor update has been applied.
20356
+ * @example
20357
+ * ```js
20358
+ * var w = fin.Window.getCurrentSync();
20359
+ * w.on('download-button-visibility-changed', (evt) => {
20360
+ * if (evt.visible) {
20361
+ * const el = document.getElementById("download-bubble-button");
20362
+ * //We show our button and get it's bounding rect
20363
+ * el.classList.remove("hidden");
20364
+ * const rect = el.getBoundingClientRect();
20365
+ * const anchor = {
20366
+ * bounds: rect,
20367
+ * location: "topRight"
20368
+ * }
20369
+ * w.updateDownloadBubbleAnchor(anchor);
20370
+ * } else {
20371
+ * //We hide our button
20372
+ * document.getElementById("download-bubble-button")?.classList.add("hidden");
20373
+ * }
20374
+ });
20375
+ */
20376
+ updateDownloadBubbleAnchor(anchor: OpenFin.Anchor): Promise<void>;
19756
20377
  }
19757
20378
 
19758
20379
  /**
@@ -19907,6 +20528,8 @@ declare namespace WindowEvents {
19907
20528
  BoundsChangingEvent,
19908
20529
  DisabledMovementBoundsChangedEvent,
19909
20530
  DisabledMovementBoundsChangingEvent,
20531
+ SnappedEvent,
20532
+ SnapZoneChangedEvent,
19910
20533
  UserBoundsChangeEvent,
19911
20534
  BeginUserBoundsChangingEvent,
19912
20535
  EndUserBoundsChangingEvent,
@@ -19946,6 +20569,8 @@ declare namespace WindowEvents {
19946
20569
  NonPropagatedWindowEvent,
19947
20570
  ShowAllDownloadsEvent,
19948
20571
  DownloadShelfVisibilityChangedEvent,
20572
+ DownloadButtonVisibilityChangedEvent,
20573
+ DownloadButtonIconUpdatedEvent,
19949
20574
  WindowSourcedEvent,
19950
20575
  WillPropagateWindowEvent,
19951
20576
  Event_6 as Event,
@@ -20149,7 +20774,7 @@ declare type WindowShowRequestedEvent = ShowRequestedEvent;
20149
20774
  * A union of all events that emit natively on the `Window` topic, i.e. excluding those that propagate
20150
20775
  * from {@link OpenFin.ViewEvents}.
20151
20776
  */
20152
- 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;
20777
+ 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;
20153
20778
 
20154
20779
  /**
20155
20780
  * Generated when a child window starts loading.