@foxglove/extension 2.43.0 → 2.45.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foxglove/extension",
3
- "version": "2.43.0",
3
+ "version": "2.45.0",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Foxglove Technologies",
@@ -15,7 +15,7 @@
15
15
  "prepack": "tsc -b tsconfig.json"
16
16
  },
17
17
  "devDependencies": {
18
- "@foxglove/tsconfig": "2.0.0",
19
- "typescript": "5.9.2"
18
+ "@foxglove/tsconfig": "3.1.0",
19
+ "typescript": "5.9.3"
20
20
  }
21
- }
21
+ }
@@ -291,7 +291,7 @@ export namespace Experimental {
291
291
  /** Queue of messages to be handled since last frame. Will be reassigned to new empty array each frame. */
292
292
  queue?: MessageEvent<T>[] | undefined;
293
293
  /** Optional callback to be called on `queue` to filter. Returns new queue. */
294
- filterQueue?: (queue: MessageEvent<T>[]) => MessageEvent<T>[];
294
+ filterQueue?: (queue: ReadonlyArray<MessageEvent<T>>) => ReadonlyArray<MessageEvent<T>>;
295
295
  };
296
296
 
297
297
  export type AnyPanelOverlaySubscription = Immutable<
package/src/stable.ts CHANGED
@@ -1516,6 +1516,26 @@ export type SettingsTreeNodeActionDivider = { type: "divider" };
1516
1516
  */
1517
1517
  export type SettingsTreeNodeAction = SettingsTreeNodeActionItem | SettingsTreeNodeActionDivider;
1518
1518
 
1519
+ /**
1520
+ * Drag-and-drop metadata for a settings tree node. Allows the node to be
1521
+ * dragged onto panels that accept topics or message paths.
1522
+ *
1523
+ * @category Custom panels
1524
+ */
1525
+ export type SettingsTreeNodeDrag =
1526
+ | {
1527
+ type: "topic";
1528
+ /** Topic name without quotes, e.g. `/my_topic`. */
1529
+ topicName: string;
1530
+ }
1531
+ | {
1532
+ type: "message-path";
1533
+ /** Full message path, e.g. `/my_topic.field` or `"/topic with spaces".field`. */
1534
+ value: string;
1535
+ /** True if the path points to a primitive value. Required by panels like Plot. */
1536
+ isLeaf?: boolean;
1537
+ };
1538
+
1519
1539
  /**
1520
1540
  * A node represents a single item or group of items in the settings tree.
1521
1541
  *
@@ -1558,6 +1578,13 @@ export type SettingsTreeNode = {
1558
1578
  */
1559
1579
  icon?: SettingsIcon;
1560
1580
 
1581
+ /**
1582
+ * Optional color for this node. When an icon is specified, the icon will be
1583
+ * rendered in this color. Otherwise, a small color swatch is displayed before
1584
+ * the label. Expects a valid CSS color string (e.g., "#ff0000", "rgb(255, 0, 0)", "red").
1585
+ */
1586
+ color?: string;
1587
+
1561
1588
  /**
1562
1589
  * An optional label shown at the top of this node.
1563
1590
  */
@@ -1595,6 +1622,11 @@ export type SettingsTreeNode = {
1595
1622
  * Filter Children by visibility status
1596
1623
  */
1597
1624
  enableVisibilityFilter?: boolean;
1625
+
1626
+ /**
1627
+ * Drag-and-drop configuration for this node.
1628
+ */
1629
+ drag?: SettingsTreeNodeDrag;
1598
1630
  };
1599
1631
 
1600
1632
  /**